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에 로그인할 수 있습니다.

항상 그렇듯이 이 명령을 주의해서 실행하고 특정 시스템과 구성을 다시 확인하십시오.

관련 정보