Macbook ProでEFIブートを使用しています。 (端末が古すぎてUEFIを使用できません。)
内部ドライブにはUbuntu Linux 20.04があります。
ライブUSB経由で外付けドライブにUbuntu Linux 20.04をインストールするという不幸な考えがあります。 (増分バックアップを使用して複製しようとしていますが、Linux用の既存のソフトウェアがないようです。)
接続された外付けドライブから起動すると、GNU GRUB 2.04起動メニューが表示されます。デフォルトでは、外部ドライブが最初に起動しますが、内部ドライブから起動することを選択することもできます。
外部ドライブが接続されていないと、GRUBシェルにぶら下がって起動できません。私が読んでLinuxで起動できないGRUB 2を救出する方法しかし、私はいつも「カーネルパニックシャットダウン...ルートfsをマウントできません...」というメッセージで終わります。
とにかく、GRUBシェルなしで起動できる限り、Ubuntu Linuxを正常に起動するには、内部ドライブを復元する必要がありました。
これは簡単なようです。
内蔵ドライブから起動し、外付けドライブを取り外した後、この方法を試しましたが、sudo update-grub
役に立ちませんでした。
起動順序を変更してみましたが、sudo efibootmgr
常にGRUBシェルで終わるため、状況はさらに悪化します。 (幸いなことに、この変更は元に戻すことができます。)
可能であれば、最終的にGRUBを削除したいと思います。 MacではGRUBは必要ありません。起動するにはAltキーを押すと、起動可能なすべてのパーティションが簡単なグラフィックメニューに表示され、EFIパーティションを簡単に選択してGRUBなしで起動できるためです。
最初の回答以降に修正されました(ありがとうございます)
「何かが内部ディスクのGRUBを上書きしました」はい、これは実際のUbuntu Linuxインストーラであり、実際には危険です。もう少し気をつけなければなりませんでした。外部ドライブにUbuntu Linuxをインストールする前に、内部ドライブをアンマウントする必要がありました。実際、内部ドライブの/boot/efiで何かが変更されたことがわかりました。正確に指示に従ってファイルを回復しました。Mac OSの後、Ubuntu EFIは起動しません。。
再起動後、外付けドライブを接続した後に新しい状況が見つかりました。 GRUBメニューがなく、やむを得ずGRUBシェルを使用するようになりましたが、幸いls
(以前専用の外付けドライブではなく)内蔵ドライブを使って適用できました。このチュートリアルLinuxで起動できないGRUB 2を救出する方法内蔵ドライブから起動します。
これで自動的に起動する必要があり、可能であれば外部ドライブから起動するオプションを維持する必要があります。
内部ドライブの grub.cfg:
mac2011-linux# pwd
/boot/efi/EFI
mac2011-linux# more ubuntu/grub.cfg
search.fs_uuid 770e447c-7411-4cc7-bce4-b71504d828c3 root hd2,gpt4
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
別のブートファイルシステムがないため、プレフィックスは正しいです。外付けドライブにblkid
あるものを見ることができます。これは正確ではありません。どうすればきれいに修理できますか?uuid 770e447c-7411-4cc7-bce4-b71504d828c3
/dev/sdb4
mac2011-linux# ls
APPLE BOOT tools ubuntu
mac2011-linux# mac2011-linux# ls -l BOOT
total 5367
-rwx------ 1 root root 1677176 mai 25 14:54 bootx64.efi
-rwx------ 1 root root 1334816 mai 8 21:48 BOOTX64.EFI-old
-rwx------ 1 root root 1213032 mai 24 23:04 fbx64.efi
-rwx------ 1 root root 1269496 mai 24 23:04 mmx64.efi
mac2011-linux# ls -l ubuntu
total 4183
-rwx------ 1 root root 108 mai 24 23:04 BOOTX64.CSV
-rwx------ 1 root root 126 mai 24 23:04 grub.cfg
-rwx------ 1 root root 1677176 mai 24 23:04 grubx64.efi
-rwx------ 1 root root 1269496 mai 24 23:04 mmx64.efi
-rwx------ 1 root root 1334816 mai 24 23:04 shimx64.efi
Ubuntuディレクトリが実際に読み込まれたかどうかはわかりません。私はbootx64.efiが私が直接インストールし、GRUBターゲットを内部ドライブとして作成したgrubx64.efiのコピーなので読み取られることを知っています。
今GRUBがあるので、少なくともLinuxに慣れるまでこれを維持しましょう。しかし、追加の混乱を避けるためにrEFIndを追加しないことをお勧めします。
私はこれを見つけましたGRUBに関するArchLinux記事特にUEFIシステム部分。これはGRUBのインストールを確認するアイデアをもたらしました。私はsudo apt install grub2-common grub-efi-amd64
これを繰り返し、内部ドライブの正しいパーティションへの新しいポインタsudo update-grub
を得ました。/boot/efi/EFI/ubuntu/grub.cfg
これにより、内部ドライブのクリーン再起動の問題を解決できます。
私のシステムにGRUBが正しくインストールされていないようです。これはUbuntu Linux 20.04ディストリビューションのマイナーな欠陥かもしれません。
外付けドライブUbuntu Linuxも機能していることを確認する必要があります。
ベストアンサー1
内部ディスクのGRUBを上書きする問題が発生したため、外部ディスクからその構成をロードしようとすることができます。
まず、外部ディスクにEFIシステムパーティションが完全に満たされており、/etc/fstab
ESPが正しくインストールされていることを確認してください。外部ディスク到着する/boot/efi
。見つからない場合は、grub-install --force-extra-removable /dev/sd<external disk>
外部ディスクにGRUBを再インストールしてください。しかし、最初に正しいESPがインストールされていることを確認してください/boot/efi
。
再起動して使用してくださいefibootmgr -v
。 BootCurrent の値とその開始項目を調べて、システムが実際に動作していることを確認します。した外部ディスクから完全に起動し、内部ディスクのブートローダに置き換えられません。これで、外部ディスクで完全に実行されているGRUBがあることがわかったので、内部ディスクとは完全に独立している必要があります。
次に、ESPパーティションをマウントします。内部disk(まだマウントされていない場合)とcheck <mountpoint of internal ESP>/EFI/ubuntu/grub.cfg
。これは、デフォルトのGRUB構成ファイルをロードする場所を示す約3行の長さの小さなGRUB構成ファイルでなければなりません。通常、UUIDを介してファイルシステムを表します。次のようにする必要があります。
serch.fs_uuid <UUID of the filesystem containing /boot> root
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
はい、最初の行で言及しても、必ずしもroot
Linuxのルートファイルシステムを意味するわけではありません。これは、デフォルトのGRUB構成ファイルとGRUBモジュールディレクトリを含むファイルシステムであるGRUBルートを表します。 Debian/Ubuntu では、Linux ルートファイルシステムであっても、別のファイル/boot
システム/boot
の場合は別のファイルシステムであってもかまいません。
/boot
ディレクトリがLinuxルートファイルシステムに含まれている場合は、set prefix=$(root)'/boot/grub'
2行目に変更することができます。変数が正しく設定されると、prefix
GRUBはGRUBモジュールを自動的にロードできます(たとえば、他のファイルシステムタイプのサポート)。
これは、内部ディスクで失敗したGRUBを修正するのに十分です。役に立たない場合は、外部ディスクから起動し、内部ディスクのルートファイルシステムをにマウントし、/mnt
内部/boot
ディスク(別のファイルシステムとして存在する場合)をにマウントし/mnt/boot
、内部ディスクのESPをにマウントする必要があります/mnt/boot/efi
。内部ディスクのファイルシステムツリー全体がマウントされています/mnt
。それからそこにchrootします。
mount -o rbind /dev /mnt/dev
mount -o bind /proc /mnt/proc
mount -o rbind /sys /mnt/sys
chroot /mnt /bin/bash
grub-install /dev/sd<internal disk>
これで、内部ディスクにGRUBを再インストールできます。その後、外部ディスクを取り外した状態でシステムを再起動できる必要があります。
GRUBをアンインストールすることは技術的に可能ですが、ブートローダがまったくない場合(カーネルに組み込まれているUEFIスタブを使用するなど)、カーネルブートオプションを使用するのは非常に厄介です。まず、UEFIブートエントリを編集し、必要なブートオプションを追加/変更できるポイントでブートしてから、「ブートローダなし」Linuxで再起動する必要があります。 .rEFInd
systemd-boot