grub2-mkconfigエラー後のFedora GRUBの修正

grub2-mkconfigエラー後のFedora GRUBの修正

ChatGPTを使用してFedora 39で部分拡張を有効にしようとしましたが、彼は次のことをお勧めしました。

# NVIDIA's proprietary driver requires DRM KMS to be disabled for Wayland to work. 
# Edit the file /etc/default/grub and ensure the parameter nvidia-drm.modeset=1 is not set. 
# If it is, change it to nvidia-drm.modeset=0 or remove it. Then update the grub configuration with:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

これを実行してコマンドを実行しましたが、GRUBメニューにWindowsブートマネージャのみが表示されることを確認しました。問題なくWindowsから起動できますが、GRUBはFedoraを見つけることができません。

私が試しているソリューション

私はFedoraを使用してUSBブータブルドライブを作成し、高速Google検索(そして犯人を除く追加のChatGPT)の後、次のような見かけに合理的な解決策を偶然見つけました(私の/devパーティションはすでに入力されています)。

# Mount the root filesystem
sudo mount /dev/nvme0n1p7 /mnt/root

# Mount the EFI partition
sudo mount /dev/nvme0n1p6 /mnt/root/boot/efi

# Bind-mount the virtual filesystems
for dir in /dev /proc /sys /run; do
    sudo mount --bind $dir /mnt/root$dir
done

設定後に/mnt実行してsudo chroot /mntみると期待通りに動作しました。/etc/default/grubファイルを元の図形に再編集し、次のようにgrub.cfgファイルを再生成しようとしましたgrub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg。それにもかかわらず、次のエラーが発生します/usr/sbin/grub2-probe: error: cannot find a device for / (is /dev mounted?).。次のようにいくつかのインストール手順の組み合わせを試しましたが、成功しませんでした。

sudo mount --bind /dev /mnt/root/dev
sudo mount --bind /dev/pts /mnt/root/dev/pts
sudo mount --bind /dev/shm /mnt/root/dev/shm
sudo mount --bind /dev/disk /mnt/root/dev/disk
sudo mount --bind /proc /mnt/root/proc
sudo mount --bind /sys /mnt/root/sys
sudo mount --bind /run /mnt/root/run

私もフォローしてみました。このガイド、同様の問題を解決しようとし、コマンドが正常に動作します。何が間違っているのかわかりません。助けてくれてありがとう!

lsblkの出力

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048     845151    843104 411.7M EFI System
/dev/nvme0n1p2    845824     878591     32768    16M Microsoft reserved
/dev/nvme0n1p3    878592  783736831 782858240 373.3G Microsoft basic data
/dev/nvme0n1p4 994082816  997033681   2950866   1.4G Windows recovery environmen
/dev/nvme0n1p5 997033984 1000214527   3180544   1.5G Windows recovery environmen
/dev/nvme0n1p6 783736832  785833983   2097152     1G EFI System
/dev/nvme0n1p7 785833984  977303551 191469568  91.3G Linux filesystem
/dev/nvme0n1p8 977303552  994080767  16777216     8G Linux swap

ベストアンサー1

多くの試行錯誤の後、私は私の問題に対する解決策を見つけました。誰かがこの質問を偶然発見した場合に備えてここに残しておきます。

私のシステムはBRTFSサブボリュームを使用し、必要なパーティションをマウントする手順はこのファイルシステムの種類によって異なります。これが私が次のステップに従うことができない理由です。このガイド。私の特別なケースは、/dev/nvme0n1p6EFIパーティションがあることですroot。後者bootには、古典的なLinuxフォルダ(、、など)/dev/nvme0n1p7を含むルートサブフォルダがあります。binhomeopt

このセクションに移動GRUB2 ブートプロンプトの使用私に合ったソリューションを探しています。完全性のために、次のセクションでは、grub2-mkconfigBRTFSサブボリュームを正しく使用するchrootシステムでこのコマンドを実行する方法について説明します。

BRTFS サブボリュームがあるシステム上の chroot

説明に従ってくださいこの救世主の投稿絶望的な状況とさまざまなインストール手順の組み合わせを試みた後、システムに正しくルートすることができました。

sudo mkdir /mnt/sysimage
sudo mount -o subvol=root /dev/nvme0n1p7 /mnt/sysimage
sudo mount -o bind /dev /mnt/sysimage/dev
sudo mount -o bind /proc /mnt/sysimage/proc
sudo mount -o bind /sys /mnt/sysimage/sys
sudo mount -o bind /sys/firmware/efi/efivars /mnt/sysimage/sys/firmware/efi/efivars
sudo mount /dev/nvme0n1p6 /mnt/sysimage/boot/efi
sudo chroot /mnt/sysimage

メモ:chroot システム内でインターネットに接続していない場合は、次に詳しく説明する手順に従うことができます。同じガイド

その後、chroot システムで次のコマンドを実行できます。

dnf reinstall shim-* grub2-efi-* grub2-common
grub2-mkconfig -o /boot/grub2/grub.cfg
sync && exit

すべてについてumount以下を行います。

sudo umount /mnt/sysimage/sys
sudo umount /mnt/sysimage/proc
sudo umount /mnt/sysimage/dev
sudo umount /mnt/sysimage/boot/efi
sudo umount /mnt/sysimage/sys/firmware/efi/efivars
sudo umount /mnt/sysimage

/usr/sbin/grub2-probe: error: cannot find a device for / (is /dev mounted?)これにより、実行後にエラーが発生しなくなりますgrub2-mkconfig -o /boot/grub2/grub.cfg。これは私の質問の元の目的でした。ただし、そのコマンドを実行しても.NETで見つかったコマンドを試した後も、Fedoraにgrubが返されませんでした。この点:

# Check BIOS boot details [ Note: this command won't work if you are inside chroot. ]
efibootmgr -v
# In case you need to create new entry in BIOS
efibootmgr -c -d /dev/nvme0n1p1 -p 1 -L Fedora -l '\EFI\fedora\grubx64.efi' # or, shimx64.efi

GRUB2 ブートプロンプトの使用

実際のソリューションは、基本的なFedoraドキュメントのこの記事で終わりました。GRUB2 ブートプロンプトの使用。コンピュータを起動し、キーを押してEscBIOSメニューに入り、Fedoraを選択しました。もちろんそこには何もないので、古典的な黒い画面だけが残りますgrub>。そこで次のコマンドを実行しました。

# Show all partitions
grub> ls
(hd0) (hd1) (hd0,gpt1) ...

# Try out every one of them until you find your EFI partition and your root partition. Mine was (hd2,gpt6) and (hd2,gpt7), respectively.
grub> ls (hd2,gpt6)/ # Had an EFI folder
grub> ls (hd2,gpt7)/ # Inside was the root folder and inside that, my beloved Fedora

# You set root to your EFI partition, mine being (hd2,gpt6)
grub> set root=(hd2,gpt6)

# And the following commands starting with the root partition, mine being (hd2,gpt7)
grub> linux (hd2,gpt7)/root/boot/vmlinuz-6.6.9-200.fc39.x86_64 root=/dev/nvme0n1p7 ro rootflags=subvol=root
grub> initrd (hd2,gpt7)/root/boot/initramfs-6.6.9-200.fc39.x86_64.img

# This command will finish the session and will boot up the chosen kernel and RAM filesystem
grub> boot

メモ:起動したいカーネル(vmlinuz-...)とRAMファイルシステム()があるinitramfs-...-.img正確なパスを見つける必要があります。これを行うには、ls <your root partition>/root/フォルダごとにフォルダのナビゲーションを開始します。私には、ls (hd2,gpt7)/root/boot/私が持っているすべてのカーネルとRAMファイルシステムが表示されました。私が選んだのは最新のものでサフィックスがついたものです。また、命令の部分6.6.9-200.fc39.x86_64に注意してください。これは BRTFS システムにとって非常に重要です。この機能がないと、システムは正しく起動しません。もちろん、独自のパーティションに設定する必要があり、残りは変更されません。root=/dev/nvme0n1p7 ro rootflags=subvol=rootlinuxroot=root

システム内部

今頃は、欠けている既存のシステムを起動したでしょう。内部で端末を開き、次のコマンドを実行してgrubFedoraにログインするたびに上記のプロセスを実行する必要がないように復元しました。

# Back up your current GRUB configuration as a precaution:
sudo cp /boot/efi/EFI/fedora/grub.cfg /boot/efi/EFI/fedora/grub.cfg.bak

# Regenerate the GRUB configuration file with:
sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

# Reinstall GRUB to ensure it's properly installed on the EFI partition:
sudo grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Fedora

その後、コンピュータを再起動しましたが、奇妙な理由でBIOS起動メニューにFedoraが見つかりませんでした(これまではそのようなことは起こらず、画面でのみ起動することを除いて常に表示されましたgrub>)。 Windowsにログインして再起動したら、BIOS起動メニューに入り、Fedoraが表示されました。私はそれを選択し、私のコンピュータはメニューに入らずに直接起動しましたgrub。これは本当に奇妙ですが、これまでは間違いなく動作しています。これで問題なくFedoraにログインできます。

いつものように、このコマンドを慎重に実行し、特定のシステムと構成を再確認してください。

おすすめ記事