私のHDDは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
/boot/efi
にSparkylinuxをインストールしているときに、/dev/sda1
の/dev/sda2
にgrubを設定しました。すべてが正常に機能しており、起動優先順位の最初に設定すると、grubメニューからLinux、そのリカバリ、Windows 10、BIOSのいずれかを選択できました。
SparkyLinuxをSolusLinuxに置き換えました。しかし、問題は、grubが機能しなくなったことです。 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を再インストールしようとしましたが、2つの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を選択するオプションが欲しいだけです。
このlinux.comリンク は、grub-rescueを介して壊れたgrubから回復する方法を説明します。
基本的にあなたはする必要があります
ls (hd0,1)/
ls (hd0,2)/
/ boot/grubディレクトリと、vmlinuzファイルおよびinitrd.imgファイルが見つかるまで続けます。リンクはこれらのファイルが/boot/vmlinuz-x.y.z.blahにあることを想定していますが、おそらく現在のカーネルとinitrdを指す/のリンクとして表示されます。そうでない場合は、/ boot /を調べて、それに応じて以下を修正してください。
Lsblk/boot/grubから判断すると、(hd0,1)がオンになっていて、Linux OSの残りの部分が(hd0,2)になっている可能性があります。
OSでパーティションを見つけたら、次のコマンドでこれを確認できます。
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コマンドに注意してください。これを省略したり、間違ったパーティションを指定したりすると、カーネルパニックが発生します。もしそうなら、 [〜#〜] reisub [〜#〜] そしてやり直してください。
上記が機能しない場合は、最初の行をに変更してみてください
set prefix=(hd0,2)/boot/grub
入ったら、grubを再インストールできます。
Grubを修正するときにgrub-customizerを使用するのが好きです。これは、Linuxを使用しているときにgrubで起動オプションとセットアップを確認し、再起動する前に問題を修正できるからです。
次の手順を実行すると、GRUB)を再インストールできるはずです。
/ boot/efiに/ dev/sda1をマウントします
sudogrub-installを実行します
それを試してみるとどうなりますか?
(注:重要なデータを最初にバックアップすることをお勧めします)