x86operating-systembootloaderosdevdvd

no emulation booting OS


I'm working on no-emulation booting OS , as you know in no-emulation booting, the boot image can be any (real-mode) binary executable code.

i use 2 stage bootloader for my os , first i load the fist stage the problem that i encounter is in the second stage, When the bootloader tries to load the OS image, it needs a device number of the CD/DVD drive to make BIOS calls

The question is: which device number i should use ?

i have tryed 0x81(first IDE slave) and 0x82 (the second IDE master) on some pc it work on others it not


Solution

  • The El Torito (CD-ROM standard) protocol only states that BIOS shall emulate the CD/DVD drive by an arbitrary device number.

    Different BIOS may come up with different drive numbers.

    when BIOS invokes a bootloader, it also passes the emulated drive number in the CPU’s DL register.

    The bootloader must catch the drive number and use it to make BIOS calls.

    and the rest of it is similar to emulation booting