43 lines
1.5 KiB
Plaintext
43 lines
1.5 KiB
Plaintext
Problem when run with the newer Bochs software and fixing methods
|
|
-----------------------------------------------------------------
|
|
gohigh@sh163.net, gohigh@gmail.com
|
|
2006.08.28
|
|
|
|
|
|
When running the Linux kernel 0.1x in Bochs environment with version number
|
|
newer or equal to 2.2.6, you may encounter an problem at the bootstrap period
|
|
with the error message "HD controller not ready". There are two general
|
|
methods you can use to fix this problem.
|
|
|
|
1. One way is tricky but easy and without modify the kernel code. you need
|
|
only copy the harddisk image file to another name and modify the .bxrc file
|
|
to attach it as a second or slave hd in it. Fox example, if you have a hard
|
|
disk image file with name is hdc-0.11.img, just copy it to produce another
|
|
disk image with a name something like hdd-0.11.img. Then modify
|
|
the corresponding configuration file, for example, bochsrc-hd.bxrc. Add the
|
|
following line, and the parameters in the line should be the same with your
|
|
hdc-0.11.img line. Then you can go with the newer bochs system.
|
|
|
|
ata0-slave: type=disk, path="hdd-0.11.img", mode=flat, cylinders=410, heads=16, spt=38
|
|
|
|
|
|
2. The second mothod is to modify the linux/kernel/blk_drv/hd.c file in you
|
|
Linux kernel 0.11. Change the code at line 163 and 165:
|
|
|
|
163 int retries=10000;
|
|
164
|
|
165 while (--retries && (inb_p(HD_STATUS)&0xc0)!=0x40);
|
|
|
|
as following:
|
|
|
|
163int retries=100000;
|
|
164
|
|
165while (--retries && (inb_p(HD_STATUS)&0x80));
|
|
|
|
then rebuild the kernel and write it to the boot floppy image file:
|
|
|
|
dd if=Image of=/dev/fd0
|
|
|
|
|
|
(End)
|