Các biến EFI của cải không được hỗ trợ trên hệ thống này


18

Tôi đang cố gắng cài đặt Arch linux vào Máy tính xách tay HP Pavillion 15 mới (và rất nhảm nhí).

Đây là một máy dựa trên UEFI. Sau vài lần thay đổi, tôi đã xoay sở được khá xa. Chế độ kế thừa bị vô hiệu hóa trong thiết lập hệ thống và tôi đã khởi động EFI vào Arch DVD mà tôi đã ghi và tiến hành thông qua cả Hướng dẫn dành cho người mới bắt đầuHướng dẫn cài đặt nâng cao hơn đến điểm tôi đang cài đặt grub.

Trong khi chrooted, tôi thực thi:

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

Điều này phát ra một tấn đầu ra, bao gồm:

Các biến EFI không được hỗ trợ trên hệ thống này

Lần đầu tiên đến thời điểm này, tôi tiếp tục cài đặt, không biết đó có phải là vấn đề thực sự không. Hóa ra là như vậy, khi tôi khởi động lại máy, không thể tìm thấy phương tiện khởi động và máy từ chối khởi động. Tại thời điểm đó tôi đã có thể vào menu cài đặt UEFI và chọn tệp EFI để khởi động và Arch Linux sẽ khởi động.

Nhưng bây giờ tôi sẽ quay lại và cài đặt lại, cố gắng khắc phục sự cố ở trên.

Làm cách nào để cài đặt GRUB chính xác?

Câu trả lời:


19

Vấn đề đơn giản là efivarsmô-đun kernel không được tải.

Điều này có thể được xác nhận bởi:

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

Nếu bạn đã chrootcài đặt vào bản cài đặt mới, hãy exitra ngoài, rồi bật efivars:

exit
modprobe efivars

... và sau đó chrootquay lại. Trong trường hợp của tôi, điều này có nghĩa là:

chroot /mnt

nhưng bạn nên chrootgiống như cách bạn đã làm trước đây.

Sau khi trở lại, kiểm tra lại:

efivar-tester

Điều này sẽ không còn báo cáo lỗi và bạn có thể cài đặt grub giống như cách bạn đã làm trước đây.

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


5
Nhưng những gì về một hệ thống không hỗ trợ UEFI? Làm thế nào trên thế giới tôi có thể cài đặt GRUB có khả năng UEFI trên thanh USB của mình để cài đặt Arch trên máy tính UEFI mới nếu máy tính làm việc của tôi không hỗ trợ UEFI? Phải có một cách để làm điều đó!
trusktr

6
Mô-đun efivars đã được thay thế bằng "efivarfs" ( wiki.debian.org/UEFI#efibootmgr_and_efivar ).
pedroapero

1
Trong khi modprobe efivarfshoạt động, vấn đề được mô tả bởi OP vẫn tồn tại. Có lẽ câu trả lời này cần một bản cập nhật? Tôi hoàn toàn cạn kiệt ý tưởng.
Afr

2
Đáng buồn thay modprobe efivarscho modprobe: FATAL: Module efivars not found in directory /lib/modules/4.16.3-301.fc28.x86_64(tươi cài đặt usb sống)
jozxyqk

5

Bạn sẽ gặp lỗi này nếu bạn đã khởi động bằng cách sử dụng di sản chứ không phải phương thức UEFI. Bạn cần đảm bảo chọn mục khởi động UEFI trong menu BIOS hoặc chọn UEFI làm phương thức khởi động mặc định.


4

Tôi biết, đó là chủ đề rất cũ, nhưng có lẽ sẽ giúp cho một ai đó. Hầu hết các hướng dẫn đề xuất cùng một giải pháp để gắn kết các hệ thống tệp ảo trước khi chroot:

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

Nhưng bây giờ (có thể liên quan đến thay đổi efivars / efivarfs) vòng lặp này bỏ qua một điểm gắn kết rất đặc biệt - /sys/firmware/efi/efivarsvà efibootmgr / grub không thành công.

Vì vậy, sử dụng dòng này thay thế:

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

Câu chuyện thành công thực tế: Debian với 4.9.0-5 (efivars) được lưu bởi Arch Linux live cd (được chọn chỉ vì có thể khởi động uefi ra khỏi hộp) với 4.14.9-1-ARCH (efivarfs) chỉ bằng cách gắn kết / sys / firmware / efi / efivars


0

Chạy Fedora 27, tôi cần phải gắn kết efivarfs. Tôi đã làm điều này bên trong các chrootfs, tuy nhiên điều này vẫn không hoạt động, vì mục khởi động đã được hiển thị với efibootmgr- nhưng sau khi khởi động lại, nó đã được khởi động và cũng không được hiển thị một lần nữa trong HĐH trực tiếp.

Điều cuối cùng đã làm việc, là sử dụng grub từ phương tiện trực tiếp, thả vào vỏ và nhập linuxefi /vmlinuz-<version> root=/dev/mapper/luks-<uuid> ro initrdefi /initramfs-<version>.img boot Từ hệ điều hành bình thường được khởi động, tôi có thể chạy grub2-installmà không cần chroot, và điều đó đã hoạt động.

Tôi không chắc liệu đây chỉ là một vấn đề với BIOS của tôi hay vẫn còn một cái gì đó nói chung là sai, nhưng đây là những gì được thực hiện grub2-installmà không báo cáo bất kỳ lỗi nào.

# 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

Bạn không thể! Xây dựng và cài đặt là hai thứ khác nhau, máy bạn xây dựng phải có khả năng uefi. Nếu bạn muốn sử dụng / cài đặt linux trên gpt phần cứng có khả năng uefi thì phải tồn tại. Bạn có thể xây dựng gpt / mbr trên uefi nhưng không phải cả hai nếu phần cứng của bạn sử dụng bios cũ.


Xin vui lòng đọc bài viết cẩn thận hơn.
John Dibling
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.