"EFI 변수는 이 시스템에서 지원되지 않습니다"

"EFI 변수는 이 시스템에서 지원되지 않습니다"

나는 새로운 (매우 형편없는) HP Pavillion 15 노트북에 Arch Linux를 설치하려고 합니다.

이것은 UEFI 기반 머신입니다. 몇 번의 시도 끝에 나는 상당한 진전을 이루었습니다. 시스템 설정에서 레거시 모드가 비활성화되어 있으며 EFI를 통해 구운 Arch DVD로 부팅하고 두 Arch를 통해 부팅했습니다.초보자 가이드그리고 더 발전된설치 설명서grub을 설치하는 지점까지.

편집하는 동안 chroot다음을 실행합니다.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug

이는 다음을 포함하여 많은 출력을 내보냅니다.

이 시스템은 EFI 변수를 지원하지 않습니다

처음 이 지점에 도달했을 때 이것이 실제 문제인지 알지 못한 채 설치를 계속했습니다. 머신을 재부팅했을 때 부팅 가능한 미디어를 찾을 수 없었고 머신이 부팅을 거부한 것으로 나타났습니다. 이 시점에서 UEFI 설정 메뉴로 이동하여 부팅할 EFI 파일을 선택하면 Arch Linux가 부팅됩니다.

하지만 이제 위의 문제를 해결하기 위해 돌아가서 다시 설치하고 있습니다.

GRUB을 올바르게 설치하려면 어떻게 해야 합니까?

답변1

알아요, 이것은 아주 오래된 스레드이지만 아마도 누군가에게 도움이 될 것입니다. 대부분의 가이드에서는 chroot 전에 가상 파일 시스템을 마운트하기 위해 동일한 솔루션을 사용할 것을 권장합니다.

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

그러나 이제(아마도 efivars/efivarfs 변경과 관련됨) 이 루프는 매우 특정한 하위 마운트 지점을 건너뛰고 /sys/firmware/efi/efivarsefibootmgr/grub이 실패합니다.

따라서 대신 다음 줄을 사용하세요.

for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done

실제 성공 사례: 4.14.9-1-ARCH(efivars)를 사용하는 바인드 마운트/sys를 통해 Arch Linux 라이브 CD(단순히 uefi를 부팅할 수 있기 때문에 선택됨)에 의해 저장된 Debian 4.9.0-5(efivars) / 펌웨어/efi/efivars

답변2

문제는 간단합니다. efivarfs커널 모듈이 로드되지 않습니다.

이는 다음을 통해 확인할 수 있습니다.

sh-4.2# efivar-tester
UEFI variables are not supported on this machine.

chroot새 설치를 시작하는 경우 exit종료한 후 다음을 활성화하세요 efivarfs.

exit
modprobe efivarfs

( efivarfs이전에도 그랬었 efivars으므로 오류가 반환되면 시도해 보세요 modprobe efivars.)

...그리고 chroot돌아오세요. 내 경우에는 다음을 의미합니다.

chroot /mnt

하지만 예전과 같아야 합니다 chroot.

다시 입력한 후 다시 테스트하세요.

efivar-tester

이런 방식으로 더 이상 오류가 보고되지 않으며 이전과 같이 grub을 설치할 수 있습니다.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug

답변3

UEFI 방법 대신 레거시 방법을 사용하여 부팅하면 이 오류가 발생합니다. BIOS 메뉴에서 UEFI 부팅 옵션이 선택되어 있는지 또는 UEFI가 기본 부팅 방법으로 선택되어 있는지 확인해야 합니다.

답변4

몇 번 던진 끝에 마침내 해결책을 찾았습니다. 제 경우에는 EFI 시스템에 preempt-rt 커널(5.6.19-rt11(패치))을 맞춤 컴파일하고 설치했습니다.

발견된 문제는 preempt-rt 커널이 efi 런타임을 활성화하지 않아 오류가 발생했다는 것입니다.

해결책은 간단합니다.

efi=runtime/etc/default/grub 구성에 커널 매개변수가 추가되었습니다 .

GRUB_CMDLINE_LINUX_DEFAULT="efi=runtime quiet"

잊지 마요 sudo update-grub2!

관련 정보