建立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的头文件和源文件。可以省却不少麻烦。记着选择下列软件:
          Kernel Source
          gcc/make等开发工具 (FC4中只需选择内核开发即可)
          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 <jn@it.swin.edu.au>
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  
   
   注意:这将会破坏整个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.

TOP BACK

Copy right 2001-2007