mariuszp wrote:Is it bad to assume that the extensions are present? Should I be using CHS in my bootloader instead?
It is definitely better to check for extensions and adapt, than to assume that they are present/absent.
mariuszp wrote:OR is this problem very rare and only appears in older versions of VirtualBox on emulated disks?
The problem here is quite specific - int13 extension support when a cdrom is booted up in hard-disk emulation mode.
The bios implementation of VirtualBox (which resembles quite closely that of Bochs) has decided to duplicate the implementation of the int13 extensions for each of the three boot cases - cdrom-no-emul, cdrom-harddisk-emul, and harddisk. On top of that, each implementation has varying degrees of support for the extensions.
It would have been better, imho, if a single instance of the implementation was written, and each of the three cases called into it.
I think that Bochs does not support int13 extensions when booting a cdrom in harddisk emulation mode - i.e. you would experience the same problem you reported here with Bochs as well. For both VirtualBox and Bochs, when the control jumps to boot_failed, the AH is likely set to 1 (which their code says they use to signal unimplemented functionality.)
Edit: The VirtualBox changes to support int13x with cdrom-harddisk-emul boot seems to have been prompted by the needs raised by Symantec Ghost. The
changelog says:
Symantec Ghost 11.5 bootable CD also uses El Torito hard disk emulation, uses INT13X without checking for support, and crashes if INT13X is not supported on the emulated drive.