“HD controller not ready”的解决方法

遇到的问题

制作根文件系统(minix文件系统)步骤时遇到bochs提示HD controller not ready的崩溃错误,以下是步骤
  1. 首先用bximage制作空的Image文件
    这里写图片描述
  2. 然后再SLS Linux系统中挂在这个空的硬盘Image
    在配置中增加
    ata0-slave: type=disk, path=”linux-0.12/hdc.img”, cylinders=130, heads=16, spt=63

  3. 在空的Image文件中创建文件系统(minix文件系统)
    这里写图片描述

  4. 在linux-0.12中挂载这个Image会出现“HD controller not ready”
    这里写图片描述

解决办法:

  1. 在linux-0.12-080324中运行bochsrc-0.12-hd
  2. 到linux源代码目录执行 make clean & make
    这里写图片描述
  3. 将新编译的内核写入到bootimage-0.12-hd中
    dd bs=8192 if=Image of=/dev/fd0
    这里写图片描述
  4. 用sublime text 打开bootimage-0.12-hd查找55aa
    替换前面的0301为0000
    文件另存为bootimage-0.12-fd-new
  5. 新的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”的解决方法

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值