Как узнать, загружаюсь ли я с использованием UEFI?

54

Я искал, но не нашел очевидного способа узнать, использует ли GRUB UEFI при загрузке системы, или режим совместимости с BIOS, или полноценный BIOS. Я нашел только методы Windows . Есть ли что-то в GRUB или журналах загрузки ядра, показывающее, использую ли я UEFI, EFI или BIOS?

Braiam
источник
У меня нет времени, чтобы найти ответ, но в последнее время я также много занимался устранением неполадок с UEFI. Этот сайт очень полезен для понимания UEFI. rodsbooks.com/refind/index.html
0xSheepdog
1
Я не хочу звучать хитро, но для чего нужна прошивка машины?
ericx
1
@ericx этот вопрос под предлогом того, что вы не знаете, как его проверить. Вот почему все решения могут быть выполнены в загруженной системе.
Брайам
1
askubuntu.com/questions/162564/…
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件

Ответы:

34

Если вы загрузились с использованием прошивки UEFI, а не с прошивкой BIOS, то ваша система должна сделать переменные EFI NVRAM доступными в:

/sys/firmware/efi/vars/

или же

/sys/firmware/efi/efivars/

При загрузке с использованием BIOS (или режима эмуляции BIOS микропрограммного обеспечения UEFI) эти переменные недоступны.

На самом деле, как указал @Santropedro, путь

/sys/firmware/efi

отсутствует при загрузке с использованием BIOS, что легче проверить.

garethTheRed
источник
+1 за метод, который намного быстрее и подходит прямо к делу, а не зависит от конкретной строки, выводимой из прошивки или дополнительных пакетов, которые могут не иметь прямого отношения к текущей загрузке.
underscore_d
3
Что означает «переменные недоступны»? Достаточно проверить, нет ли внутри папок: / sys / firmware / с именем "efi"?
Сантропедро
@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.

derobert
источник
6
/boot/efiэто просто какой-то каталог, /bootа остальные являются установленными пакетами - скорее всего, все они существуют в системе, которая была установлена ​​в режиме UEFI, но теперь загружается с помощью модуля поддержки совместимости. Тем не менее, первое - это довольно уверенный огонь ... Вы можете отключить монтирование efivarfs с помощью какой-то параноидальной опции.
mikeserv
@mikeserv /boot/efi- это точка монтирования, которую я не уверен, что ее нужно монтировать, даже если она имеет отношение к прошивке. так что да, простое присутствие папки-заполнителя практически ничего не значит, и даже если в ней есть содержимое, они могут в настоящее время не использоваться.
underscore_d
1
Это решение (90 голосов) говорит о /sys/firmware/efiкачестве надежного индикатора ... askubuntu.com/a/162896/479118 - так что, возможно, это более надежно?
Фрэнк Нок