タグ: Disk Utility

OS X 10.11 El CapitanでYosemiteのDisk Utility ver.13を使えるようにする

OS X 10.11 El CapitanではDisk Utilityが書き換えられ、「RAID」タブやアクセス権の検証/修復機能が消えたことは知っていましたが、パーティション機能も制限されていたとは知りませんでした。

du15

図は、2GBのUSBメモリを2分割にして、片方をFAT(MS-DOS)片方をhfs+でフォーマットしたものですが、サイズを変更しないでデータの消去/フォーマットの変換は可能ですが、パーティションのサイズ変更もパーティション数の変更もできません。
OS X 10.11 El CapitanのDisk Utility ver.15以外の手段を考えるしかなく、探したところOS X 10.10 YosemiteのDisk Utility ver.13をEl Capitanで使用可能とする方法があるようです。

vcheck

(Disk Utility ver.13を単にコピーしただけでは、図のようにベージョンチェックに引っかかって起動できません)

しかし、見つけたinsanelymacのパッチファイルはログインしないとダウンロードできない面倒な仕様のようなので、別なページで見つけたパッチ情報を参照して自力でやってみることにしました。

補足情報として、insanelymacのページも参考にします。

(思った以上に情報が少ないので、ここにメモする次第です)

・先ずは、Disk Utility ver.13を確保

Justus Beyer氏の記事ではハッシュ値の確認をしていて、YosemiteのDisk Utility ver.13以外の、例えばMavericksのDisk Utility ver.13ではパッチが効かないようなため、ハッシュ値の一致するYosemiteのDisk Utility ver.13を用意する必要があるようです。
Time MachineでYosemiteのバックアップがあればいいのですが、生憎、Time Machineそのものをイマイチ信用していないので使ったことがないため、都合よくユーティリティフォルダのバックアップなど持っていません。Yosemite稼働マシンも身近にないので、ダウンロード済みのOS X Yosemite インストール.app(英語名ではInstall OS X Yosemite.app)を開いて、Disk Utility ver.13を探します。
OS X Yosemite インストール.appのパッケージを開いて、‘InstallESD.dmg’を探します。パスは、次のようになります。

‘/Applications/Install OS X Yosemite.app/Contents/SharedSupport/InstallESD.dmg’

このInstallESD.dmgファイルをダブルクリックして‘OS X Install ESD’ボリュームをマウントすると、不可視ファイルで‘BaseSystem.dmg’というイメージファイルが第1階層にあります。

‘/Volumes/OS X Install ESD/BaseSystem.dmg’

(ファインダ上で不可視ファイルを見えるようにするためにはいろいろな方法がありますが、拙作の‘CatInvisible.app’を使うと簡単に可視化できます)
‘BaseSystem.dmg’をマウントすると、Applicationsフォルダ内の‘Utilities’フォルダの中に‘ディスクユーティリティ.app’があります。これをデスクトップにでもコピーします。これでDisk Utility ver.13が確保できました。

・ハッシュ値の確認

念のため、‘ディスクユーティリティ.app’のハッシュ値を確認してみます。
‘ディスクユーティリティ.app’の実行ファイルのパスは、
‘~/Desktop/Disk Utility.app/Contents/MacOS/Disk\ Utility’
なので、ターミナルで

$ openssl dgst -sha256 ~/Desktop/Disk\ Utility.app/Contents/MacOS/Disk\ Utility

を実行すると、

SHA256(/Users/demo/Desktop/Disk Utility.app/Contents/MacOS/Disk Utility)= 48529e0206d5f238b96f59bd0a4be7817ebe5d63cf4abee0d8c1529c54bf2d78

という値が戻ってきました。
合っています。

hash

・パッチを当てる

Justus Beyer氏の記事ではHexエディターとして、フリーの‘Hex Fiend.app’’http://ridiculousfish.com/hexfiend/‘を使用していますが、私は使い慣れた‘HexEdit.app’’http://www.ideasfromthedeep.com/product_info.php?products_id=87‘を使うことにしました。
‘Hex Fiend.app’を使う場合は、’sudo’で‘Hex Fiend.app’の実行バイナリを使って、‘ディスクユーティリティ.app’の実行バイナリファイルを開かないと、アクセス権の制限で変更を保存できないのですが、‘HexEdit.app’はユーザ権限のままで変更を保存できます。その場合、オリジナルはファイル名の末尾に‘~’を付加して同じ場所に保存されますので、作業的にはこちらの方が楽で安全でしょう。
さて、置き換えデータは次の通りです。検索/置換で16進数を置き換えるか、そのまま上書きで変更します。

–Justus Beyer氏のデータ
変更前:D584C00F 85440100
変更後:D584C00F 84440100
(オフセットは、10進数で‘25056’です)

–insanelymacのデータでは
変更前:D584C00F 85440100
変更後:D584C0E9 45010000

Hexeditjump

試してみましたが、どちらでシステムバージョンチェックを回避して、10.11 El Capitanでも起動できるようになります。

パーティションの操作はこちらを使うことになりそうです。

DU13-2

・アクセス権の修復はどうなる

10.11 El Capitan上で起動したDisk Utility v.13は、Rootレスモード、つまりSIP(System Integrity Protection)でシステム領域が保護されたことで、「書き換え不能」となったわけで、アクセス権の検証/修復機能は利用できなくなっています。念の入ったことに、GUIから外されただけでなく、’diskutil’コマンドからも’verifyPermissions’と’repairPermissions’というアクセス権の検証/修復機能は取り除かれてしまっています。
調べてみると、’repair_packages’コマンドとしてコマンド自体は残されているのですが、Rootレスモードによってシステム領域である/binや/sbin、/usr/binなどが対象外となっています。
‘repair_packages’コマンドは、次の要領で使用します。

○アクセス権を検証する(管理者権限要)

$ sudo /usr/libexec/repair_packages –verify –standard-pkgs /

○アクセス権を修復する(管理者権限要)

$ sudo /usr/libexec/repair_packages –repair –standard-pkgs /

広告