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.