注:(いじる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で(常にこれを使うにチェック)で設定しておきます。これで、楽になりました。
コメント