Opened 10 years ago

Closed 4 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 10 years ago.
Partition list of Haiku's bootman
Haiku's bootman r27407.png (43.0 KB) - added by idefix 10 years ago.
Partition list of Haiku's bootman (hrev27407)
Haiku's bootman r27578.png (86.3 KB) - added by idefix 10 years ago.
Partition list of Haiku's bootman (hrev27578)

Download all attachments as: .zip

Change History (25)

Changed 10 years ago by idefix

Attachment: Haiku's bootman.png added

Partition list of Haiku's bootman

comment:1 Changed 10 years ago by laplace

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 Changed 10 years ago by laplace

Part two of this ticket is fixed in hrev27149.

comment:3 in reply to:  2 ; Changed 10 years ago by 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.

Changed 10 years ago by idefix

Attachment: Haiku's bootman r27407.png added

Partition list of Haiku's bootman (hrev27407)

comment:4 in reply to:  3 ; Changed 10 years ago by laplace

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.

comment:5 in reply to:  4 ; Changed 10 years ago by idefix

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.

Changed 10 years ago by idefix

Attachment: Haiku's bootman r27578.png added

Partition list of Haiku's bootman (hrev27578)

comment:6 in reply to:  5 ; Changed 10 years ago by laplace

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 Changed 10 years ago by stippi

Cc: bonefish removed

Ingo is already on the Trac mailing list.

comment:8 in reply to:  6 ; Changed 10 years ago by bonefish

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.

comment:9 in reply to:  8 ; Changed 10 years ago by idefix

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());

comment:10 in reply to:  8 Changed 10 years ago by laplace

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.

comment:11 in reply to:  9 Changed 10 years ago by laplace

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 Changed 10 years ago by laplace

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

comment:13 Changed 10 years ago by laplace

Owner: changed from laplace to axeld

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

comment:14 Changed 10 years ago by bbjimmy

Cc: black.belt.jimmy@… added

comment:15 Changed 10 years ago by stippi

Milestone: R1/alpha1R1

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

comment:16 Changed 9 years ago by umccullough

Cc: umccullough added

comment:17 Changed 9 years ago by Prognathous

Cc: prognathous@… added

comment:18 Changed 9 years ago by Prognathous

Cc: prognathous@… removed

comment:19 Changed 9 years ago by mmadia

Blocked By: 3545 added

comment:20 Changed 8 years ago by scottmc

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

comment:21 Changed 7 years ago by mmadia

Component: ApplicationsApplications/BootManager

comment:22 Changed 4 years ago by pulkomandy

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.