Bagaimana cara mengetahui apakah saya melakukan booting menggunakan UEFI?

54

Saya sedang mencari, tetapi tidak menemukan cara yang jelas untuk mengetahui apakah GRUB menggunakan UEFI dalam boot sistem, atau mode kompatibilitas BIOS, atau BIOS yang lengkap. Saya hanya menemukan metode Windows . Apakah ada sesuatu di GRUB atau log boot Kernel yang menunjukkan jika saya menggunakan UEFI, EFI atau BIOS?

Braiam
sumber
Tidak punya waktu untuk mencari jawabannya, tetapi saya juga telah melakukan banyak pemecahan masalah UEFI belakangan ini. Situs ini cukup membantu dengan memahami UEFI. rodsbooks.com/refind/index.html
0xSheepdog
1
Saya tidak bermaksud terdengar sombong, tetapi apa yang diatur firmware mesin untuk dilakukan?
ericx
1
@ ericx pertanyaan ini dengan dalih bahwa Anda tidak tahu bagaimana cara memeriksanya. Itu sebabnya semua solusi dapat dilakukan pada sistem yang dibooting.
Braiam
1
askubuntu.com/questions/162564/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

34

Jika Anda boot menggunakan firmware UEFI sebagai lawan menggunakan firmware BIOS maka sistem Anda harus membuat variabel EFI NVRAM tersedia di:

/sys/firmware/efi/vars/

atau

/sys/firmware/efi/efivars/

Saat mem-boot menggunakan BIOS (atau mode emulasi BIOS dari firmware UEFI) maka variabel-variabel ini tidak tersedia.

Bahkan, seperti yang ditunjukkan @Santropedro, path

/sys/firmware/efi

tidak ada saat boot menggunakan BIOS, yang lebih mudah untuk diperiksa.

garethTheRed
sumber
Memberi +1 untuk metode yang jauh lebih cepat dan langsung ke intinya, daripada bergantung pada keluaran string tertentu dari firmware atau paket tambahan yang mungkin tidak relevan secara langsung dalam boot saat ini.
underscore_d
3
Apa artinya "variabel tidak tersedia"? Sudah cukup memeriksa tidak ada folder di dalamnya: / sys / firmware / disebut "efi"?
Santropedro
@ Antropedro - sepertinya begitu. Saya akan mengedit posting. Terima kasih.
garethTheRed
42

Metode pertama:

Ok, saya boot kotak UEFI saya untuk memeriksa. Petunjuk pertama, dekat bagian atas dmesg. Ini tidak akan muncul jika Anda boot melalui 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)
⋮


Metode kedua:

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

Jika tidak, maka yang berikut akan muncul:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Perhatikan bahwa Anda harus menginstal paket efibootmgr. Anda juga dapat mencoba mendaftar variabel EFI:

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


Metode ketiga:

Periksa apakah Anda memiliki /boot/efi:

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

Di dalam partisi itu harus ada file yang dijalankan UEFI untuk boot.

Jika menggunakan salah satu metode ini, entri yang relevan tidak muncul, sangat mungkin Anda tidak menggunakan UEFI.

derobert
sumber
6
/boot/efihanya beberapa direktori /bootdan sisanya adalah paket yang diinstal - semua kemungkinan ada pada sistem yang diinstal dalam mode UEFI, tetapi sekarang di-boot dengan modul dukungan kompatibilitas. Namun, yang pertama cukup yakin-api ... Anda dapat menonaktifkan mount efivarf dengan beberapa jenis opsi paranoid.
mikeserv
@mikeserv /boot/efiadalah titik mount yang saya tidak yakin perlu dipasang walaupun relevan dengan firmware. jadi ya, keberadaan folder penampung di sana tidak berarti apa-apa, dan bahkan jika isinya, itu mungkin tidak digunakan saat ini.
underscore_d
1
Solusi ini (90 upvotes) berbicara tentang /sys/firmware/efisebagai indikator yang dapat diandalkan ... askubuntu.com/a/162896/479118 - jadi mungkin, itu lebih dapat diandalkan?
Frank Nocke