- 论坛徽章:
- 0
|
建立OSDesign开发环境
这是暴久以前的东西了, 纪念贴. 曾经画了巨多时间.
这里采用了linux作为编译环境。但是家里必须装个windowsXP来看DVD和打游戏,所以用VMware跑个虚拟机就是个不错的选择了,况且很喜
欢sourceInsight。调试用bochs,如过阁下愿意采用相同的OSDev环境,可以按照这里所列举的配置搭建环境,所有的路径都设计好了,只
需双击对应的bat文件即可以开始调试或者运行编译好的OS。
需要准备的软件:
VMware for windows(如果只在linux下编译和调试OS,就不必了)
FC4 或者其他linux 发行版
Bochs2.11 (链接失效,很好找)
本网站提供的一个内核版本(
链接失效,很好找
)
Step 1:建立Windows下的开发目录
将下载的内核版本解压缩到一个目录,然后将bochs2.1.1安装好的目录也拷贝到同一目录,目录结构如下图所示。完全按照图示目录进行配置可以免去修改BAT文件,bochs配置脚本的麻烦,建议采用。如果阁下很熟悉这些东西,那就随意了。
Step 2:安装VMware
安装VMware,然后在VMware中装一个linux发行版。我用的是FC4,如果你版本不好用就用FC4。
建议选择FC4是因为这个版本可以默认装上当前kernel的头文件和源文件。可以省却不少麻烦。记着选择下列软件:
[color="#0000ff"]Kernel Source
[color="#0000ff"]gcc/make等开发工具
(FC4中只需选择内核开发即可)
[color="#0000ff"]nasm (这里早期的内核采用nasm,后来就只要gcc即可了,还是安装吧)
linux安装完成之后,最重要的就是安装Vmware-tools,就是vmware机器的驱动了,完成之后就可以使能文件夹共享了。如下图所示,注意其共享名称,照图示配置可以省掉配置的麻烦,因为有一个脚本叫
up (update source code from host PC to VMware)是按照这个路径写的。
Step 3:拷贝文件到linux,编译
现在,登录VMware的linux,开启一个shell。
首先在root下建立一个目录叫os(root?其他也可以阿,懒得弄用户了)。
然后键入如下命令序列:
cp /mnt/hgfs/osdev/up .
./up
make
dep
make
这就完成了,生成的image文件会自动拷贝到 /mnt/hgfs/osdev,也就是windows的开发目录。如果你改变了文件的dependce关系,需要
make vclean
make dep
否则,只需要
make 就够了。
Step 4:用VMware 运行OS image
编译通之后,在windows的开发目录00--now-dev之下会有一个文件,flopy.img. 把它当作VMware的flopy
image加载就可以在VMware下试运行了。这个image还可以用于VirturePC,Bochs的软驱image。
Step 5:配置Bochs
所谓配置Bochs,就是在bochs2.1.1目录下创建一个c.img,用作bochs的硬盘image,创建此文件的命令是
bximage.exe,就在bochs2.1.1目录下。需要注意的是,在内核版本0.0.9.4之前,都不支持硬盘启动,所以只能从软盘启动,所以需
要配置 00--now-dev/debug目录下的bochs-src文件。
完成之后就可以双击00--now-dev/debug目录下的两个bat文件来调试或者运行我们的OS了。
关于调试,等bochs运行后help一下看看了。这里列上几个命令:
c
continue,如果没有设置断点,就停不下了
n或者s
next, step in
lb
设置断点, 入果希望在bios装载启动扇区后停止,只需lb 7c00, 在进入os之后断住,就 lb 0x100000
dump_cpu 察看cpu的各种状态
print-stack 打印堆栈
下图是这里提到的c.img。
Step 6:用编译好的OS启动你的真实PC
有几个方式启动物理PC。需要的工具是
dd
for windows/UltraISO。
1)软盘启动
使用dd for windows将flopy.img
写到软盘即可。不过不推荐。
2)光盘启动
使用UltraISO建立一个光盘image,使用它的加载启动映像功能加载flopy.img.
然后刻录到光盘就可以启动PC了。(没有刻录机?)
3)从移动硬盘或者USB启动
使用 dd for windows将flopy.img
写到移动硬盘或者USB即可。注意要写到主分区阿。
警告:
采用dd for windows时千万要备份你的USB或者移动硬盘。写img到USB/移动硬盘会破坏所其数据。由于操作失误引起所有损失,责任自负阿。
dd for windows 使用的简介:
dd真实一个好东西啊,这是个forwindows的版本。不过也是一个危险的工具,切记不要操作你的硬盘阿。用dd来制作floppy的raw image是很方便的。使用方法很简单。
首先
dd --list
这样dd给一个系统中所有磁盘,移动硬盘的列表以及其dos名称。就像这个样子:
rawwrite dd for windows version 0.3.
Written by John Newbigin
This program is covered by the GPL. See copying.txt for details
Win32 Available Volume Information
已安装分区的列表
\\.\Volume{77902e9a-3ee7-11da-be95-806d6172696f}\
link to \\?\Device\HarddiskVolume2
fixed media
Mounted on c:\
\\.\Volume{77902e9b-3ee7-11da-be95-806d6172696f}\
link to \\?\Device\HarddiskVolume3
fixed media
Mounted on d:\
\\.\Volume{93bf6b06-2917-11db-80a4-806d6172696f}\
link to \\?\Device\CdRom0
CD-ROM
Mounted on e:\
\\.\Volume{c256d03c-85cd-11db-80d9-444553544200}\
link to \\?\Device\Harddisk1\DP(1)0-0+5
removeable media
Mounted on f:\
物理设备的列表:
NT Block Device Objects
\\?\Device\CdRom0
\\?\Device\Harddisk0\Partition0 整个第一块硬盘
link to \\?\Device\Harddisk0\DR0 (如果用dd写MBR,就要用这个路径)
Fixed hard disk media. Block size = 512
\\?\Device\Harddisk0\Partition1 第一块硬盘的第一个分区
link to \\?\Device\HarddiskVolume1
Fixed hard disk media. Block size = 512
\\?\Device\Harddisk0\Partition2 第一块硬盘的第二个分区
link to \\?\Device\HarddiskVolume2
\\?\Device\Harddisk0\Partition3
link to \\?\Device\HarddiskVolume3 第一块硬盘的第三个分区
\\?\Device\Harddisk1\Partition0 第一块硬盘的第0个分区(应该是整个硬盘)
link to \\?\Device\Harddisk1\DR4 (如果用dd写MBR,就要用这个路径)
\\?\Device\Harddisk1\Partition1
link to \\?\Device\Harddisk1\DP(1)0-0+5
1. 制作USB启动盘:
如果harddisk1是一个usb 设备,只需要下面的命令即可制作一个可以从usb设备启动的raw img.
dd if=floopy.img of=\\?\Device\Harddisk1\DR4
[color="#ff0000"]注意:这将会破坏整个usb设备的分区表,如果你不了解后果,千万不要尝试操作你的硬盘,usb,
2. 为bochs制作硬盘的img,假定bochs的硬盘img路径为..\bochs-2.1.1\c.img
dd if=floopy.img of=..\bochs-2.1.1\c.img
3. 制作CDROM bootimg:
没有试过cdrom直接启动,将CDrom模拟成一个软驱的方法倒是尝试过.
使用ultra ISo这个工具,将floppy.img 作为启动映像烧制到cdrom即可实现从CDROM启动ExpOS.
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/79526/showart_1889287.html |
|