大きめのEFIパーティションを作り直す

Hackintosh

注:(いじるHDDはできるだけClonezillaなどでフルバックアップを取るか、少なくともEFIだけのUSBを作り元に戻せるようにしておきましょう)

これはとりあえずです。もっとうまい方法があったら教えてください。

Versa Pro(Skylake-Laptop)のEFIがいっぱいいっぱい(OpenCoreとCloverとWindows11とUBUNTU20.04)なので、大き目500MBほどのを作り、移動します。
 作り直すと言っても、元のEFIは消しません(Windowsは、GTPのパーティション数でカウントして起動してるので、整合できなくなります。)
 また、macOSのアプリはオフセット0からでないとEFIと認めていないので、やや難ですが、前のEFIの名前を”EXEFI”として自動アンマウントし、今回作ったEFIのマウント/アンマウントシェルスクリプトで楽ができるようにします。
 初めに、どこからパーティションをリサイズするかですが、APFSのコンテナが置かれてしまうともうリサイズできませんので、macOSは諦めました。

① Windows11でウインドウキー+Sなどで「ディスクの管理」を起動します。WindowsのNTFSはext4と違って、システムでもマウントしたままリサイズできるのです!!(UNIXには到底できない芸当です)500MBほど空き領域を作ります。

② UBUNTU20.04.1LTS(日本語リミックス)(以下UBUNTU)のインストールUSBメモリを作りましょう。Windows上でできます。

③ UBUNTUのUSBメモリをさし、そのUSBメモリで起動します。UBUNTUを試すを押します。(以下Liveモード)

④ 左上のアクティビティをクリック、真ん中にgpartedと打つと、gpated(パーティショナー)が起動します。

⑤ Windowsで開けた500MBを新規:基本パーティション:ファイルシステムFAT32:PartitionName”EFI2”:ラベル”EFI”で作ります。そして、変更を適用します。これで一度、gpartedを閉じます。

⑥ 左上のアクティビティをクリック、真ん中にdiskと打ちdiskをだします。もとのEFIを指定して、▶ボタンでマウントします。ここでは、”/media/ubuntu/EFI”にmountされました。次に新しい500MBで作ったEFI2(名前上はEFIだと思います)を▶ボタンでマウントします。ここでは、”/media/ubuntu/EFI2”にマウントしました。

⑦ 左上のアクティビティをクリック、真ん中にtermと打ち端末(Terminal)をだします。以下のコマンドで内容を移します。

$ sudo cp -R /media/ubuntu/EFI/* /media/ubuntu/EFI2/
先のEFIを確認します。
$ ls /media/ubuntu/EFI2/EFI
よければ、元のEFIを消します。
$ rm -rf /media/ubuntu/EFI/*

ターミナルのウインドウを消します。

⑧ 先ほどの方法でgpartedを起動して。仕上げします。もとのEFIをFAT32でフォーマット後(念のため)、フラグをhiddenにいれます。(多くのOSは無視します)新しいEFI2のフラグを”esp,boot”にします。本来GTPでこれがあればBIOSもEFIとして認めます。

⑨ 再起動します。BIOSにはいりBootオーダーをHDD名に合わせておけばいいと思います。(これでうまくいきました)

⑩ それぞれの起動を確かめます。Windowsでは、管理者で起動したCMD(ターミナル)で、以下もしておくといいでしょう。

sfc /scannow
DISM.exe /Online /Cleanup-image /Restorehealth

⑪ Ubuntuの”/boot/efi”のマウント
 Ubuntuでは”/boot/efi”に必ずEFIパーティションがマウントされますので、直します。
/etc/fstabの該当するUUIDを

$ sudo blkid|grep sda*

等として、実SSDのみのUUIDを見つけて、新しく作ったEFI2のUUIDをfstabに指定してあげてください。ここさえ合わせれば、GRUBがアップデートした時も対応するはずです。

⑫ macOSの方の処置
 こっちの方が厄介です。
(1) まずhiddenにしても、マウントしてしまいますので、Finderで名前を”EXEFI”と変えておいて。オートマタを作ります。新規オートマタで、Appleスクリプトを動かすをドラックドロップして。”ここに入れます”などど書かれた部分に以下を入れます。

    tell application "finder"
    do shell script "hdiutil unmount /Volumes/EXEFI"
    end tell

試しに▶を押すとEXEFIがアンマウントされているのを確認するといいでしょう。あとは、アプリケーション(フォルダ)にunmonunt-EXEFI.appなどと書き出して、ユーザとグループ、ログイン項目に入れてください。再起動して、アンマウントを確認しましょう。
(2) EFIのマウント、アンマウント シェルスクリプトを作る。簡単だったClover ConfigratorなどのEFIマウンターが使えません。面倒なので、シェルスクリプトを作ります。
 お決まりですが、まず以下をターミナルに入れて、EFIデバイスの名前を手に入れてください。disk0s8など(数字が変わります)

% diskutil list

ここでは、disk0s8でしたので、以下も自分の場合で読み替えてください。
Cot-Editerなどで以下のようなファイルを作ってください。

1つめ、名前はmount-EFI.shなどで以下のように作ります。
------ここから
#!/bin/sh
sudo diskutil mount /dev/disk0s8
open /Volumes/EFI
------ここまで
2つめ、名前はumonut-EFI.shなどで以下のように作ります。
------ここから
#!/bin/sh
sudo diskutil umount /dev/disk0s8
------ここまで

この2つのスクリプトを自分の使いやすいフォルダ(私の場合”~/EFI-MOUNT-UMOUNT”に入れます、そして、実行属性を与えます。

% cd ~/EFI-MOUNT-UMOUNT
% sudo chmod 777 *.sh

でも、このままだと、Cot-Editerが立ち上がってしまうので”このアプリケーションで開く”を選択して、ユーテリティ内のターミナル.appで(常にこれを使うにチェック)で設定しておきます。これで、楽になりました。

 

コメント

Translate »
タイトルとURLをコピーしました