Experiences with bochs and isolinux
Have you heard about bochs, the x86 emulator?
Its a wonderfull program. I used it
to test my bootable CD-ROMs without rebooting my PC.
And even better I test the images before burning!
Unfortunately the BIOS coming with bochs does not have
the int13-AX=4B01 implemented, so the original isolinux.bin
from sylinux-1.73 package by H. Peter Anvin failes to boot.
I was wondering that SuSE-CDs could be booted within bochs using isolinux.
I searched the web for information, what SuSE have changed
to let there CDs boot on PCs with bad BIOS, but I could not find anything.
So I looked to the isolinux sources and played a bit with it.
Its a fun to do it with bochs!
At the end I found it best to ignore simply the missing BIOS function
and continue to boot.
So thinks work now and I could create my ultimative BOOT-CD with
lot of my old DOS disks and mini-linux's and rescue disks on only one CD.
Isn't that great?
Have a look to the end of this page for my patch.
Be patient if you test your bootable CD with bochs.
Its around 500 times slower than the real PC.
--- isolinux.asm.orig Sun Jun 2 18:15:27 2002
+++ isolinux.asm Sun Jun 2 18:23:05 2002
@@ -282,8 +282,13 @@
mov dl,[DriveNo]
mov si,spec_packet
int 13h
- jc near spec_query_failed ; Shouldn't happen (BIOS bug)
- mov dl,[DriveNo]
+ jnc spec_cont
+ ; Shouldn't happen (BIOS bug)
+ mov si,spec_ign_msg
+ call writemsg
+ jmp found_drive
+
+spec_cont: mov dl,[DriveNo]
cmp [sp_drive],dl ; Should contain the drive number
jne near spec_query_failed
@@ -587,6 +592,7 @@
verify_msg: db 'Image checksum verified.', CR, LF, 0
allread_msg db 'Main image read, jumping to main code...', CR, LF, 0
%endif
+spec_ign_msg: db 'BIOS int13-4B01 failed, ignore...', CR, LF, 0
spec_err_msg: db 'Loading spec packet failed, trying to wing it...', CR, LF, 0
maybe_msg: db 'Found something at drive = ', 0
alright_msg: db 'Looks like it might be right, continuing...', CR, LF, 0
Comments are welcome! Joerg.
Jan 2005: Try qemu-0.6.1. Its more flexible and faster than bochs.