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


19

아치 리눅스를 새로운 HP Pavillion 15 노트북에 설치하려고합니다.

이것은 UEFI 기반 컴퓨터입니다. 그것에 몇 번의 그네 후, 나는 꽤 멀어졌다. 레거시 모드는 시스템 설정에서 비활성화되어 있으며 레코딩 한 Arch DVD로 EFI 부팅을했으며 Arch Beginner 's Guide 및 고급 설치 안내서 를 통해 grub을 설치하는 지점까지 진행했습니다.

chrooted 동안 나는 다음을 실행합니다.

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

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

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

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

그러나 이제 돌아가서 다시 설치하여 위의 문제를 해결하려고합니다.

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

답변:


20

문제는 단순히 efivars커널 모듈이로드되지 않았다는 것입니다.

이것은 다음과 같이 확인할 수 있습니다.

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

당신이 경우 chroot에 에드 새 설치, exit밖으로 다음 수 efivars:

exit
modprobe efivars

... 그리고 다시 들어 chroot옵니다. 제 경우에는 다음을 의미합니다.

chroot /mnt

그러나 chroot이전과 같은 방식으로 해야 합니다.

다시 들어 오면 다시 테스트하십시오.

efivar-tester

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

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


5
그러나 UEFI를 지원하지 않는 시스템은 어떻습니까? 작업중인 컴퓨터가 UEFI를 지원하지 않는 경우 전 세계에서 USB 스틱에 UEFI 지원 GRUB을 설치하여 새 UEFI 컴퓨터에 Arch를 설치하는 방법은 무엇입니까? 그것을 할 수있는 방법이 있어야합니다!
trusktr

6
efivars 모듈이 이제 "efivarfs"로 대체되었습니다 ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
pedroapero

1
modprobe efivarfs작동 하는 동안 OP에 설명 된 문제가 지속됩니다. 이 답변에 업데이트가 필요합니까? 나는 완전히 아이디어가 부족합니다.
Afr

3
슬프게도 modprobe efivars제공 modprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(새로 설치된 라이브 USB)
jozxyqk

5

UEFI 방법이 아닌 레거시를 사용하여 부팅 한 경우이 오류가 발생합니다. BIOS 메뉴에서 UEFI 부팅 항목을 선택하거나 기본 부팅 방법으로 UEFI를 선택해야합니다.


4

나는 아주 오래된 실이지만 누군가에게 도움이 될 것입니다. 대부분의 가이드는 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

실제 성공 사례 : 바인드 마운트 / sys로 4.14.9-1-ARCH (efivarfs)를 사용하여 Arch Linux 라이브 CD로 저장 한 4.9.0-5 (efivars)의 데비안 (상자에서 uefi를 부팅 할 수 있기 때문에 선택) / 펌웨어 / efi / efivars


0

Fedora 27을 실행하면서을 마운트해야했습니다 efivarfs. 나는 chrootfs 내에서 이것을했지만 부팅 항목이 표시된 것처럼 여전히 작동하지 않았습니다. efibootmgr그러나 재부팅 후에는 더 이상 부팅되지 않았거나 라이브 OS에서 다시 표시되었습니다.

마지막으로 작동 한 것은 라이브 미디어에서 grub을 사용하여 셸로 떨어 뜨린 다음 linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot 시작 했습니다. 부팅 된 정상적인 OS에서 나는 grub2-install없이도 실행할 수 있었고 작동 chroot했습니다.

이것이 내 BIOS의 문제인지 또는 여전히 더 일반적으로 잘못된 것이 있는지 확실하지 않지만 grub2-install오류를보고하지 않고 실행되었습니다.

# Open encrypted root partion cryptsetup luksOpen /dev/sda4 a4 mount /dev/mapper/a4 /mnt mount /dev/sda2 /mnt/boot mount -t proc proc /mnt/proc mount -t sysfs sys /mnt/sys mount -o bind /dev /mnt/dev mount -t devpts pts /mnt/dev/pts/ mount -o bind /etc/resolv.conf /mnt/etc/resolv.conf chroot /mnt # run inside the chroot: mount /dev/sda1 /boot/efi mount -t efivarfs efivarfs /sys/firmware/efi/efivars grub2-install


-3

당신은 할 수 없습니다! 빌드와 설치는 서로 다른 두 가지입니다. 빌드 한 머신은 uefi 가능해야합니다. uefi 가능 하드웨어에서 Linux를 사용 / 설치하려면 gpt가 이미 존재해야합니다. 하드웨어가 오래된 바이오스를 사용하는 경우 uefi에서 gpt / mbr을 빌드 할 수 있지만 둘 다 가능하지는 않습니다.


게시물을 더 자세히 읽으십시오.
John Dibling
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.