遇到的问题
制作根文件系统(minix文件系统)步骤时遇到bochs提示HD controller not ready的崩溃错误,以下是步骤
- 首先用bximage制作空的Image文件
然后再SLS Linux系统中挂在这个空的硬盘Image
在配置中增加
ata0-slave: type=disk, path=”linux-0.12/hdc.img”, cylinders=130, heads=16, spt=63在空的Image文件中创建文件系统(minix文件系统)
- 在linux-0.12中挂载这个Image会出现“HD controller not ready”
解决办法:
- 在linux-0.12-080324中运行bochsrc-0.12-hd
- 到linux源代码目录执行 make clean & make
- 将新编译的内核写入到bootimage-0.12-hd中
dd bs=8192 if=Image of=/dev/fd0
- 用sublime text 打开bootimage-0.12-hd查找55aa
替换前面的0301为0000
文件另存为bootimage-0.12-fd-new - 新的bochs文件配置如下:
romimage: file=$BXSHARE\BIOS-bochs-latest
megs: 16
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
floppya: 1_44="bootimage-0.12-fd-new", status=inserted
#ata0-master: type=disk, path="rootimage-0.12-hd", mode=flat, cylinders=487, heads=16, spt=63
ata0-master: type=disk, path="hdc.img", mode=flat, cylinders=130, heads=16, spt=63
boot: a
log: bochsout.txt
panic: action=ask
#error: action=report
#info: action=report
#debug: action=ignore
ips: 4000000
mouse: enabled=0
原理
正如那位童鞋所说:驱动器是否就绪与控制器的状态无关,我们只需要检测状态寄存器忙位是否为1即可,不需要管就绪位。
但是参见最新一版的linux-0.12的代码中这部分的代码已经做了相应的修改,只是bootimage还未更新
参考
SLS Linux系统的bochs配置
Linux-0.12的bochs配置
调试linux0.12出现信息“HD controller not ready”的解决方法