¿Cómo puedo saber si mi sistema se inició como EFI / UEFI o BIOS?

120

¿Cómo determino si un sistema Ubuntu en ejecución en particular se inició con EFI / UEFI o BIOS?

Omega
fuente
Interesante pregunta. No es un engaño exacto, pero prueba la respuesta aquí , a una pregunta similar.
Tom Brossman
1
unix.stackexchange.com/questions/148356/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

133

La forma más fácil es verificar si /sys/firmware/efiexiste. No aparece si arrancaste usando el BIOS tradicional.

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
Colin Ian King
fuente
Probado en QEMU 2.0.0, OVFM y Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Funciona en Ubuntu 16.04 y Fedora 24
geek1011
16

Obsoleto

La respuesta a continuación es un método que no siempre funciona.
En su lugar, use la respuesta de Colin basada en /sys/firmware/efi.


Es muy fácil saber si un sistema se inició en EFI (o no, en cuyo caso debe ser BIOS):

Solo usa dmesg | grep "EFI v"

  • Esto devolverá una línea como esta, si el sistema se arrancó desde EFI:

    [0.000000] EFI v2.00 por American Megatrends
  • O no devuelva nada si no fuera así, en cuyo caso se arrancó desde BIOS

Ejemplo de uso de script bash basado en el código de salida de grep :

...
dmesg | grep -q "EFI v" # -q decirle a grep que no muestre nada
si [$? -eq 0] # comprobar el código de salida; si 0 EFI, si no BIOS
entonces
    echo "Estás utilizando el arranque EFI".
  más
    echo "Estás utilizando el arranque del BIOS"
fi
...

Fuente: para saber si un sistema EFI está utilizando la emulación de BIOS heredada o no, así como más información sobre las pruebas de compatibilidad con EFI y EFI, junto con las cadenas de varios proveedores / versiones de EFI, consulte esta página en la Cumbre de desarrolladores de Ubuntu para Precise .

ish
fuente
2
Yo simplificaría eso a if dmesg | grep -Fq "EFI v"; then .... No tiene sentido ejecutar el [comando además, solo para probar el éxito / fracaso. $?es principalmente útil para verificar errores específicos.
geirha
3
Esto es frágil, ya que no hay garantía de que la cadena buscada sea generada por la característica deseada.
Thorbjørn Ravn Andersen
1
@izx, cualquier script puede escribir "EFI v" como parte de otra cosa. Si eso sucede en una máquina BIOS, esto sería un falso positivo.
Thorbjørn Ravn Andersen
2
Lo mejor es no buscar texto en el registro del kernel, está sujeto a cambios. Lo mejor es mirar / sys / firmware / efi
Colin Ian King
1
Sin embargo, me gustaría mencionar que esta es una excelente manera de obtener la versión EFI.
Omega
0

Código de Python para verificar si el sistema se inicia con UEFI o ROM BIOS:

import os, sys
def main ():
    if (os.path.exists ("/ sys / firmware / efi")):
        print "\ n \ n ¡El sistema se arranca con uefi!"
    más:
        print "\ n \ n El sistema se inicia con la BIOS de rom"
principal()
sys.exit (0)
Shruti B
fuente