I've made some progress with my experiments (nothing exciting yet), but now I have a question for anyone who may be able to answer it.
My problem: GRUB2 doesn't work in Bochs. When booting, I get the following entries in the Bochs error log (duplicates removed for clarity):
Code: Select all
00061784021i[BIOS ] *** int 15h function AX=e820, BX=d1b8 not yet supported!
00064178460i[BIOS ] *** int 15h function AX=e820, BX=0000 not yet supported!
00064193246i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
00064216138i[BIOS ] *** int 15h function AX=e820, BX=0000 not yet supported!
00064230924i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
00064261499i[BIOS ] *** int 15h function AX=e820, BX=0000 not yet supported!
00064276285i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
00064308584i[BIOS ] *** int 15h function AX=e820, BX=0000 not yet supported!
00064314018i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
00064496490i[BIOS ] *** int 15h function AX=e820, BX=eb10 not yet supported!
00064511276i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
00064534267i[BIOS ] *** int 15h function AX=e820, BX=eb10 not yet supported!
00064549053i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
00064575347i[BIOS ] *** int 15h function AX=e820, BX=0042 not yet supported!
00064590133i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
00064613081i[BIOS ] *** int 15h function AX=e820, BX=0042 not yet supported!
00064627867i[BIOS ] *** int 15h function AX=e820, BX=bb36 not yet supported!
Digging around in Boch's source code, bios/rombios.c (lines 4568-4677) gives me Bochs' implementation of the e820 function. From what I can see, INT 15h, AX=e820 seems to be defined for BX = {0..7}, not 0xeb10, 0xbb36, 0x0042 or 0xd1b8. It should work for 0x0000, though, which is something that I also do not understand . . .
Does anyone have any suggestions as to how I could fix this? Thoughts as to what am I doing wrong?
My thanks for your time.
- ethereal
[0] http://wiki.osdev.org/Detecting_Memory_(x86)