Як я можу визначити, чи було завантажено систему як EFI / UEFI або BIOS?


120

Як визначити, чи було завантажено певну працюючу систему Ubuntu за допомогою EFI / UEFI або BIOS?


Цікаве запитання. Не точна дупа, але спробуйте відповісти тут , на подібне питання.
Том Броссман

Відповіді:


133

Найпростіший спосіб - це перевірити, чи /sys/firmware/efiіснує. Це не відображається, якщо ви завантажилися за допомогою традиційного BIOS.

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


Працює на Ubuntu 16.04 та Fedora 24
geek1011

16

Застарілий

Відповідь нижче - це метод, який може не завжди працювати.
Замість цього використовуйте відповідь Коліна на основі /sys/firmware/efi.


Дуже легко сказати, чи було завантажено систему в EFI (чи ні, в цьому випадку це повинен бути BIOS):

Просто використовуйте dmesg | grep "EFI v"

  • Це поверне такий рядок, якщо система була завантажена з EFI:

    [0,000000] EFI v2.00 американськими мегатрендами
  • Або нічого не повертати, якщо його не було, в такому випадку він був завантажений з BIOS

Приклад використання сценарію bash на основі виходу коду grep :

...
dmesg | grep -q "EFI v" # -q скажіть grep нічого не виводити
якщо [$? -eq 0] # перевірити код виходу; якщо 0 EFI, інакше BIOS
тоді
    echo "Ви використовуєте завантаження EFI."
  ще
    echo "Ви використовуєте завантаження BIOS"
фі
...

Джерело: Про те, як визначити, чи використовує система EFI старі емуляції BIOS чи ні, а також додаткову інформацію про тестування на сумісність із EFI та EFI, а також рядки для ряду постачальників / версій EFI, перегляньте цю сторінку на саміт розробників Ubuntu для точних .


2
Я б спростив це до if dmesg | grep -Fq "EFI v"; then .... Крім того, немає сенсу виконувати [команду, а лише перевірити на успіх / невдачу. $?в основному корисний для перевірки на наявність конкретних помилок.
geirha

3
Це крихко, оскільки немає гарантії, що шукана рядок створюється потрібною функцією.
Thorbjørn Ravn Andersen

1
@izx, будь-який сценарій може написати "EFI v" як частину чогось іншого. Якщо це станеться на машині BIOS, це було б помилковим позитивом.
Thorbjørn Ravn Andersen

2
Краще не схвалювати текст у журналі ядра, він може бути змінений. Найкраще подивитися / sys / firmware / efi
Колін Іан Кінг

1
Хочеться зазначити, що це чудовий спосіб отримати версію EFI!
Омега

0

Код Python для перевірки завантаження системи за допомогою UEFI або ROM BIOS:

import os, sys
def main ():
    якщо (os.path.exists ("/ sys / firmware / efi")):
        надрукувати "\ n \ n Система завантажена uefi!"
    ще:
        print "\ n \ n Система завантажена ром-біосом"
головний ()
sys.exit (0)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.