Opened 6 years ago
Last modified 5 years ago
#14475 new bug
Boot from VMWare ESXi: PANIC: did not find any boot partitions!
Reported by: | markh | Owned by: | nobody |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | System/Kernel | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | x86 |
Description
I am trying to boot Haiku from a 32 bit virtual machine on VMWare ESXi 6.7, but during booting an error occurs: PANIC: did not find any boot partitions!
Curiously, this error does not occur when I remove the virtual disk I wanted to install Haiku on. I tried it with the virtual disk on the SATA controller of ESXi, but it also fails if I try it with IDE. I attached the serial output of the boot attempt with the disk on the SATA controller
Attachments (3)
Change History (13)
by , 6 years ago
Attachment: | serial.out added |
---|
comment:2 by , 6 years ago
I did not notice that VMWare picked up the USB stick that was still inserted into the machine, so I unplugged it and tried it again. I still got the same error, so there might be something more going on. I will upload the new serial output.
comment:3 by , 6 years ago
That is really, really weird; there is clearly a boot partition in that syslog output but somehow the kernel does not think it's bootable.
This is the extent of my knowledge though, someone else will have to help from here :/
comment:4 by , 6 years ago
field: "booted from image" (BOOL): true 1196 field: "partition offset" (LLNG): 0 (0x0) 1197 field: "boot method" (LONG): 0 (0x0) 1198 field: "boot drive number" (LLNG): 0 (0x0) 1199 field: "disk identifier" (RAWT): data at 0x82008be4, 79 bytes 1200 get_boot_partitions(): boot method type: 0
boot method is hard disk. It would nice to also dump the field disk_identifier when found at https://github.com/haiku/haiku/blob/master/src/system/kernel/fs/vfs_boot.cpp#L333
comment:5 by , 6 years ago
can't get "booted from image" true, while booting off the hard disk. Dunno how to reproduce.
comment:6 by , 6 years ago
I attached another serial output. This time of a successful boot if I remove the hard disk in ESXi. If this still does not help, I am willing to do some debugging if I can get some pointers on where in the code I need to be.
comment:8 by , 6 years ago
I played around a bit with the code and it seems that when a disk is included, Haiku no longer sees the CDROM drive as a CDROM drive and tries to boot as if it is a harddisk. This then fails to execute some code, so the boot fails.
The code that fails to recognize the CDROM drive is check_cd_boot at: https://github.com/haiku/haiku/blob/master/src/system/boot/platform/bios_ia32/devices.cpp#L168
I think the part where it fails is the check of the carry flag after the bios has been called. I don't know yet why this is a problem when a harddisk is configured. I added some debugging and did see that the driveid is 0.
comment:10 by , 5 years ago
Apologies for the late reply. I had time to retest today, but unfortunately it gives the same result.
Total guess of what's going on, by reading the code: You have two BFS partitions, the one from the anyboot and another on a disk. The partition scanner (http://xref.plausible.coop/source/xref/haiku/src/system/kernel/fs/vfs_boot.cpp#276) checks if a partition is bootable by calling IsBootDevice with strict=false, which returns true, so that function returns true, so the calling function thinks it's found a boot device and so halts the search.
Then it http://xref.plausible.coop/source/xref/haiku/src/system/kernel/fs/vfs_boot.cpp#403 calls IsBootDevice now with strict=true, which http://xref.plausible.coop/source/xref/haiku/src/system/kernel/fs/vfs_boot.cpp#223 probably returns false, and so it doesn't have any partitions.
So there are two potential solutions here:
I vote for # 1, but, I'm not an expert here.