ฉันจะทราบได้อย่างไรว่าระบบของฉันถูกบูทเป็น EFI / UEFI หรือ BIOS


120

ฉันจะตรวจสอบได้อย่างไรว่าระบบอูบุนตูที่ใช้งานอยู่นั้นถูกบู๊ตด้วย EFI / UEFI หรือ BIOS?


คำถามที่น่าสนใจ ไม่ใช่คนหลงกลที่แน่นอน แต่ลองคำตอบที่นี่เพื่อคำถามที่คล้ายกัน
Tom Brossman

คำตอบ:


133

วิธีที่ง่ายที่สุดคือการตรวจสอบว่า/sys/firmware/efiมีอยู่หรือไม่ จะไม่ปรากฏขึ้นหากคุณบู๊ตด้วย BIOS ดั้งเดิม

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

ทดสอบกับ QEMU 2.0.0, OVFM และ Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/…
Ciro Santilli 新疆改造中心中心法轮功六四事件

ใช้งานได้กับ Ubuntu 16.04 และ Fedora 24
geek1011

16

เลิกใช้

คำตอบด้านล่างนี้เป็นวิธีการที่อาจไม่ได้ผลเสมอไป
แทนที่จะใช้คำตอบของโคลิน/sys/firmware/efiอยู่บนพื้นฐานของ


มันง่ายมากที่จะบอกว่าระบบถูกบูทใน EFI (หรือไม่ซึ่งในกรณีนี้ต้องเป็น BIOS):

เพียงใช้ dmesg | grep "EFI v"

  • นี่จะส่งคืนบรรทัดเช่นนี้หากระบบบูตจาก EFI:

    [0.000000] EFI v2.00 โดย American Megatrends
  • หรือไม่ส่งคืนอะไรเลยหากไม่เป็นเช่นนั้นในกรณีนี้มันถูกบูทจาก BIOS

ตัวอย่างของการใช้สคริปต์ทุบตีตามรหัสออกของ grep :

...
dmesg | grep -q "EFI v" # -q บอก grep เพื่อเอาท์พุทอะไร
ถ้า [$? -eq 0] # ตรวจสอบรหัสทางออก; ถ้า 0 EFI, BIOS อื่น
แล้วก็
    echo "คุณใช้บูท EFI"
  อื่น
    echo "คุณใช้บูท BIOS"
Fi
...

ที่มา: สำหรับวิธีการตรวจสอบว่าระบบ EFI กำลังใช้การจำลองแบบดั้งเดิม - BIOS หรือไม่รวมถึงข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบความเข้ากันได้ของ EFI และ EFI พร้อมกับสตริงสำหรับผู้จำหน่าย / รุ่น EFI จำนวนมากโปรดดูหน้านี้จาก อูบุนตู Developer Summit สำหรับแม่นยำ


2
if dmesg | grep -Fq "EFI v"; then ...ฉันต้องการลดความซับซ้อนที่ ไม่มีจุดใดในการรัน[คำสั่งเพิ่มเติมเพียงเพื่อทดสอบความสำเร็จ / ความล้มเหลว $?มีประโยชน์ส่วนใหญ่สำหรับการตรวจสอบข้อผิดพลาดเฉพาะ
geirha

3
นี่เปราะเนื่องจากไม่มีการรับประกันว่าสตริงที่ค้นหาจะถูกสร้างขึ้นโดยคุณสมบัติที่ต้องการ
Thorbjørn Ravn Andersen

1
@izx สคริปต์ใด ๆ สามารถเกิดขึ้นกับการเขียน "EFI v" เป็นส่วนหนึ่งของอย่างอื่น หากสิ่งนั้นเกิดขึ้นกับเครื่อง BIOS นี่จะเป็นผลบวกที่ผิดพลาด
Thorbjørn Ravn Andersen

2
ดีที่สุดที่จะไม่ grep สำหรับข้อความในบันทึกของเคอร์เนลมันอาจมีการเปลี่ยนแปลง ดีที่สุดในการดู / sys / firmware / efi
Colin Ian King

1
ฉันต้องการพูดถึง แต่นี่เป็นวิธีที่ดีในการรับรุ่น EFI!
Omega

0

รหัส Python เพื่อตรวจสอบว่าระบบทำการบูทด้วย UEFI หรือ ROM BIOS หรือไม่:

นำเข้าระบบปฏิบัติการ sys
def main ():
    ถ้า (os.path.exists ( "sys / / เฟิร์มแว / EFI")):
        พิมพ์ "\ n \ n ระบบถูกบูทด้วย uefi!"
    อื่น:
        พิมพ์ "\ n \ n ระบบบูตจาก rom bios"
หลัก()
sys.exit (0)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.