web-dev-qa-db-ja.com

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

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

29
Generoso

このようにして、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 = disk | sdXX = efiパーティション| sdXXX =システムパーティション

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

48
cl-netbox

これは私のために働いた唯一の方法です:(システム: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
3
Chilu Pereira

また、ライブ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」パラメータは廃止され、無視されています。

2
mprot

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

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

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 =システムパーティション

2
Rob Pearman

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

Sudo mkfs.msdos /dev/sdX

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

Sudo grub-install /dev/sdX

他のソリューションのように。

0
cengique

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
Emmanuel

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

0
Shimon Doodkin