bochs

Questions:

1. Bochs是做什么用的软件

Bochs是用C++开发的一个模拟器,模拟整个PC。它被设计成可以运行于多种主流平台下,包括x86, PPC, Alpha, Sun和MIPS。和Bochs同类的软件还有:VMware和Virtual PC。

 

 

2. 为什么选择Bochs(Bochs的优点)
Bochs 完全是靠软件模拟来实现的。从启动到重启,包括PC的外设键盘,鼠标,VGA卡,磁盘,网卡等,全部都是有软件来模拟的。这和其它的模拟器如 VMware,plex86等有很大的区别。也正是由于Bochs完全是靠软件来模拟整个PC环境,因此它非常的适合开发操作系统,这对广大操作系统爱好 者来说是一个福音。因为有它,使得调试操作系统非常非常的容易,它自带一个调试器bochsdbg,它可以从PC机刚启动的那一刹那起就开始模拟,注意, 这不是从读取磁盘中的引导扇区那开始模拟。

 

3. Bochs运行的系统平台
Bochs有windows和linux2个版本

 

4. 从哪里得到
bochs.sourceforge.net

 

 

本文不是一本专门的使用手册,软件毕竟只是工具,使用不是我最终的目的,工具就是用来提高和改善我们工作环境的,我的目的是能够尽快地开始调试我的OS——不能调试太痛苦了,我无法面对自己错误百出的程序。所以如果你想玩转Bochs那么这篇文章恐怕不适合你。另外由于我比较懒,不怎么愿意学习新的东西,(但是发现没有其它的软件可调试OS)所以我坚持“用到哪里学到哪里,即学即用”的原则。

 

在这里我使用的是Bochs for Windows


 

Bochs的配置

 

 

 

首先要明白我们为什么要配置Bochs——配置的目的是什么。原因很简单,因为Bochs能够模拟多种硬件平台,所以它需要知道你想模拟一个什么样的平台。

 

配置的方法:配置的方法有2种(应该是,我没有仔细考证)1.运行Bochs后会自动让你选择进行配置;2.通过配置文件配置。第一种方法我觉得比较麻烦,没有仔细研究,我选择的是第二种通过配置文件配置的方法。

 

Bochs为我们提供了一个配置文件的模版,这个模版为bochsrc-sample.txt,可以在 bochs的安装目录中找到。稍微看一下,你就会知道:在配置文件中”#”为注释符号,表明后面#后面的全部是注释的内容(类似于C / C++ 中的行注释“//”)

 

 

 

Romimage

 

找到“romimage: file=bios/BIOS- bochs-latest, address=0xf0000”,这里定义了Bochs模拟BIOS文件的位置。Bochs安装文件夹中没有BIOS这个子目录,但有“BOOS- bochs-latest”这个文件,因此我们在这里将其更改为“romimage: file=BIOS-bochs-latest, ddress=0xf0000”。

 

这个参数我们知道就可以,一般没有必要修改。

 

 

 

Vgaromimage

 

找到“vgaromimage: bios/ VGABIOS-elpin-2.40”,基于同样的理由,将之更改为“vgaromimage: VGABIOS-lgpl-latest”。这个一般我们也没有必要修改。

 

 

 

Megs

 

指定内存大小。“megs: 32”表示虚拟系统被分配到32MB内存,如果你嫌少的话,可以在行首添加“#”将之屏蔽,然后选择更大的内存,当然不要忘记将行首的“#”删除.

 

 

 

 

 

Floppya
这是A 驱动器的参数,当然,自然也是模拟的。通常所用的软驱是1。44MB的,因此后面跟的参数是1_44=/dev/fd0 注意:/dev/fd0表示你当前的真实软驱。如果你想使用镜像文件(在编写操作系统中,我们一般都使用镜像文件)则把/dev/fd0改成你镜像文件的 路径,如果你的配置文件和镜像文件在同一个文件夹中则可以直接写镜像名称,比如1_44=msdos.img就可以。

 

当然,也可以模拟其它的软驱,如2。 88M,720K,360K的,这非常的有用!你装minix1.5版的时候就知道了,网站上download的都是360K,说明那是360K的磁盘, 你可以模拟除360K的软驱使用。后面的参数status标明软驱的状态,只能有两个inserted(软盘插入软驱),ejected(软盘未插入软 驱)。完整的就是floppya: 1_44=msdos.img, status=inserted。别的软驱如B类似。

 

 

 

Boot
这是启动的驱动器,它的频率也比较高。它可以带的参数有floppy(软驱启动),disk(磁盘启动),cdrom(光驱启动)。

 

 

 

ATA[0-3]-MASTER,ATA[0-3]-SLAVE
指定硬盘或光盘的参数,并指明它是主盘还是从盘。标准的参数是ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17,type参数只能是两者,disk(硬盘),cdrom(光盘),mode这个参数镜像类型,它仅仅是针对磁盘才有效,有几 种,flat(一个文件的布局)concat(多个文件的布局)external(开发者指定的,通过C++的类BOCHS就是C++开发的)dll(开 发者指定的,通过dll文件)vmware3(wmware3使用的硬盘镜像)。还有几个其它的不介绍;path是指定硬盘或是光盘镜像的文件。 Cylinders,Heads,Spt这几个参数通过这名字就能知道了。注意,这通常来说也不算是太重要,但是某些时候,则是特别重要,比如装 minix1.5的时候,用bximage这个bochs自带的创建磁盘工具创建了个硬盘,然后就指明路径就运行,结果分区的时候一直出错,查了半天才发 现这几个参数没有设置好,bximage创建的硬盘的Heads和Spt似乎是固定的,和模板自带的不一样,结构分区的时候,自然按配置文件里的计算,和 实际的自然不符。

 

总之,有了配置模版文件,只要稍微懂一些英文很容易就能明白各个参数的作用和如何使用。这个表示我从网上copy下来的。可以参考一下。

 

 

参数名

说明

config_interface

关于配置文件的接口。其实就是在BOCHS运行过程中改变配置的界面

display_library

图形库。

Romimage

ROM BIOS

Megs

内存

optromimage [1-4]

ROM镜像的选项

vgaromimage

VGA ROM BIOS

floppya

软驱A

floppyb

软驱B

ata[0-3]

硬盘或光驱的ata控制器

ATA[0-3]-MASTER ATA[0-3]-SLAVE

ata设备的类型

Boot

启动驱动器

Ips

模拟的频率,有些时候特别有用,比如我装minix1.5的时候,在login的时候,如果机子高档的话,输入passwd的时间特别短,这时候就需要调整频率了。当然,听说软件如果对实时控制特别研的时候,也必须改它。

Clock

时钟

floppy_bootsig_check

是否检查软盘引导时候的引导的标记0xaa55

log

调试用的日志

logprefix

日志记录的格式

panic

Bochs这个软件本身错误的信息,如配置文件出错或是模拟错误如不支持图形模式

Error

Bochs遇到不能模拟的情况,如出现非法指令

Info

一些不常出现的情况

Debug

主要用来开发Bochs这个软件时报告情况用的

debugger_log

调试器输出错误的文件。

com1

串行端口。

parport1

并行端口。

sb16

声卡

vga_update_interval

VGA卡刷新率

ne2k

网卡

 

 

 

当我们写好配置文件后,将其后缀名改为.bxrc,就可以被Bochs识别了。这时候我们只要双击该配置文件Bochs就启动并按照该配置文件进行配置,自动执行。下面以DOS安装为例进行说明:

 

我们用光盘镜像来安装,然后用个引导盘启动,这个引导盘要能挂光驱。我们所用的引导盘就是前面提到的msdos.img 这个。我的是用win98的引导盘做的。假如光盘镜像文件是msdos.iso。我们先做个硬盘,用bximage这个工具创建硬盘,创建的时候,选择你 所用虚拟的硬盘的大小。然后把创建的镜像(c.img)复制到msdos6这个目录中,把msdos.img和msdos.iso也复制到msdos6这 个目录中,嗯,还有bochsrc-sample.txt也复制过去并改名字为filename.bxrc,然后编辑这个配置文件,主要是把光盘挂上,把 软盘和硬盘也挂上,并且把启动的取得器设定为a,然后双击filename.bxrc则开始运行了,安装正常的安装msdos622的方法,先用 fdisk分区,然后format,然后重新启动(格式化完必须重新启动),然后进入光驱安装。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值