Crash on VMWare but not on real computer...
Posted: Wed May 18, 2005 7:19 am
This is kinda funny, but in VMWare my OS it can run fine (it starts from a floppy), as long as I don't have any harddrive device added. If I have a harddrive added, it crashes already on the bootloader (simple FAT12 loader using int 13). My floppy FAT12 loader does this:
- Copy itself from 0x7C00 to 0x6000
- Jump to 0:0x6000
- Load the second loader from the floppy to 0:0x7C00
- Jump to 0:0x7C00
- The second loader loads the kernel to 1MB mark
- Maps 1-4MB to the 2GB mark, maps the first 16MB 1:1, and the primary stack just before the 3GB mark
- Jumps to 2GB
Everything works fine on mum's computer (my kernel is big and well made). On VMWare it doesn't even get the second loader loaded, it simply freezes. Are there any common problems causing this kind of problems? It uses int 13 to load sectors from the boot drive (I keep the dl value the BIOS gives me), and it's sort of funny that an added empty harddrive can cause that kind of lockup, and it still works perfectly on mum's real computer. This sort of pisses me off, as I've worked a lot on my kernel (it has a good working memory manager, interrupts, driver + irq system, filesystem support etc...), and currently I can only test it on a physical computer over 6 meters away from this one, and that VMWare refuses to boot it while a harddrive is added sort of makes me feel that some parts that obviously should be working doesn't. In Bochs it always crashes.
My question basically is, what are the common causes when an OS crashes in an emulator but not on a real computer? I know I should paste some code, but my loaders are big, and won't be a too interesting reading.
- Copy itself from 0x7C00 to 0x6000
- Jump to 0:0x6000
- Load the second loader from the floppy to 0:0x7C00
- Jump to 0:0x7C00
- The second loader loads the kernel to 1MB mark
- Maps 1-4MB to the 2GB mark, maps the first 16MB 1:1, and the primary stack just before the 3GB mark
- Jumps to 2GB
Everything works fine on mum's computer (my kernel is big and well made). On VMWare it doesn't even get the second loader loaded, it simply freezes. Are there any common problems causing this kind of problems? It uses int 13 to load sectors from the boot drive (I keep the dl value the BIOS gives me), and it's sort of funny that an added empty harddrive can cause that kind of lockup, and it still works perfectly on mum's real computer. This sort of pisses me off, as I've worked a lot on my kernel (it has a good working memory manager, interrupts, driver + irq system, filesystem support etc...), and currently I can only test it on a physical computer over 6 meters away from this one, and that VMWare refuses to boot it while a harddrive is added sort of makes me feel that some parts that obviously should be working doesn't. In Bochs it always crashes.
My question basically is, what are the common causes when an OS crashes in an emulator but not on a real computer? I know I should paste some code, but my loaders are big, and won't be a too interesting reading.