GRUBをEFIパーティションに再インストールするにはどうすればよいですか?


32

GRUB 2を再インストールしたいのですが、Ubuntu Live CDまたはUSBでGrub 2を修復、復元、または再インストールする方法を見つけました 。私の場合、ブートローダーはEFIパーティションにインストールされています。このガイドで提供されているコマンドを使用する場合、GRUBはEFIパーティションに自動的に再インストールされますか、それともUbuntuがインストールされているルートパーティションにインストールされますか?明らかに、私はこれが起こることを望まない。


3
提供されているリンクの手順は、レガシーBIOSモードでのみGRUBを再インストールする場合に有効です。これは、ケースでは機能しません。EFI BIOSモードでUbuntuのインストールにGRUBを再インストールするには、答えを読んでください。:)
cl-netbox

どうもありがとうございました!:)いくつか質問があります。UbuntuをUEFIシステムにインストールしたときに、BIOSに2つのエントリが見つかりました。unic ubuntuエントリを作成する方法はありますか?MBRパーティションテーブルの場合(EFIまたは他のブートパーティションがないため)、sudo mount / dev / sd ** / mnt / boot / efiを除いて同じコマンドを使用できますか?
ジェネローゾ

sudo efibootmgr(すべてのエントリをリスト)|を使用して、2番目のUbuntuエントリを削除することができます。sudo efi bootmgr -b <entry-number> -B ....そして、レガシーBIOSモードでGRUBを再インストールするには、次のコマンドを実行します:sudo mount / dev / sd ** / mnt | sudo grub-install --boot-directory = / mnt / boot / dev / sd *(* = disk | ** = system partition)!:)
cl-netbox

完璧:)とにかく、UEFIシステムとEFIパーティションがあるので、新しいWindowsインストールを実行するときにgrubが上書きされるのを避ける方法はありますか?
ジェネローゾ

まあ、Microsoftは自社製品以外には何も気にしないので、Windowsに害を与えることなくLinuxシステムをインストールできます-残念ながらこれは逆ではありません-したがって、インストール後にWindowsをインストールするときUbuntuでは、その後GRUBブートローダーを復元する必要があります。:)
cl-netbox

回答:


54

この方法で、EFIモードでUbuntuインストールにGRUBブートローダーを再インストールします...

Ubuntuインストールメディアから起動し、「インストールせずにUbuntuを試す」を選択します。
(インストールメディアをEFIモードで起動し、UEFIを前面に持つUbuntuエントリを選択します。)

Liveデスクトップを開いたら、ターミナルを開いて次のコマンドを実行します。

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

注:sdX=ディスク| sdXX= efiパーティション| sdXXX=システムパーティション

GPartedを使用してパーティションを識別するには、ツールがインストールメディアに含まれています。
コマンドを実行すると、GRUBは別のEFIパーティションにインストールされます。


+1ですが、なぜUbuntuからインストールしないのですか?

1
@MarkYisri:ありがとうございます!:)これは、物を壊すことなくGRUBブートローダーを再インストールする最も安全な方法であり、システムが適切に起動しない場合に...を行う唯一の方法だからです!:)
cl-netbox

1
このソリューションでは、「grub-install」はEFIモードでインストールすることになっています。
user334639

3
重要な点は、インストールメディアを正しいブートモードでブートすることです。再インストールgrub-efiする場合はUEFIモードでブートする必要があり、再インストールする場合はgrub-pcレガシーモードでブートする必要があります。
mook765

1
1つの変更を除いて、これは私にとってはうまくいきましたgrub-install /dev/sdXX。つまり、ディスクではなく、EFIパーティションがgrubのインストールに使用され、機能しました。
ダックドジャース

3

これは私のために働いた唯一の方法です:(システム:sdb8、ブート:sdb6、efi:sdb2)

sudo mount /dev/sdb8 /mnt 
sudo mount /dev/sdb6 /mnt/boot 
sudo mount /dev/sdb2 /mnt/boot/efi

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/sdb

grub-install --recheck /dev/sdb

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

何を--recheckするの?マニュアルにはdelete device map if it already exists
MrCalvin

ブートエントリをデフォルトとは異なるものと呼ぶと、たとえば--bootloader-id=Ubuntu_02ブートが失敗します。GRUBコンソールで起動するだけです...解決策はありますか?
MrCalvin

はい。grub-install --recheck必要なようです。動作しないUSB HDD EFIを修正しました。
solsTiCe

2

手順については@ cl-netboxに感謝します!

Linux Mint 18.2 Sonyaを18.3 Sylviaにアップグレードした後、システムが起動しなかったため、上記の手順を実行しましたが、まだ成功しませんでした。しかし、私のマシンは(おそらくLVMを使用しているために)別のパーティションに/ bootがあることに気付きました。

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXY /mnt/boot
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub 

注:sdX = disk | sdXX = efiパーティション| sdXY =ブートパーティション| sdXXX =システムパーティション


誤ってrm -Rf / boot / efiを実行したUbuntu Bionicシステムが実行されていました。私のシステムはまだ実行中だったので、最後の2つのコマンド(grub-install / dev / mapper / ubuntu--vg-root AND update-grub)を使用してみました。再起動し、すべてが完全に機能します。ヒューイと感謝:)
ロエルヴァンデパール

2

また、ライブcdから起動して回復する場合、grub-efi-amd64-binパッケージが欠落していて、

"grub-install --target=x86_64-efi /dev/sdb" 

「grub-install:エラー:/usr/lib/grub/x86_64-efi/modinfo.shが存在しません。--targetまたは--directoryを指定してください」というエラーメッセージが表示されて失敗します。

この場合、chrootの外部でこれを実行します

sudo apt get grub-efi-amd64-bin

そして/ usr / lib / grub / x86_64-efiをchrootマウントに追加します。

ところで、「/ dev / sdb」パラメータは廃止され、無視されています。


0

ci-netboxの回答に加えて。
お使いのペンドライブのOSバージョンがディスクにインストールされているものと一致しない場合、grub-installは適切なgrubインストールを特定するのが難しい場合があります。

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

使用するインストールを手動で識別してみてください

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

次にgrub-installを再起動します:

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.

0

EFIパーティションが失われた場合、簡単に元に戻すことができます。fdiskまたはpartedを使用して、タイプ「EFI partition(1)」の新しいGPTパーティションを作成し、次の形式でフォーマットできます。

sudo mkfs.msdos /dev/sdX

それをマウントすると、実行に従うことができます:

sudo grub-install /dev/sdX

他のソリューションと同様。


0

私の推測では、問題の原因は、Ubuntuのインストールがfstabの場合efiパーティションをマウントしていないことです。そしてgrubを更新します。更新時に。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.