Làm sao để biết tôi có khởi động bằng UEFI không?


54

Tôi đã tìm kiếm, nhưng không tìm thấy một cách rõ ràng để biết GRUB đang sử dụng UEFI trong khởi động hệ thống, hay chế độ tương thích BIOS, hay BIOS đầy đủ. Tôi chỉ tìm thấy các phương pháp Windows . Có điều gì đó trong GRUB hoặc nhật ký khởi động Kernel hiển thị nếu tôi đang sử dụng UEFI, EFI hoặc BIOS không?


Không có thời gian để tìm kiếm câu trả lời, nhưng gần đây tôi cũng đã thực hiện rất nhiều cách khắc phục sự cố của UEFI. Trang web này khá hữu ích với việc hiểu UEFI. Rodbooks.com/refind/index.html
0xSheepdog

1
Tôi không có ý nói xấu, nhưng phần sụn của máy phải làm gì?
ericx

1
@ericx câu hỏi này là giả vờ rằng bạn không có ý tưởng nào về cách kiểm tra nó. Đó là lý do tại sao tất cả các giải pháp có thể được thực hiện trên một hệ thống khởi động.
Braiam

Câu trả lời:


34

Nếu bạn đã khởi động bằng phần mềm UEFI thay vì sử dụng phần sụn BIOS thì hệ thống của bạn sẽ cung cấp các biến ERAM NVRAM có sẵn trong:

/sys/firmware/efi/vars/

hoặc là

/sys/firmware/efi/efivars/

Khi khởi động bằng BIOS (hoặc chế độ mô phỏng BIOS của phần sụn UEFI) thì các biến này không khả dụng.

Trên thực tế, như @Santropedro đã chỉ ra, con đường

/sys/firmware/efi

bị thiếu khi khởi động bằng BIOS, dễ kiểm tra hơn.


+1 cho một phương thức nhanh hơn nhiều và đi thẳng vào vấn đề, thay vì phụ thuộc vào một đầu ra chuỗi cụ thể từ phần sụn hoặc các gói bổ sung có thể không liên quan trực tiếp trong khởi động hiện tại.
gạch dưới

3
Điều gì có nghĩa là "biến không có sẵn"? Kiểm tra đủ không có thư mục bên trong: / sys / firmware / được gọi là "efi"?
Santropedro

@Santropedro - có vẻ như nó làm. Tôi sẽ chỉnh sửa bài viết. Cảm ơn bạn.
garethTheRed

42

Phương pháp đầu tiên:

Ok, tôi đã khởi động hộp UEFI của mình để kiểm tra. Manh mối đầu tiên, gần đỉnh dmesg. Điều này không nên xuất hiện nếu bạn khởi động qua BIOS:

[    0.000000] efi: EFI v2.31 by American Megatrends
[    0.000000] efi:  ACPI=0xd8769000  ACPI 2.0=0xd8769000  SMBIOS=0xd96d4a98 
[    0.000000] efi: mem00: type=6, attr=0x800000000000000f, range=[0x0000000000000000-0x0000000000001000) (0MB)
⋮


Phương pháp thứ hai:

$ sudo efibootmgr
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000
Boot0000* debian

Nếu bạn không phải, sau đó sẽ xuất hiện:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Lưu ý rằng bạn sẽ phải cài đặt gói efibootmgr. Bạn cũng có thể cố gắng liệt kê các biến EFI:

$ efivar -l 
... over 100 lines of output ...


Phương pháp thứ ba:

Kiểm tra nếu bạn có /boot/efi:

$ df -h --local | grep /boot
/dev/sda2       229M   31M  187M  14% /boot
/dev/sda1       120M  250K  119M   1% /boot/efi

Bên trong phân vùng đó phải là các tệp mà UEFI thực thi để khởi động.

Nếu sử dụng bất kỳ phương pháp nào trong số các phương pháp này, các mục liên quan không xuất hiện, rất có thể bạn không sử dụng UEFI.


6
/boot/efichỉ là một số thư mục trong /bootvà phần còn lại là các gói đã cài đặt - tất cả có thể tồn tại trên một hệ thống được cài đặt ở chế độ UEFI, nhưng hiện được khởi động với mô-đun hỗ trợ tương thích. Tuy nhiên, điều đầu tiên là khá chắc chắn ... Bạn có thể vô hiệu hóa việc gắn kết các efivarf với một số tùy chọn hoang tưởng.
mikeerv

@mikeerv /boot/efilà một điểm gắn kết mà tôi không chắc chắn cần phải được gắn ngay cả khi có liên quan đến phần sụn. vì vậy, vâng, sự hiện diện đơn thuần của một thư mục giữ chỗ ở đó có nghĩa là rất ít hoặc không có gì, và ngay cả khi nó có nội dung, những thứ đó hiện có thể không được sử dụng.
gạch dưới

1
Giải pháp này (90 upvote) nói về /sys/firmware/efinhư một chỉ số đáng tin cậy ... Askubfox.com/a/162896/479118 - vậy có lẽ, điều đó đáng tin cậy hơn?
Frank Nocke
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.