CCC3.1.1 でコピーしたディスクがブートしない。

System Preferences[503] Error setting the Startup Disk
com.apple.systempreferences[503] Booter partition disk0s1 is not Apple_Boot
com.apple.systempreferences[503] Booter partition disk1s1 is not Apple_Boot

うむ?

# diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *153.4 Gi   disk0
   1:                        EFI                         200.0 Mi   disk0s1
   2:                 Apple_RAID                         153.1 Gi   disk0s2
   3:                 Apple_Boot Boot OSX                128.0 Mi   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *153.4 Gi   disk1
   1:                        EFI                         200.0 Mi   disk1s1
   2:                 Apple_RAID                         153.1 Gi   disk1s2
   3:                 Apple_Boot Boot OSX                128.0 Mi   disk1s3

うむ。確かに、Apple_Bootを指してないなぁ。って納得している場合ではないか。

10.5.2ではなく10.4.7 Server OSでやってみたら上手くいったよ、という報告があるようで、これはCCCかLeopardのバグの疑い濃厚*1。なんかこの連休中、こんなんばっかし。

# bless --info /Volumes/Server\ HD\ 1/System/Library/CoreServices/ --bootinfo --verbose

してみた。

Mount point for /Volumes/Server HD 1/System/Library/CoreServices/ is /Volumes/Server HD 1
Boot blocks read successfully
Aggregate boot path is IODeviceTree:first-boot/@0:2
GPT detected
Booter partition required at index 3
System partition found
Booter partition found
Aggregate boot path is IODeviceTree:sata/k2-sata@1/@0:2
GPT detected
Booter partition required at index 3
System partition found
Booter partition found
Returning booter information dictionary:
<CFDictionary 0x109ec0 [0xa01e2174]>{type = mutable, count = 3, capacity = 3, pairs = (
	0 : <CFString 0x180e0 [0xa01e2174]>{contents = "Auxiliary Partitions"} = <CFArray 0x109d40 [0xa01e2174]>{type = immutable, count = 2, values = (
	0 : <CFString 0xa01ee730 [0xa01e2174]>{contents = "disk0s3"}
	1 : <CFString 0xa01f0e00 [0xa01e2174]>{contents = "disk1s3"}
)}
	2 : <CFString 0x180d0 [0xa01e2174]>{contents = "Data Partitions"} = <CFArray 0x10a9c0 [0xa01e2174]>{type = immutable, count = 2, values = (
	0 : <CFString 0xa01ef820 [0xa01e2174]>{contents = "disk0s2"}
	1 : <CFString 0xa01f24b0 [0xa01e2174]>{contents = "disk1s2"}
)}
	3 : <CFString 0x180f0 [0xa01e2174]>{contents = "System Partitions"} = <CFArray 0x10a530 [0xa01e2174]>{type = immutable, count = 2, values = (
	0 : <CFString 0x10a6c0 [0xa01e2174]>{contents = "disk0s1"}
	1 : <CFString 0x10a910 [0xa01e2174]>{contents = "disk1s1"}
)}
)}
finderinfo[0]: 151595 => Blessed System Folder is /Volumes/Server HD 1/System/Library/CoreServices
finderinfo[1]: 62996178 => Blessed System File is /Volumes/Server HD 1/System/Library/CoreServices/boot.efi
finderinfo[2]:      0 => Open-folder linked list empty
finderinfo[3]:      0 => No OS 9 + X blessed 9 folder
finderinfo[4]:      0 => Unused field unset
finderinfo[5]: 151595 => OS X blessed folder is /Volumes/Server HD 1/System/Library/CoreServices
64-bit VSDB volume id:  0xFCAA4452B1AD0B75
# 

パーティションスキームの違い、か?

数時間 bless と戯れてみたけれども、埒があかない。


もっとディスク寄りのところに何か問題があるのではないかと思い直し、麦茶を飲んで一息ついてから、diskutil list の内容を再度表示。


こちらは、ブートしないと騒いでいる、コピー先のRAID0のディスクたち。

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *153.4 Gi   disk0
   1:                        EFI                         200.0 Mi   disk0s1
   2:                 Apple_RAID                         153.1 Gi   disk0s2
   3:                 Apple_Boot Boot OSX                128.0 Mi   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *153.4 Gi   disk1
   1:                        EFI                         200.0 Mi   disk1s1
   2:                 Apple_RAID                         153.1 Gi   disk1s2
   3:                 Apple_Boot Boot OSX                128.0 Mi   disk1s3


こちらは、ブートしている、コピー元のRAID0の片肺。

/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *76.7 Gi    disk3
   1:        Apple_partition_map                         31.5 Ki    disk3s1
   2:                 Apple_Boot Boot OSX                128.0 Mi   disk3s2
   3:                 Apple_RAID                         76.6 Gi    disk3s3


…。…………ああ、不覚。


IntelMac登場以降、Macパーティションに GUIDパーティションというバリエーションが増えている。
PPC MacはGUIDパーティションのディスクを読めるがブートできない。反対に IntelMac は、従来のAppleパーティションのディスクを読めるがブートできない。


こういう背景があるので、ディスクユーティリティは、自分が動作しているCPU環境によってデフォルトのパーティションスキームを選んでいる。

ユーザに無駄な選択をさせないという点で、この挙動は便利といえば便利。けれども、今回のように、異機種環境でサルベージするなんていうときには、ハマり道へと誘う危険仕様。

ちなみに、ディスクユーティリティのオンラインヘルプには、パーティションスキームの変更方法が書かれていないっぽい。まあ、変更方法を記述したブログが結構あるので、参照すれば解決できるのではあるけれども。

*1:追って書く通り、パーティションスキームの問題だった。