Как я могу определить, загружена ли моя система как EFI / UEFI или BIOS?

120

Как определить, была ли загружена конкретная работающая система Ubuntu с использованием EFI / UEFI или BIOS?

Омега
источник
Интересный вопрос. Не точный обман, но попробуйте здесь ответить на аналогичный вопрос.
Том Броссман
1
unix.stackexchange.com/questions/148356/…
Сиро Сантилли 事件 '中心 法轮功 六四 事件

Ответы:

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/…
Сиро Сантилли, 15 at 中心 法轮功 六四 事件
Работает на 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

Пример использования bash-скрипта на основе кода выхода grep :

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

Источник: Чтобы узнать, использует ли система EFI устаревшую эмуляцию BIOS или нет, а также дополнительную информацию о тестировании на совместимость с EFI и EFI, а также строки для ряда поставщиков / версий EFI, см. Эту страницу на странице Ubuntu Developer Summit для точных .

иш
источник
2
Я бы упростил это до if dmesg | grep -Fq "EFI v"; then .... Кроме того, нет смысла выполнять [команду, просто для проверки на успех / неудачу. $?в основном полезно для проверки конкретных ошибок.
гейра
3
Это хрупко, так как нет гарантии, что искомая строка генерируется для искомой строки.
Турбьёрн Равн Андерсен
1
@izx, любой сценарий может написать «EFI v» как часть чего-то другого. Если это произойдет на компьютере с BIOS, это будет ложное срабатывание.
Турбьёрн Равн Андерсен
2
Лучше всего не искать текст в журнале ядра, он может быть изменен. Лучше всего посмотреть на / sys / firmware / efi
Colin Ian King
1
Однако я хотел бы отметить, что это отличный способ получить версию EFI!
Омега
0

Код Python для проверки загрузки системы с UEFI или ROM BIOS:

импорт ОС, система
def main ():
    если (os.path.exists ( "/ SYS / прошивки / EFI")):
        print "\ n \ n Система загружается с помощью uefi!"
    еще:
        print "\ n \ n Система загружается с ROM BIOS"
главный()
sys.exit (0)
Шрути Б
источник