web-dev-qa-db-ja.com

diskutilコマンドをOSXMavericksシングルユーザーモードで動作させる

私は現在、いくつかのシングルユーザーモードのメンテナンススクリプトを書いています。私の現在の目標は、シングルユーザーモードでdiskutilコマンドを使用して権限の修復とディスクのフォーマットを実行できるようにすることです。以前のバージョンのOSXでこのタスクを実行するのは、ルートパーティションをマウントし、次の起動デーモンを起動するだけでした。

com.Apple.diskmanagementd

com.Apple.diskarbitrationd

その後、アクセス許可を正常に修復するには、次のコマンドを実行するだけで済みました。

diskutil repairpermissions /

ただし、マーベリックスでは、このコマンドは機能しなくなり、その理由がわかりません。 diskutilコマンドを実行すると(パラメーターがない場合でも)、単純で役に立たないメッセージが返されます。

Killed: 9

ここで何が起こっているのか理解できません。 diskutilが必要とするディスクアービトレーションデーモンに加えて、メンテナンススクリプトは次のデーモンもロードします。

com.Apple.notifyd

com.Apple.syslogd

com.Apple.configd

com.Apple.kuncd

com.Apple.kextd

com.Apple.KernelEventAgent

com.Apple.distnoted.xpc.daemon

com.Apple.aslmanager

com.Apple.opendirectoryd

com.Apple.coreservicesd

com.Apple.securityd

com.Apple.fseventsd

com.Apple.cfprefsd.xpc.daemon

上記のデーモンをすべてロードしても、diskutilの動作に以前必要だった2つだけをロードしても、同じ応答が返されます。シングルユーザーモードから起動することを選択した場合(/ System/Library/LaunchDaemonsのコンテンツ全体をロードすることにより)、コンピューターが起動プロセスを終了した後、diskutilを使用できます。

Mac OSの内部動作に精通している人が、何が欠けているのかを判断できるでしょうか。

4
Alex Plumb

何が問題を引き起こしているのかわかりませんが、デーモンが欠落しているようには見えません。/System/Library/LaunchDaemonsを除くすべてをcom.Apple.WindowServer.plistにロードしようとしましたが、それでも同じように失敗しました。 diskutilを実行するだけでも失敗します。これは通常、使用状況の概要を出力するだけです。また、「Kill​​ed:9」は、それ自体がクラッシュしていないことを示していますが、他の何か(launchd?)がそれを殺しています。

とにかく、ちょっとした朗報があります。diskutil repairpermissionsは実際にはrepair_packagesプログラムのフロントエンドであり、シングルユーザーモードでは正常に動作するようです(デーモンがまったくロードされていない場合でも)。 :

/usr/libexec/repair_packages --repair --standard-pkgs

ディスクのフォーマットはおそらくもっと難しいでしょう。 gptnewfs_hfsなどの使用を検討する必要がある場合があります。

5
Gordon Davisson