Bagaimana saya bisa tahu apakah sistem saya di-boot sebagai EFI / UEFI atau BIOS?

120

Bagaimana cara saya menentukan apakah sistem Ubuntu yang berjalan tertentu dibooting menggunakan EFI / UEFI, atau BIOS?

Akhir
sumber
Pertanyaan menarik. Bukan duplikat yang tepat tetapi cobalah jawabannya di sini , untuk pertanyaan serupa.
Tom Brossman
1
unix.stackexchange.com/questions/148356/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

133

Cara termudah adalah memeriksa untuk melihat apakah /sys/firmware/efiada. Itu tidak muncul jika Anda boot menggunakan BIOS tradisional.

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Colin Ian King
sumber
Diuji pada QEMU 2.0.0, OVFM dan Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Bekerja di Ubuntu 16.04, dan Fedora 24
geek1011
16

Usang

Jawaban di bawah adalah metode yang mungkin tidak selalu berhasil.
Alih-alih gunakan jawaban Colin berdasarkan /sys/firmware/efi.


Sangat mudah untuk mengetahui apakah sistem di-boot di EFI (atau tidak, dalam hal ini harusnya BIOS):

Gunakan saja dmesg | grep "EFI v"

  • Ini akan mengembalikan garis seperti ini, jika sistem di-boot dari EFI:

    [0,000000] EFI v2.00 oleh American Megatrends
  • Atau mengembalikan apa pun jika bukan, dalam hal ini boot dari BIOS

Contoh penggunaan skrip bash berdasarkan kode keluar grep :

...
dmesg | grep -q "EFI v" # -q beri tahu grep untuk tidak menghasilkan apa-apa
jika [$? -eq 0] # periksa kode keluar; jika 0 EFI, BIOS lain
kemudian
    echo "Anda menggunakan boot EFI."
  lain
    echo "Anda menggunakan boot BIOS"
fi
...

Sumber: Untuk cara menentukan apakah sistem EFI menggunakan emulasi legacy-BIOS atau tidak, serta informasi lebih lanjut tentang pengujian kompatibilitas EFI dan EFI, bersama dengan string untuk sejumlah vendor / versi EFI, silakan lihat halaman ini dari KTT Pengembang Ubuntu untuk Precise .

ish
sumber
2
Saya akan menyederhanakannya if dmesg | grep -Fq "EFI v"; then .... Tidak ada gunanya menjalankan [perintah di samping, hanya untuk menguji keberhasilan / kegagalan. $?terutama berguna untuk memeriksa kesalahan tertentu.
geirha
3
Ini rapuh, karena tidak ada jaminan bahwa string yang dicari dihasilkan oleh fitur yang diinginkan.
Thorbjørn Ravn Andersen
1
@izx, skrip apa pun dapat terjadi untuk menulis "EFI v" sebagai bagian dari sesuatu yang lain. Jika itu terjadi pada mesin BIOS, ini akan menjadi false positive.
Thorbjørn Ravn Andersen
2
Lebih baik tidak menerima teks dalam log kernel, itu dapat berubah. Terbaik untuk melihat / sys / firmware / efi
Colin Ian King
1
Namun saya ingin menyebutkan bahwa ini adalah cara terbaik untuk mendapatkan versi EFI!
Omega
0

Kode python untuk memeriksa apakah sistem di-boot dengan UEFI atau ROM BIOS:

impor os, sys
def main ():
    if (os.path.exists ("/ sys / firmware / efi")):
        print "\ n \ n Sistem di-boot dengan uefi!"
    lain:
        print "\ n \ n Sistem di-boot dengan rom bios"
utama()
sys.exit (0)
Shruti B
sumber