kernel源码(二十三)Bochs运行linux0.11

1 下载Bochs

https://sourceforge.net/projects/bochs/

我下载的版本为Bochs-win64-2.7.exe,双击即可安装

2 运行linux0.11

2.1 不使用配置文件

http://oldlinux.org/Linux.old/images/下载如下两个镜像

  • bootimage-0.11-20040305  操作系统引导镜像,包含了操作系统启动引导程序和内核代码
  • rootimage-0.11-20040305  根文件系统镜像,包含了文件系统根目录下所有的文件

打开bochs

进入到软盘编辑页面,选择上面下载的启动引导镜像E:\bochs\bootimage-0.11-20040305

启动

这里,我们将会看到,BIOS开始引导操作系统启动,是从软盘引导的,此时,floppya上的引导程序和内核代码将会加载到内存,此时floppya软盘就可以拔出来了。

接着,提示我们插入根文件系统软盘到floppya软驱中

注:习惯上,将引导程序和根文件系统分开存放在两个盘中

 插入根文件系统软盘到floppya软驱中。我们选择根文件系统镜像为上面下载的E:\bochs\rootimage-0.11-20040305

然后按回车键,我们将看到,linux0.11内核启动了。

而且,我们可以看到剩余blocks:36/1440个(根文件系统镜像总共1,474,560 字节/1024=1440kb=1440个盘块,这里已使用36个盘块)

剩余inodes:409/480

缓冲区:3466个

剩余内存:12582912 byte

2.2 使用配置文件

http://oldlinux.org/Linux.old/images/下载如下两个镜像

  • bootimage-0.11-20040305  操作系统引导镜像,包含了操作系统启动引导程序和内核代码
  • rootimage-0.11-20040305  根文件系统镜像,包含了文件系统根目录下所有的文件

然后在bochs安装路径下拷贝如下两个文件

  • BIOS-bochs-latest  bios映像文件
  • VGABIOS-lgpl-latest  vga bios映像文件

将这4个文件放到单独文件夹里面

然后创建一个文件bochsout.txt作为日志输出文件

创建配置文件:bochsrc.bxrc

megs:16 #设置内存16M
romimage: file=$BXSHARE/BIOS-bochs-latest #bios镜像
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest #vga bios镜像
floppya: 1_44=bootimage-0.11-20040305, status=inserted #软盘驱动a处存放的引导镜像
boot: a #启动盘
log: bochsout.txt #日志输出
vga: extension=vbe
mouse: enabled=0

然后,我们双击bochsrc.bxrc,同样提示我们插入根文件系统盘

和上面2.1相同的操作,选择根文件系统盘,回车。启动成功

2.3 硬盘启动

注:我们可以去http://oldlinux.org/Linux.old/bochs/下载最新版的linux-0.11-devel-xxx.zip。这里面有一些bochs配置文件和系统镜像,我们可以参考学习。

我下载的版本是linux-0.11-devel-060625,我们解压后在解压目录下创建一个新的配置文件bochsrc-hd-szj.bxrc

romimage: file=$BXSHARE\BIOS-bochs-latest
megs: 16
ata0-master: type=disk, path="hdc-0.11-new.img", mode=flat, cylinders=410, heads=16, spt=38
boot: c
log: bochsout.txt

双击启动

硬盘启动成功

注:如果报如下错误:ata0-0: could not open hard drive image file 'hdc-0.11-new.img',请检查当前路径下是否有hdc-0.11-new.img.lock文件,如果有,删除重启。

3 bochs配置文件*.bxrc

要在bochs中运行一个操作系统,最少需要如下资源

  • BIOS映像文件:用于开机引导,比如BIOS-bochs-latest
  • VGA BIOS映像文件:专门用于开机引导阶段控制显示设备,比如VGABIOS-lgpl-latest
  • 引导启动磁盘映像文件,比如bootimage-0.11-20040305
  • 根文件系统映像文件:比如rootimage-0.11-20040305

这些都可以配置在*.bxrc配置文件中

在bochs安装目录下有一个文件:bochsrc-sample.txt,列出了所有可用的参数设置。

下面介绍几个经常用到的参数

3.1 megs

用于设置内存,单位是Mb,默认是32Mb

3.2 floppya(floppyb)

floppya表示第一个软驱,floppyb表示第二个软驱。路径必须是磁盘映像文件的名称,我们也可以使用宿主机上的设备比如/dev/fd0,status表示磁盘的插入状态,inserted表示已插入,ejected表示未插入,示例

floppya: 1_44=/dev/fd0, status=inserted //linux系统下宿主机上的1.44M软驱
#floppya: image=../1.44, status=inserted
#floppya: 1_44=/dev/fd0H1440, status=inserted
#floppya: 1_2=../1_2, status=inserted
#floppya: 1_44=a:, status=inserted //win系统下1.44M a盘
#floppya: 1_44=a.img, status=inserted, write_protected=1
#floppya: 1_44=/dev/rfd0a, status=inserted

3.3 boot

用于定义模拟器中用于引导启动的驱动器。

boot: a
#boot: c
#boot: floppy
#boot: disk

3.4 ata0-ata4

设置ata通道,最多可以设置4个ata通道。ata通道的作用是连接硬盘或cdrom。也就是说硬盘或cdrom通过ata通道连接到系统中来。

一个ata通道可以连接2个硬盘(或cdrom)

如果不配置,默认会启用ata0,且其默认配置为:

ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14

3.5 ata0-master

ata0-master用于指定第一个ata通道(通道0)上连接的第一个硬盘;ata-slave指明第一个ata通道上连接的第二个硬盘。

# Examples:
#   ata0-master: type=disk, mode=flat, path=10M.sample, cylinders=306, heads=4, spt=17
#   ata0-slave:  type=disk, mode=flat, path=20M.sample, cylinders=615, heads=4, spt=17
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值