ฉันจะตรวจสอบได้อย่างไรว่าระบบอูบุนตูที่ใช้งานอยู่นั้นถูกบู๊ตด้วย EFI / UEFI หรือ BIOS?
ฉันจะตรวจสอบได้อย่างไรว่าระบบอูบุนตูที่ใช้งานอยู่นั้นถูกบู๊ตด้วย EFI / UEFI หรือ BIOS?
คำตอบ:
วิธีที่ง่ายที่สุดคือการตรวจสอบว่า/sys/firmware/efi
มีอยู่หรือไม่ จะไม่ปรากฏขึ้นหากคุณบู๊ตด้วย BIOS ดั้งเดิม
#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
เลิกใช้
คำตอบด้านล่างนี้เป็นวิธีการที่อาจไม่ได้ผลเสมอไป
แทนที่จะใช้คำตอบของโคลิน/sys/firmware/efi
อยู่บนพื้นฐานของ
มันง่ายมากที่จะบอกว่าระบบถูกบูทใน EFI (หรือไม่ซึ่งในกรณีนี้ต้องเป็น BIOS):
เพียงใช้ dmesg | grep "EFI v"
นี่จะส่งคืนบรรทัดเช่นนี้หากระบบบูตจาก EFI:
[0.000000] EFI v2.00 โดย American Megatrends
หรือไม่ส่งคืนอะไรเลยหากไม่เป็นเช่นนั้นในกรณีนี้มันถูกบูทจาก BIOS
... dmesg | grep -q "EFI v" # -q บอก grep เพื่อเอาท์พุทอะไร ถ้า [$? -eq 0] # ตรวจสอบรหัสทางออก; ถ้า 0 EFI, BIOS อื่น แล้วก็ echo "คุณใช้บูท EFI" อื่น echo "คุณใช้บูท BIOS" Fi ...
ที่มา: สำหรับวิธีการตรวจสอบว่าระบบ EFI กำลังใช้การจำลองแบบดั้งเดิม - BIOS หรือไม่รวมถึงข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบความเข้ากันได้ของ EFI และ EFI พร้อมกับสตริงสำหรับผู้จำหน่าย / รุ่น EFI จำนวนมากโปรดดูหน้านี้จาก อูบุนตู Developer Summit สำหรับแม่นยำ
if dmesg | grep -Fq "EFI v"; then ...
ฉันต้องการลดความซับซ้อนที่ ไม่มีจุดใดในการรัน[
คำสั่งเพิ่มเติมเพียงเพื่อทดสอบความสำเร็จ / ความล้มเหลว $?
มีประโยชน์ส่วนใหญ่สำหรับการตรวจสอบข้อผิดพลาดเฉพาะ
รหัส Python เพื่อตรวจสอบว่าระบบทำการบูทด้วย UEFI หรือ ROM BIOS หรือไม่:
นำเข้าระบบปฏิบัติการ sys def main (): ถ้า (os.path.exists ( "sys / / เฟิร์มแว / EFI")): พิมพ์ "\ n \ n ระบบถูกบูทด้วย uefi!" อื่น: พิมพ์ "\ n \ n ระบบบูตจาก rom bios" หลัก() sys.exit (0)