Opened 9 days ago

Last modified 3 days 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:
Has a Patch: no 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)

serial.out (91.0 KB) - added by markh 9 days ago.
serial_singledisk.out (83.9 KB) - added by markh 8 days ago.
serial output without USB stick attached
serial_nodisk.out (124.9 KB) - added by markh 3 days ago.
Serial output without harddisk

Download all attachments as: .zip

Change History (9)

Changed 9 days ago by markh

Attachment: serial.out added

comment:1 Changed 9 days ago by waddlesplash

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:

1) Don't call IsBootDevice with strict=false and then strict=true; pick one or the other.

2) Don't stop searching for boot partitions after we found one candidate (unknown performance impact?)

I vote for # 1, but, I'm not an expert here.

Last edited 9 days ago by waddlesplash (previous) (diff)

comment:2 Changed 8 days ago by markh

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.

Changed 8 days ago by markh

Attachment: serial_singledisk.out added

serial output without USB stick attached

comment:3 Changed 7 days ago by waddlesplash

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 Changed 7 days ago by korli

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 Changed 6 days ago by korli

can't get "booted from image" true, while booting off the hard disk. Dunno how to reproduce.

Changed 3 days ago by markh

Attachment: serial_nodisk.out added

Serial output without harddisk

comment:6 Changed 3 days ago by markh

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.

Note: See TracTickets for help on using tickets.