私のハードドライブはGPTを使用しています。起動モードをUEFI専用に設定しました。私のパーティションは次のとおりです
/dev/sda
/dev/sda1 Grub 300MiB FAT32
/dev/sda2 Linux 97.66GiB ext4
/dev/sda3 Windows 97.66GiB NTFS
/dev/sda4 Microsoft_Reserved 16MiB unknown
/dev/sda5 Data 726.13GiB NTFS
/dev/sda6 Swap 9.76GiB linux-swap
Sparky Linuxのインストール中にすでにgrubを設定しています/boot/efi
。すべてがうまくいきます。ブート優先順位で最初に設定すると、grub メニューから Linux、回復、Windows 10、BIOS から選択できます。/dev/sda1
/dev/sda2
これでSparky LinuxをSolus Linuxに置き換えました。しかし、問題は、グラブがもう機能しないということです。 grubパーティションから起動すると、次のエラーが発生します。
error: file `/boot/grub/x64_86-efi/normal.mod` not found.
Entering rescue mode
grub rescue>
Linuxを起動して実行した後、次のようにsudo update-grub
なりました。
$ sudo update-grub
Generating grub configuration file ...
Found background: /usr/share/backgrounds/splash.tga
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
Found Windows Boot Manager on /dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi
done
しかし、これは問題を解決しないようです。私のHDDには現在Linux、Windows、Grubの3つのブートローダがあるようです。少なくともBIOSのブート優先順位メニューに表示されます。
編集する:Grubを再インストールしてみましたが、今できます。二つgrub ブートローダのどれも動作しません。
出力lsblk
:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 300M 0 part
├─sda2 8:2 0 97.7G 0 part /
├─sda3 8:3 0 97.7G 0 part
├─sda5 8:5 0 16M 0 part
├─sda6 8:6 0 726.1G 0 part
└─sda7 8:7 0 9.8G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
問題を解決するにはどうすればいいかわかりません。起動時にOSを選択できるようにしたいです。
ベストアンサー1
このlinux.comリンクgrub-rescue で破損した grub を修復する方法を説明します。
基本的に必要
ls (hd0,1)/
ls (hd0,2)/
次に、/boot/grub ディレクトリと vmlinuz および initrd.img ファイルが見つかるまで続けます。リンクはこれらのファイルが/boot/vmlinuz-xyzblahにあると予想していますが、現在のカーネルとinitrdのみを指すリンクとして表示されます。そうでない場合は、/boot/を見て、それに応じて以下を修正してください。
lsblk /boot/grubと判断すると、おそらく(hd0,1)にあり、残りのLinux OSは(hd0,2)にあります。
オペレーティングシステムに合ったパーティションを見つけたら、次のコマンドを使用して確認できます。
cat (hd0,2)/etc/fstab
この仮定が正しい場合
set prefix=(hd0,1)/boot/grub #tells grub where it can find insmod etc
set root=(hd0,2) #tells grub where to find /
insmod normal #loads normal module
normal #executes normal
insmod linux #loads the linux module
linux /vmlinuz root=/dev/sda2 #executes linux, loads the kernel and tells it where to find /
initrd /initrd.img #loads the initrd
boot
root=/dev/sdx コマンドを参照してください。このオプションを省略するか、間違ったパーティションを指定すると、カーネルパニックが発生します。もしそうなら、リースそして再起動してください。
上記の方法がうまくいかない場合は、最初の行を次に変更してみてください。
set prefix=(hd0,2)/boot/grub
エントリー後に grub を再インストールできます。
私はgrubを修復するときにgrub-customizerを使うのが好きです。 grub-customizerを使用すると、Linuxでgrubの起動オプションと設定を表示して再起動する前に問題を解決できるためです。