文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>搭建实验平台(二)

搭建实验平台(二)

时间:2006-04-06  来源:Michael.Liu

第一步建立PC机仿真环境:安装Bochs 2.1.1仿真系统,然后对其进行一系列设置。     为了在Bochs中运行一个操作系统,最少需要以下资源:       1、Bochs执行文件;       2、BIOS映像文件(BIOS-bochs-latest)       3、VGA-BIOS映像文件(VGABIOS-lgpl-latest)       4、至少一个引导启动磁盘映像文件(软盘、硬盘或光驱的映像文件)。       Bochs执行文件中描述了一系列设置,即对系统的配置文件.bxrc,他的功能主要是用来寻找所使用的磁盘映像文件、运行环境外围设备的配置、以及一些其他模拟机器的配置信息。一下是几个常用到的参数设置:
  • megs 用来设置模拟系统中所含内存容量,以兆单位,如 megs:32
  • floppya 表示第一个软驱,相应的floppyb表示第二个软驱,如果需要从软盘启动,那么floppya就该指向一个可引导的磁盘映像文件,如下示例:

        floppya: 1_44=/dev/fd0, status=inserted #Linux系统下直接访问1.44MB A盘
        floppya: 1_44=b:, status=inserted # win32系统下直接访问1.44MB B盘
        floppya: 1_44=bootimage.img, status=inserted # 指向磁盘映象文件bootimage.img
        floppyb: 1_44=..\Linux\rootimage.img, status=inserted # 指向上级目录Linux/下rootimage.img

    在配置文件中,若同时存在几行相同名称的参数,那么只有最后一行的参数起作用。

  • ata0、ata1、ata2、ata3 这4个参数名用来启动模拟系统中最多4个ATA通道。对于每个启用的通道,必须指明两个IO基地址和一个中断请求号。默认情况下只有ata0是启用的,并且参数默认为下面所示的值:

       ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
       ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
       ata2: enabled=1, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11
       ata3: enabled=1, ioaddr1=0x168, ioaddr2=0x360, irq=9

  • ata0-master(ata0-slave) ata0-master用来指明模拟系统中第1个ATA通道(0通道)上连接的第1个ATA设备(硬盘或CDROM等);ata0-slave指明第1个通道上连接的第2个ATA设备。如下示例

       ata0-master: type=disk, path=hd.img, mode=flat,  cylinders=306, heads=4, spt=17, translation=none
       ata1-master: type=disk, path=2G.cow, mode=vmware3, cylinders=5242, heads=16, spt=50, translation=echs
       ata1-slave: type=disk, path=3G.img, mode=sparse, cylinders=6541, heads=16, spt=63, translation=auto
       ata2-master: type=disk, path=7G.img, mode=undoable, cylinders=14563, heads=16, spt=63, translation=lba
       ata2-slave: type=cdrom, path=iso.sample, status=inserted
       ata0-master: type=disk, path="hdc-large.img", mode=flat, cylinders=487, heads=16, spt=63
       ata0-slave: type=disk, path="..\hdc-0.11.img", mode=flat, cylinders=121, heads=16, spt=63

   各选项的含义如下:

       type 连接的设备类型 [disk | cdrom]
       path 映象文件路径名
       mode 映象文件类型,仅对disk有效 [flat | concat |external | dll | sparse |vmware3 | undoable | growing | volatile ]
       cylinders 仅对disk有效
       heads 仅对disk有效
       spt 仅对disk有效
       status 仅对cdrom有效 [inserted | ejected]
       biosdetect bios检测类型 [none | auto],仅对ata0上disk有效 [cmos]
       translation bios进行变换的类型(int13),仅对disk有效 [none | lba | large | rechs | auto]

  • boot 用来定义模拟机器中用于引导启动的驱动器。可以指定是软盘、硬盘或者CDROM。也可以使用驱动器号'c'和'a',如 boot:a
  • ips 指定每秒钟仿真的指令条数,如 ips:1000000 
  • log 指定log的路径名可以让Bochs记录执行的一些日志信息,如 log:log.txt

   将以上的配置信息保存在bochs可执行文件中,双击此文件就可以启动系统了。以上是一些启动系统的必要信息,为了启动系统,还需要可引导的磁盘映像文件,下面进入第二步。

第二步创建磁盘映像文件并访问:

创建的方法有好几种:Bochs仿真系统中自带了一个映像文件制作工具--bxiamge.exe,利用它可以很快很方便地制作出满足要求大小的磁盘映像文件,包含软盘(fd)或硬盘(hd),具体方法是启动工具,按照向导一步步来制作;第二种方法是利用WinImage工具来制作,它能制作DOC格式的Image文件,并且还能直接访问Image文件,但它仅局限于制作软盘Image;第三种方法就是在Linux环境使用命令dd来创建。

访问的方法也有好几种:利用WinImage可以很方便地直接访问Image文件;也可以在Linux环境下进行访问,主要是使用mount命令进行加载,然后就可以访问了。

在这一步中,我们创建一个大小为256M的硬盘映像文件hdc.img,满足如下要求:柱面数是520、磁头数是16、每磁道扇区数是63,即cyl=520,heads=16,spt=63,其扇区总数为:520 * 16 * 63 = 524160,创建命令如下:dd if=/dev/zero of=hdc.img bs=512 count=524160

第三步制作根系统文件:

为了创建自己的根文件系统,先从网上下载一个现存的SLS-Linux,该系统有较强的功能,完全能够满足我们的需要。

我们的目的是要在上一步中创建的hdc.img文件中建立根文件系统,因此还要先找到现成的Linux 0.11内核,可以从赵博的网上下载如下两个映像文件:bootimage-0.11为内核映像文件,rootimage-0.11为可引导的软盘映像文件。以下是在hdc.img文件中创建文件系统的具体步骤:

1、将上面三个文件(hdc.img,bootimage-0.11,rootimage-0.11)放在同一目录下,此处假设为Linux-0.11,并将此文件夹放在已存在的模拟系统SLS-Linux目录中;

2、进入SLS-Linux目录,编辑(我使用的UltraEdit,一款非常优秀的编辑器哦)SLS Linux系统的Bochs配置文件bochsrc.bxrc。在ata0-master一行下加入我们的硬盘Image文件的配置参数行:ata0-slave:type=disk, path=..\Linux-0.11\hdc.img, cylinders=520, heads=16, spt=63

3、退出编辑器,双击bochsrc.bxrc运行SLS Linux模拟系统,在出现的Login提示符下输入root回车,进入模拟系统提示符[/usr/root]#

4、利用fdisk命令在hdc.img文件中建立1个分区。下面是建立第1个分区的命令序列:

[/usr/root]# fdisk /dev/hdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-520): 1
Last cylinder or +size or +sizeM or +sizeK (1-520): +63M
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 80
Command (m for help): p
 Disk /dev/hdb: 16 heads, 63 sectors, 520 cylinders
 Units = cylinders of 1008 * 512 bytes
  Device  Boot Begin Start End Blocks Id System
 /dev/hdb1      1      1   129 65015+ 80 Old MINIX
Command (m for help):w
The partition table has been altered.
Please reboot before doing anything else.
[/usr/root/]#

5、重启系统,使用mkfs命令在刚建立的第一个分区上创建MINIX文件系统:

[/usr/root]# mkfs /dev/hdb1 64000
21333 inodes
64000 blocks
Firstdatazone=680 (680)
Zonesize=1024
Maxsize=268966912
[/usr/root]#

至此成功地在hdc.img文件的第1个分区中创建文件系统。

下一步将为我们的Linux-0.11配置Bochs执行文件,主要信息如下:

romimage: file=$BXSHARE\BIOS-bochs-latest, address=0xf0000
megs: 16
vgaromimage: $BXSHARE\VGABIOS-elpin-2.40
floppya: 1_44="bootimage-0.11", status=inserted
ata0-master: type=disk, path="hdc.img", mode=flat, cylinders=520, heads=16, spt=63
boot: a
log: bochsout.txt
panic: action=ask
ips: 1000000
mouse: enabled=0

将其保存在bochsrc.bxrc,双击启动Linux-0.11系统,之后将会在模拟系统窗口中出现如下提示:Insert root floppy and press ENTER,此时应该单击菜单条上的'CONFIG'图标进入Bochs设置窗口,修改第1项的软盘设置,让其指向rootimage-0.11盘。然后连续按回车键,直到设置窗口最后一行信息显示'Continuing simulation'为止。此时再切换到Bochs运行窗口。单击回车键后就正式进入了Linux 0.11系统。

现在可以开始加载硬盘上的文件系统了。执行下列命令,把新的文件系统加载到/mnt目录上:

[/usr/root]# cd /
[/]# mount /dev/hd1 /mnt
[/]#

在加载了硬盘分区上的文件系统之后,我们就可以把软盘上的根文件系统复制到硬盘上去了。执行以下命令:

[/]# cd /mnt
[/mnt]# for i in bin dev etc usr tmp
> do
> cp +recursive +verbose /$i $i
done

此时软盘根文件系统上的所有文件就会被复制到硬盘上的文件系统中,得到了硬盘Imgae根文件系统,下面就能使用此根文件系统了,以便让Linux-0.11以它作为根文件系统启动。可以通过修改引导盘bootimage-0.11文件的第509、510字节的内容就可以实现。仍然使用UltraEdit编辑器,将第509、510字节的内容分别修改成01、03(原来为00 00),表示根文件系统设备在硬盘Image的第1个分区上。然后存盘退出。如果把文件系统安装在了别的分区上,那么需要修改前1个字节以对应到你的分区上。

双击启动Linux-0.11系统,应该会快速进入Linux 0.11系统并显示出命令提示符。

第四步编译Linux-0.11内核---待续

第五步调试编译Linux-0.11内核---待续

参考文献::《Linux内核完全注释0.11版》作者:赵炯博士

相关阅读 更多 +
排行榜 更多 +
像素世界乐园

像素世界乐园

策略塔防 下载
荒岛狩猎人神枪手

荒岛狩猎人神枪手

飞行射击 下载
斗弓箭手

斗弓箭手

飞行射击 下载