
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/nvme0n1p6
EFIパーティションがあることですroot
。後者boot
には、古典的なLinuxフォルダ(、、など)/dev/nvme0n1p7
を含むルートサブフォルダがあります。bin
home
opt
このセクションに移動GRUB2 ブートプロンプトの使用私に合ったソリューションを探しています。完全性のために、次のセクションでは、grub2-mkconfig
BRTFSサブボリュームを正しく使用する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 ブートプロンプトの使用。コンピュータを起動し、キーを押してEsc
BIOSメニューに入り、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=root
linux
root=
root
システム内部
今頃は、欠けている既存のシステムを起動したでしょう。内部で端末を開き、次のコマンドを実行してgrub
Fedoraにログインするたびに上記のプロセスを実行する必要がないように復元しました。
# 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にログインできます。
いつものように、このコマンドを慎重に実行し、特定のシステムと構成を再確認してください。