Linux で Grub ブートローダーを復元する方法
GNU Grand Unified Bootloader (GRUB) は、マザーボードの BIOS をオペレーティング システムのカーネルにリンクする強力で柔軟なユーティリティです。マザーボードのメモリに小さなプログラムをロードすることで機能し、それを使用してより大きなマルチブート バイナリをブートストラップします。
ただし、GNU GRUB がオペレーティング システムのカーネルのロードに失敗する場合があります。たとえば、Linux と Windows のデュアル ブート セットアップでは、多くの場合、後者が GNU ブートローダーを一掃します。このチュートリアルでは、いくつかの最も一般的な Linux ディストリビューションを使用して GRUB を再インストールすることにより、システムを回復する方法を示します。
Ubuntu および Debian での GRUB の復元
Ubuntu と Debian に GNU GRUB を再インストールする最も簡単な方法の 1 つは、いずれかのディストリビューションのライブ コピーを起動することです。これにより、システムのルート パーティションをマウントし、ライブ ディストリビューションの GRUB バイナリを使用してシステムのブートローダーを再作成できます。
- ライブ ディストリビューション環境でターミナルを開きます。
- システムのルート パーティションのデバイス名を見つけます。これを行うには、次のコマンドを実行します。
sudo fdisk -l | grep "Linux filesystem$"
- システムのルート パーティションをライブ ディストリビューションの「/mnt」ディレクトリにマウントします。
sudo mount /dev/sda1 /mnt
- GRUB バイナリを再インストールします。
sudo grub-install --force --boot-directory=/mnt/ /dev/sda1
- PC をシャットダウンします。USB ドライブを取り外し、再度起動します。Linux OS が起動するはずです。
- システムの GRUB 構成ファイルを更新して、マシンの現在の状態を反映させます。
sudo update-grub
Arch Linux で GRUB を復元する
Ubuntu と Debian 以外に、 Arch Linuxのライブ コピーを使用してブートローダーを復元することもできます。これの利点の 1 つは、ライブの Arch Linux はグラフィック表示に依存しないため、ヘッドレス マシンでも SSH 経由で GRUB を簡単に復元できることです。
- lsblkを使用して、システムのルート パーティションを特定します。
lsblk
- ルート ディレクトリをライブ環境にマウントします。
mount /dev/sda1 /mnt
- Live システムのプロセスをシステムのルート ディレクトリにバインドします。
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
mount --bind /run /mnt/run
mount --bind /dev /mnt/dev
- 現在のセッションのルートをシステムに変更します。
chroot /mnt /bin/sh -i
- 次のコマンドを実行して、システムのブートローダー バイナリを再インストールします。
/sbin/grub-install --target=i386-pc /dev/sda
- システムの GRUB 構成ファイルをリロードします。
/sbin/grub-mkconfig > /boot/grub/grub.cfg
- Ctrl+を押して、Dシステムのルートからログアウトします。
- システムを再起動して、新しいブートローダーをテストします。
reboot
Fedora での GRUB の復元
Ubuntu や Debian と同様に、Fedora での Grub の復元も同様に簡単です。
- マシンのルート パーティションを見つけます。
sudo fdisk -l | grep "Linux filesystem$"
- システムのルート パーティションをマウントし、それとライブ セッションの間にバインド マウントを作成します。
sudo mount /dev/sda3 /mnt
sudo mount --bind /sys /mnt/root/sys
sudo mount --bind /proc /mnt/root/proc
sudo mount --bind /run /mnt/root/run
sudo mount --bind /dev /mnt/root/dev
- ルート ファイルシステムを「/mnt」ディレクトリに移動します。
sudo chroot /mnt/root bashmount /dev/sd3 /mount /dev/sda2 /boot
- システム内の既存のブートローダー構成ファイルをすべて削除します。
rm -f /etc/grub.d/*rm -f /etc/sysconfig/grub
- システムの新しい GRUB 構成ファイルを作成します。
grub2-mkconfig -o /boot/grub2/grub.cfg
- GRUB をマシンのブート パーティションにインストールします。
grub2-install --target=i386-pc /dev/sda
参考までに: Systemd-boot は、Linux 用の次世代ブートローダー バイナリです。それが特別な理由と、systemd-boot が由緒ある GRUB に対してどのようにスタックするかを学びます。
よくある質問
システムが LVM を使用している場合、GRUB を復元することはできますか?
はい。システムが LVM を使用している場合でも、GRUB を復元できます。これを行うには、 を実行して、ls /dev/mapper/*--vg-root
マシンのルート パーティションの絶対ファイル パスを特定します。従来の「/dev/sda1」ではなく、この絶対パスを使用してください。
GRUB を復元すると、ディスク内の他のオペレーティング システムが消去されますか?
いいえ。ブートローダーは、設計上、オペレーティング システムのカーネルの最初の数バイトを見つける場所しか認識していません。ブートローダーを交換しても、ディスク上の既存のオペレーティング システムには影響しません。
GRUB を UEFI システムに再インストールすることはできますか?
はい。これを行うには、UEFI システムの「/boot/efi」パーティションが正しくマウントされていることを確認する必要があります。--boot-directory
また、フラグの値をgrub-install
「/boot/efi」に変更する必要があります。
-o
Fedora の場合、フラグを「/boot/efi/EFI/fedora/grub.cfg」grub2-mkconfig
に変更する必要もあります
。
画像クレジット: Unsplash . Ramces Redによるすべての変更とスクリーンショット。
- フェイスブック
- つぶやき
コメントを残す