[OpenBIOS] testing Mac OS X boot on latest trunk (revision 1075)
Mark Cave-Ayland
mark.cave-ayland at ilande.co.uk
Tue Dec 4 22:45:24 CET 2012
On 03/12/12 22:30, Amadeusz Sławiński wrote:
> Code for reference (and in case I need to use it again :P)
>
> printk("mac-parts: counted %d partitions\n", __be32_to_cpu(par.pmMapBlkCnt));
> for (d = 1; d<= __be32_to_cpu(par.pmMapBlkCnt); d++) {
>
> SEEK( bs * d );
> READ(&par, sizeof(par) );
>
> printk("Partition: %d\n", d);
>
> printk("pmSig: %x\n", __be16_to_cpu(par.pmSig));
> printk("pmSigPad: %x\n", __be16_to_cpu(par.pmSigPad));
> printk("pmMapBlkCnt: %x\n", __be32_to_cpu(par.pmMapBlkCnt));
> printk("pmPyPartStart: %x\n", __be32_to_cpu(par.pmPyPartStart));
>
> printk("pmPartBlkCnt: %x\n", __be32_to_cpu(par.pmPartBlkCnt));
> printk("pmPartName: %s\n", par.pmPartName);
> printk("pmPartType: %s\n", par.pmPartType);
>
> printk("pmLgDataStart: %x\n", __be32_to_cpu(par.pmLgDataStart));
> printk("pmDataCnt: %x\n", __be32_to_cpu(par.pmDataCnt));
> printk("pmPartStatus: %x\n", __be32_to_cpu(par.pmPartStatus));
> printk("pmLgBootStart: %x\n", __be32_to_cpu(par.pmLgBootStart));
> printk("pmBootSize: %x\n", __be32_to_cpu(par.pmBootSize));
> printk("pmBootLoad: %x\n", __be32_to_cpu(par.pmBootLoad));
> printk("pmBootLoad2: %x\n", __be32_to_cpu(par.pmBootLoad2));
> printk("pmBootEntry: %x\n", __be32_to_cpu(par.pmBootEntry));
> printk("pmBootEntry2: %x\n", __be32_to_cpu(par.pmBootEntry2));
> printk("pmBootCksum: %x\n", __be32_to_cpu(par.pmBootCksum));
> printk("pmPartType: %s\n", par.pmProcessor);
> printk("filler: %s\n", par.filler);
>
> printk("\n");
> }
>
> Output Max OS X 10.2 disk 1:
>>> mac-parts: counted 10 partitions
>>> Partition: 1
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 1
>>> pmPartBlkCnt: 3f
>>> pmPartName: Apple
>>> pmPartType: Apple_partition_map
>>> pmLgDataStart: 0
>>> pmDataCnt: 3f
>>> pmPartStatus: 17
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 2
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 40
>>> pmPartBlkCnt: 38
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver43
>>> pmLgDataStart: 0
>>> pmDataCnt: 38
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: 2400
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 7b04
>>> pmPartType:
>>> filler: ptDR
>
>>> Partition: 3
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 78
>>> pmPartBlkCnt: 8c
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver43_CD
>>> pmLgDataStart: 0
>>> pmDataCnt: 8c
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: c400
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 934b
>>> pmPartType:
>>> filler: CDrv
>
>>> Partition: 4
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 0
>>> pmPartBlkCnt: 0
>>> pmPartName:
>>> pmPartType: Apple_Void
>>> pmLgDataStart: 0
>>> pmDataCnt: 0
>>> pmPartStatus: 0
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 5
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 104
>>> pmPartBlkCnt: 38
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver_ATAPI
>>> pmLgDataStart: 0
>>> pmDataCnt: 38
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: 2600
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 70da
>>> pmPartType:
>>> filler: ptDR
>
>>> Partition: 6
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 13c
>>> pmPartBlkCnt: 8c
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver_ATAPI
>>> pmLgDataStart: 0
>>> pmDataCnt: 8c
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: f200
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 8b46
>>> pmPartType:
>>> filler: ATPI
>
>>> Partition: 7
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 1c8
>>> pmPartBlkCnt: 200
>>> pmPartName: Patch Partition
>>> pmPartType: Apple_Patches
>>> pmLgDataStart: 0
>>> pmDataCnt: 200
>>> pmPartStatus: 1
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 1
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 8
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 0
>>> pmPartBlkCnt: 0
>>> pmPartName:
>>> pmPartType: Apple_Void
>>> pmLgDataStart: 0
>>> pmDataCnt: 0
>>> pmPartStatus: 0
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 9
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 3c8
>>> pmPartBlkCnt: 1381e0
>>> pmPartName: Mac_OS_X
>>> pmPartType: Apple_HFS
>>> pmLgDataStart: 0
>>> pmDataCnt: 1381e0
>>> pmPartStatus: 4000007f
>>> pmLgBootStart: 3af0
>>> pmBootSize: c1000
>>> pmBootLoad: 1c00000
>>> pmBootLoad2: 0
>>> pmBootEntry: 1c00cb0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType: powerpc
>>> filler:
>
>>> Partition: 10
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 1385a8
>>> pmPartBlkCnt: b258
>>> pmPartName:
>>> pmPartType: Apple_Free
>>> pmLgDataStart: 0
>>> pmDataCnt: 0
>>> pmPartStatus: 0
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
> Output Mac OS X 10.0
>
>>> mac-parts: counted 10 partitions
>>> Partition: 1
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 1
>>> pmPartBlkCnt: 3f
>>> pmPartName: Apple
>>> pmPartType: Apple_partition_map
>>> pmLgDataStart: 0
>>> pmDataCnt: 3f
>>> pmPartStatus: 17
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 2
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 40
>>> pmPartBlkCnt: 38
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver43
>>> pmLgDataStart: 0
>>> pmDataCnt: 38
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: 2400
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: eb19
>>> pmPartType:
>>> filler: ptDR
>
>>> Partition: 3
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 78
>>> pmPartBlkCnt: 78
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver43_CD
>>> pmLgDataStart: 0
>>> pmDataCnt: 78
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: c800
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: e9ad
>>> pmPartType:
>>> filler: CDrv
>
>>> Partition: 4
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 0
>>> pmPartBlkCnt: 0
>>> pmPartName:
>>> pmPartType: Apple_Void
>>> pmLgDataStart: 0
>>> pmDataCnt: 0
>>> pmPartStatus: 0
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 5
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: f0
>>> pmPartBlkCnt: 38
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver_ATAPI
>>> pmLgDataStart: 0
>>> pmDataCnt: 38
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: 2600
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 3cd4
>>> pmPartType:
>>> filler: ptDR
>
>>> Partition: 6
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 128
>>> pmPartBlkCnt: 78
>>> pmPartName: Macintosh
>>> pmPartType: Apple_Driver_ATAPI
>>> pmLgDataStart: 0
>>> pmDataCnt: 78
>>> pmPartStatus: 37f
>>> pmLgBootStart: 0
>>> pmBootSize: ea00
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: ce67
>>> pmPartType:
>>> filler: ATPI
>
>>> Partition: 7
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 1a0
>>> pmPartBlkCnt: 200
>>> pmPartName: Patch Partition
>>> pmPartType: Apple_Patches
>>> pmLgDataStart: 0
>>> pmDataCnt: 200
>>> pmPartStatus: 1
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 4
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 8
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 0
>>> pmPartBlkCnt: 0
>>> pmPartName:
>>> pmPartType: Apple_Void
>>> pmLgDataStart: 0
>>> pmDataCnt: 0
>>> pmPartStatus: 0
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
>
>>> Partition: 9
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 3a0
>>> pmPartBlkCnt: 11a788
>>> pmPartName: Mac_OS_X
>>> pmPartType: Apple_HFS
>>> pmLgDataStart: 0
>>> pmDataCnt: 11a788
>>> pmPartStatus: 4000007f
>>> pmLgBootStart: 3af0
>>> pmBootSize: b4000
>>> pmBootLoad: 1c00000
>>> pmBootLoad2: 0
>>> pmBootEntry: 1c005b4
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType: powerpc
>>> filler:
>
>>> Partition: 10
>>> pmSig: 504d
>>> pmSigPad: 0
>>> pmMapBlkCnt: a
>>> pmPyPartStart: 11ab28
>>> pmPartBlkCnt: 254d0
>>> pmPartName:
>>> pmPartType: Apple_Free
>>> pmLgDataStart: 0
>>> pmDataCnt: 0
>>> pmPartStatus: 0
>>> pmLgBootStart: 0
>>> pmBootSize: 0
>>> pmBootLoad: 0
>>> pmBootLoad2: 0
>>> pmBootEntry: 0
>>> pmBootEntry2: 0
>>> pmBootCksum: 0
>>> pmPartType:
>>> filler:
Thanks a lot for this - this is extremely useful!
Based upon this, it looks as if OS X 10.0 and OS X 10.2 should boot with
the standard CHRP boot procedure since kPartitionAUXIsBootValid is set
on both the OS partitions. However, I realise now that I broke this with
my interpose refactoring in an attempt to accommodate Mac disk images I
had that *didn't* set this flag. I see that I also misunderstood the
direct partition boot, but this was because of an existing bug failing
to match the partition because the pmType string "powerpc" was not
checked in a case-insensitive manner as per the CHRP specification. Sigh.
The other interesting thing is that kPartitionAUXIsBootValid is not set
on your OS 10.4 upgrade disk. If you try and boot from this directly
from a reset, can Apple's Open Firmware actually boot it? Or does it
have to be launched from OS X?
ATB,
Mark.
More information about the OpenBIOS
mailing list