Opened 11 years ago

Closed 5 years ago

#2477 closed bug (duplicate)

Haiku's bootman doesn't show the same partitions as BeOS's

Reported by: idefix Owned by: axeld
Priority: normal Milestone: R1/beta1
Component: Applications/BootManager Version: R1/Development
Keywords: Cc: black.belt.jimmy@…, umccullough
Blocked By: #3545 Blocking:
Has a Patch: no Platform: All

Description

The partition list of Haiku's bootman differs from BeOS's bootman.

First of all, only the partitions on the first harddisk are listed. Apparently B_GET_BIOS_DRIVE_ID isn't implemented yet, see Changeset 25044.

Secondly, the Intel Extended Partition is listed which isn't bootable as far as I know.

Attachments (3)

Haiku's bootman.png (109.1 KB ) - added by idefix 11 years ago.
Partition list of Haiku's bootman
Haiku's bootman r27407.png (43.0 KB ) - added by idefix 11 years ago.
Partition list of Haiku's bootman (hrev27407)
Haiku's bootman r27578.png (86.3 KB ) - added by idefix 11 years ago.
Partition list of Haiku's bootman (hrev27578)

Download all attachments as: .zip

Change History (25)

by idefix, 11 years ago

Attachment: Haiku's bootman.png added

Partition list of Haiku's bootman

comment:1 by laplace, 11 years ago

Milestone: R1R1/alpha1
Owner: changed from axeld to laplace

When I asked on the development mailing list, Axel outlined the necessary steps for B_GET_BIOS_DRIVE_ID:

It's even a bit of work, but I can outline it a bit: 1) the boot loader needs to make a connection between drive ID and disk in a way that the OS can recognize it again. IIRC BeOS uses a sum/hash of the contents of a few blocks until it has enough to differentiate all (BIOS) drives. The name, or serial number is probably not reliably available from the BIOS, but I haven't really tried that yet. 2) it would need to store that information in the kernel_args structure. 3) when the OS detects the drives, it would see in that structure how it can recognize the drive again, and can then store the BIOS ID of that drive internally, so that B_GET_BIOS_DRIVE_ID can work as expected.

comment:2 by laplace, 11 years ago

Part two of this ticket is fixed in hrev27149.

in reply to:  2 ; comment:3 by idefix, 11 years ago

Replying to laplace:

Part two of this ticket is fixed in hrev27149.

Yes, the fix removed the Intel Extended Partition, but also the NTFS partitions. See screenshot.

Probably this happened because the NTFS-driver is missing, causing Haiku to think that the partitions don't contain a file system. But even if Haiku can't recognize the filesystem, the bootloader can boot that partition (by chainloading). So those partitions should also be listed in bootman.

by idefix, 11 years ago

Attachment: Haiku's bootman r27407.png added

Partition list of Haiku's bootman (hrev27407)

in reply to:  3 ; comment:4 by laplace, 11 years ago

Replying to idefix:

Replying to laplace:

Part two of this ticket is fixed in hrev27149.

Yes, the fix removed the Intel Extended Partition, but also the NTFS partitions. See screenshot.

Probably this happened because the NTFS-driver is missing, causing Haiku to think that the partitions don't contain a file system. But even if Haiku can't recognize the filesystem, the bootloader can boot that partition (by chainloading). So those partitions should also be listed in bootman.

I hope this is fixed in hrev27503, if not someone should have a look at DiskDevice implementation why ContainsFileSystem() returns false for NTFS partition.

in reply to:  4 ; comment:5 by idefix, 11 years ago

Replying to laplace:

I hope this is fixed in hrev27503, if not someone should have a look at DiskDevice implementation why ContainsFileSystem() returns false for NTFS partition.

Yes, bootman shows both NTFS partitions now, but both with a size of 0.00. See screenshot.

It used to show the correct size of the unrecognised partitions, see Haiku's bootman.png.

by idefix, 11 years ago

Attachment: Haiku's bootman r27578.png added

Partition list of Haiku's bootman (hrev27578)

in reply to:  5 ; comment:6 by laplace, 11 years ago

Cc: bonefish added

Replying to idefix:

Yes, bootman shows both NTFS partitions now, but both with a size of 0.00. See screenshot.

It used to show the correct size of the unrecognised partitions, see Haiku's bootman.png.

Ingo can you have a look at that regression?

BTW should have ContainsFileSystem() worked for a NTFS partition?

comment:7 by stippi, 11 years ago

Cc: bonefish removed

Ingo is already on the Trac mailing list.

in reply to:  6 ; comment:8 by bonefish, 11 years ago

Replying to laplace:

Replying to idefix:

Yes, bootman shows both NTFS partitions now, but both with a size of 0.00. See screenshot.

It used to show the correct size of the unrecognised partitions, see Haiku's bootman.png.

Ingo can you have a look at that regression?

No regression. The ntfs FS module is currently not on the image, so the content of the partition is not recognized. Consequently BPartition::ContentSize() can't report anything useful. You'll have to use Size(), if you want to show the size of the partition itself.

BTW should have ContainsFileSystem() worked for a NTFS partition?

If the respective FS module was installed and had recognized the partition, that would have worked, otherwise it wouldn't.

in reply to:  8 ; comment:9 by idefix, 11 years ago

Replying to bonefish:

No regression. The ntfs FS module is currently not on the image, so the content of the partition is not recognized. Consequently BPartition::ContentSize() can't report anything useful. You'll have to use Size(), if you want to show the size of the partition itself.

So, line 198 of LegacyBootDrive.cpp should read as follows? (Still trying to learn C++...)

        message.AddInt64("size", partition->Size());

in reply to:  8 comment:10 by laplace, 11 years ago

Replying to bonefish:

No regression. The ntfs FS module is currently not on the image, so the content of the partition is not recognized. Consequently BPartition::ContentSize() can't report anything useful. You'll have to use Size(), if you want to show the size of the partition itself.

B_WILL_DO :) Thanks for the informations.

in reply to:  9 comment:11 by laplace, 11 years ago

Replying to idefix:

So, line 198 of LegacyBootDrive.cpp should read as follows? (Still trying to learn C++...)

         message.AddInt64("size", partition->Size());

That seems to be correct.

comment:12 by laplace, 11 years ago

Sorry forgot to check the change in. It is now in hrev28316.

comment:13 by laplace, 11 years ago

Owner: changed from laplace to axeld

Changed owner as I won't have time to fix that.

comment:14 by bbjimmy, 11 years ago

Cc: black.belt.jimmy@… added

comment:15 by stippi, 11 years ago

Milestone: R1/alpha1R1

I don't see how this would hold up the alpha release.

comment:16 by umccullough, 10 years ago

Cc: umccullough added

comment:17 by Prognathous, 10 years ago

Cc: prognathous@… added

comment:18 by Prognathous, 10 years ago

Cc: prognathous@… removed

comment:19 by mmadia, 10 years ago

Blocked By: 3545 added

comment:20 by scottmc, 9 years ago

Milestone: R1R1/beta1
Version: R1/pre-alpha1R1/Development

comment:21 by mmadia, 8 years ago

Component: ApplicationsApplications/BootManager

comment:22 by pulkomandy, 5 years ago

Resolution: duplicate
Status: newclosed

So, all what's left to do here is #3545. Closing as duplicate.

Note: See TracTickets for help on using tickets.