Ответ ниже - метод, который не всегда может работать. Вместо этого используйте ответ Колина, основанный на /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 для точных .
Я бы упростил это до 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)
Ответы:
Самый простой способ - проверить,
/sys/firmware/efi
существует ли он . Он не появляется, если вы загрузились с использованием традиционного BIOS.источник
Очень легко определить, была ли система загружена в EFI (или нет, в этом случае это должен быть BIOS):
Просто используйте
dmesg | grep "EFI v"
Это вернет такую строку, если система была загружена с EFI:
Или ничего не вернуть, если его не было, и в этом случае он был загружен из BIOS
Пример использования bash-скрипта на основе кода выхода grep :
источник
if dmesg | grep -Fq "EFI v"; then ...
. Кроме того, нет смысла выполнять[
команду, просто для проверки на успех / неудачу.$?
в основном полезно для проверки конкретных ошибок.Код Python для проверки загрузки системы с UEFI или ROM BIOS:
источник