EFIシステムパーティション(頭文字を並べてESP)には、Cloverブートローダとかconfig.plistとかkextファイルなどが置かれてます。ESPは通常はマウントされていませんので、これをメンテするときに、マウントする必要があります。例えば、ESPが/dev/disk0s1にある場合は、ターミナルから
diskutil mount /dev/disk0s1
とすればマウントできます。すると/Volumes/EFI以下にマウントされます。必要ならばここにcdしたり、これをファインダーに表示させます。
でもこの一連の作業が面倒なので、こんなシェルスクリプトを作って使っています。マウントしたESPは、マウントした順番に/Volumes/EFI, /Volumes/EFI 1, /Volumes/EFI 2のマウントポイントに割り当てられます。このスクリプトでは、マウントした後にCLOVERのディレクトリにcdしています。 この後、open .などすればファインダに表示することもできます。
#!/bin/sh if [ $# -eq 0 ]; then DRIVE="0" else DRIVE=$1 fi diskutil mount /dev/disk${DRIVE}s1 MP=`diskutil info disk${DRIVE}s1 | grep "Mount Point"` MP3=`echo $MP | awk '{print $3}'` MP4=`echo $MP | awk '{print $4}'` if [ -n "$MP4" ]; then cd $MP3" "$MP4"/EFI/CLOVER" else cd $MP3"/EFI/CLOVER" fi
これをファイルにして、名前をつけて、実行可能にします。例えば、mountESPという名前のファイルにした場合、
/dev/disk2s1 をマウントしたいならば、ターミナルから以下のようにタイプします。
. mountESP 2
引数を省略すると/dev/disk0s1がマウントされます。ドライブが1個しかないマシンでは、必ず/dev/disk0に割り当てられるので、番号を省略できると便利と考えました。
. mountESP
ちなみに冒頭のピリオド空白(. )は重要です。通常よくやるように./mountESPとすると、最後のcdコマンドが効きません。実際には効いているのですが、シェルスクリプト実行環境の中で効いているので、ターミナルのプロンプトに戻ると元のディレクトリに帰って来てしまいます。ピリオド空白(. )は、ターミナルの実行環境のままで、キー入力そのもののようにスクリプトを実行するという意味だそうです。
追記:10.13.6からESPをマウントするのに管理者パスワードが必要になりました。なので、上記のスクリプトも、diskutil mountの行を、以下に変更する必要があります。(2018/7/10)
sudo diskutil mount /dev/disk${DRIVE}s1
10.13.6にアップデート後、EFIがマウントできなくて困っていました。
助かりました。
ありがとうございました。
お役に立てて何よりです。