¿Cómo saber si estoy arrancando con UEFI?

54

Estaba buscando, pero no encontré una forma obvia de saber si GRUB está utilizando UEFI en el arranque del sistema, o el modo de compatibilidad del BIOS, o un BIOS completo. Encontré solo métodos de Windows . ¿Hay algo en GRUB o en los registros de inicio de Kernel que muestre si estoy usando UEFI, EFI o BIOS?

Braiam
fuente
No tengo tiempo para buscar la respuesta, pero últimamente también he estado solucionando muchos problemas de UEFI. Este sitio es bastante útil para comprender UEFI. rodsbooks.com/refind/index.html
0xSheepdog
1
No quiero sonar descarado, pero ¿qué debe hacer el firmware de la máquina?
ericx
1
@ericx esta pregunta tiene el pretexto de que no tienes idea de cómo verificarla. Es por eso que todas las soluciones se pueden hacer en un sistema arrancado.
Braiam
1
askubuntu.com/questions/162564/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

34

Si ha arrancado usando el firmware UEFI en lugar de usar el firmware BIOS, entonces su sistema debería hacer que las variables EFI NVRAM estén disponibles en:

/sys/firmware/efi/vars/

o

/sys/firmware/efi/efivars/

Al arrancar usando un BIOS (o el modo de emulación de BIOS del firmware UEFI), estas variables no están disponibles.

De hecho, como señaló @Santropedro, el camino

/sys/firmware/efi

falta al arrancar usando un BIOS, que es más fácil de verificar.

garethTheRed
fuente
+1 para un método que es mucho más rápido y va directo al grano, en lugar de depender de una salida de cadena particular del firmware o paquetes adicionales que pueden no ser directamente relevantes en el arranque actual.
underscore_d
3
¿Qué significa "variables no disponibles"? Es suficiente comprobar que no hay carpetas dentro: / sys / firmware / llamado "efi"?
Santropedro
@Santropedro: parece que sí. Editaré la publicación. Gracias.
garethTheRed
42

Primer método:

Ok, encendí mi casilla UEFI para marcar. Primera pista, cerca de la parte superior de dmesg. Esto no debería aparecer si se inicia a través de 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)
⋮


Segundo método:

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

Si no lo está, debería aparecer lo siguiente:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Tenga en cuenta que tendrá que tener instalado el paquete efibootmgr. También puede intentar enumerar las variables EFI:

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


Tercer método:

Comprueba si tienes un /boot/efi:

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

Dentro de esa partición deberían estar los archivos que UEFI ejecuta para arrancar.

Si al usar cualquiera de estos métodos no aparecen las entradas relevantes, es muy probable que no esté utilizando UEFI.

derobert
fuente
66
/boot/efies solo un directorio /booty el resto son paquetes instalados; probablemente todos existirían en un sistema que se instaló en modo UEFI, pero que ahora se inicia con el módulo de compatibilidad de compatibilidad. Aún así, el primero es bastante seguro ... Puede deshabilitar el montaje de los efivarfs con algún tipo de opción paranoica.
mikeserv
@mikeserv /boot/efies un punto de montaje que no estoy seguro de necesidades para ser montado incluso si es relevante para el firmware. así que sí, la mera presencia de una carpeta de marcador de posición allí significa poco o nada, e incluso si tiene contenido, es posible que actualmente no se use.
underscore_d
1
Esta solución (90 votos a favor) se refiere /sys/firmware/eficomo un indicador confiable ... askubuntu.com/a/162896/479118 , entonces quizás, ¿eso es más confiable?
Frank Nocke