จะรู้ได้อย่างไรว่าฉันกำลังใช้ UEFI อยู่


54

ฉันกำลังค้นหา แต่ไม่พบวิธีที่ชัดเจนที่จะรู้ว่า GRUB ใช้ UEFI ในการบูตระบบหรือโหมดความเข้ากันได้ของ BIOS หรือ BIOS เต็มรูปแบบ ผมพบว่าเพียงวิธีการของ Windows มีบางสิ่งใน GRUB หรือบันทึกการบูตเคอร์เนลที่แสดงว่าฉันใช้ UEFI, EFI หรือ BIOS หรือไม่


ไม่มีเวลาที่จะค้นหาคำตอบ แต่ฉันได้ทำการแก้ไขปัญหา UEFI จำนวนมากเมื่อเร็ว ๆ นี้เช่นกัน เว็บไซต์นี้ค่อนข้างมีประโยชน์กับการทำความเข้าใจ UEFI rodsbooks.com/refind/index.html
0xSheepdog

1
ฉันไม่ได้ตั้งใจจะให้เสียงดัง แต่มีเฟิร์มแวร์ของเครื่องที่ตั้งไว้ทำอะไร?
ericx

1
@ericx คำถามนี้อยู่ภายใต้ข้ออ้างที่คุณไม่ทราบวิธีการตรวจสอบ นั่นเป็นเหตุผลที่โซลูชั่นทั้งหมดสามารถทำได้บนระบบที่บู๊ตแล้ว
Braiam

คำตอบ:


34

หากคุณบู๊ตด้วยเฟิร์มแวร์ UEFI ซึ่งต่างจากการใช้เฟิร์มแวร์ BIOS ระบบของคุณควรทำให้ตัวแปร EFI NVRAM พร้อมใช้งานใน:

/sys/firmware/efi/vars/

หรือ

/sys/firmware/efi/efivars/

เมื่อทำการบูทโดยใช้ BIOS (หรือโหมดการจำลอง BIOS ของเฟิร์มแวร์ UEFI) ตัวแปรเหล่านี้จะไม่สามารถใช้ได้

ในความเป็นจริงตามที่ @Santropedro ชี้ให้เห็นเส้นทาง

/sys/firmware/efi

หายไปเมื่อทำการบูทโดยใช้ไบออสซึ่งง่ายต่อการตรวจสอบ


+1 สำหรับวิธีที่เร็วกว่ามากและตรงไปยังจุดแทนที่จะขึ้นอยู่กับเอาต์พุตสตริงเฉพาะจากเฟิร์มแวร์หรือแพ็คเกจเพิ่มเติมที่อาจไม่เกี่ยวข้องโดยตรงในการบูตปัจจุบัน
underscore_d

3
"ตัวแปรไม่พร้อมใช้งาน" หมายถึงอะไร มันเพียงพอที่จะตรวจสอบว่าไม่มีโฟลเดอร์อยู่ภายใน: / sys / เฟิร์มแวร์ / ชื่อ "efi" หรือไม่
Santropedro

@ Santropedro - ดูเหมือนว่าจะเป็นเช่นนั้น ฉันจะแก้ไขโพสต์ ขอขอบคุณ.
garethTheRed

42

วิธีแรก:

ตกลงฉันบูตกล่อง UEFI ของฉันเพื่อตรวจสอบ dmesgเบาะแสแรกที่อยู่ใกล้ด้านบนของ สิ่งนี้จะไม่ปรากฏหากคุณบู๊ตด้วย 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)
⋮


วิธีที่สอง:

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

หากคุณไม่ได้ใช้งานสิ่งต่อไปนี้ควรปรากฏขึ้น:

$ sudo efibootmgr        

EFI variables are not supported on this system.

โปรดทราบว่าคุณจะต้องติดตั้งแพ็คเกจ efibootmgr คุณสามารถลองรายการตัวแปร EFI:

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


วิธีที่สาม:

ตรวจสอบว่าคุณมี/boot/efi:

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

ภายในพาร์ติชั่นนั้นควรเป็นไฟล์ที่ UEFI เรียกใช้เพื่อบู๊ต

หากใช้วิธีการใด ๆ เหล่านี้รายการที่เกี่ยวข้องจะไม่ปรากฏขึ้นมีโอกาสมากที่คุณไม่ได้ใช้ UEFI


6
/boot/efiเป็นเพียงไดเรกทอรีบางส่วน/bootและแพคเกจที่เหลือได้รับการติดตั้ง - ทั้งหมดน่าจะมีอยู่บนระบบที่ติดตั้งในโหมด UEFI แต่ตอนนี้ถูกบูทด้วยโมดูลสนับสนุนความเข้ากันได้ ยังคงข้อแรกคือไฟสวย ... คุณสามารถปิดการใช้งานภูเขาของ efivarfs ด้วยตัวเลือกหวาดระแวงบางชนิด
mikeserv

@mikeserv /boot/efiเป็นจุดเชื่อมต่อที่ฉันไม่แน่ใจว่าจำเป็นต้องติดตั้งแม้ว่าจะเกี่ยวข้องกับเฟิร์มแวร์ก็ตาม ดังนั้นใช่การปรากฏตัวของโฟลเดอร์ตัวแทนมีความหมายเล็ก ๆ น้อย ๆ เพื่ออะไรและแม้ว่ามันจะมีเนื้อหาเหล่านั้นอาจไม่ได้ใช้ในปัจจุบัน
underscore_d

1
วิธีแก้ปัญหานี้ (90 upvotes)พูดถึง/sys/firmware/efiว่าเป็นตัวบ่งชี้ที่เชื่อถือได้ ... askubuntu.com/a/162896/479118 - บางทีนั่นน่าเชื่อถือกว่านี้ไหม?
Frank Nocke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.