Question Comment savoir si mon système a été démarré en tant que EFI / UEFI ou BIOS?


Comment puis-je déterminer si un système Ubuntu en cours d'exécution a été démarré à l'aide d'EFI / UEFI ou du BIOS?


102
2017-07-11 21:00


origine


Question interessante. Pas un dupe exact mais essayez la réponse ici, à une question similaire. - Tom Brossman
unix.stackexchange.com/questions/148356/… - Ciro Santilli 新疆改造中心 六四事件 法轮功


Réponses:


Le plus simple est de vérifier si /sys/firmware/efi existe Il n'apparaît pas si vous avez démarré à l'aide du BIOS traditionnel.

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

117
2017-07-12 18:11



Testé sur QEMU 2.0.0, OVFM et Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/ - Ciro Santilli 新疆改造中心 六四事件 法轮功
Fonctionne sur Ubuntu 16.04 et Fedora 24 - geek1011


Obsolète

La réponse ci-dessous est une méthode qui peut ne pas toujours fonctionner.
 Au lieu d'utiliser Réponse de Colin basé sur /sys/firmware/efi.


Il est très facile de savoir si un système a été démarré dans EFI (ou non, auquel cas doit être BIOS):

Juste utiliser dmesg | grep "EFI v"

  • Cela renverra une ligne comme celle-ci, si le système a été démarré depuis EFI:

    [0.000000] EFI v2.00 par American Megatrends
  • Ou ne rien retourner si ce n'était pas le cas, auquel cas il a été démarré du BIOS

Exemple d'utilisation du script bash basé sur grep's code de sortie:

...
dmesg | grep -q "EFI v" # -q demande à grep de ne rien afficher
si [$? -eq 0] # vérifier le code de sortie; si 0 EFI, sinon le BIOS
puis
    echo "Vous utilisez le démarrage d'EFI."
  autre
    echo "Vous utilisez le démarrage du BIOS"
Fi
...

Source: Pour savoir si un système EFI utilise ou non l’émulation du BIOS hérité, ainsi que plus d’informations sur les tests de compatibilité EFI et EFI, ainsi que les chaînes pour un certain nombre de fournisseurs / versions d’EFI, veuillez consulter cette page du Sommet des développeurs Ubuntu pour Precise.


16
2017-07-11 21:36



Je simplifierais cela pour if dmesg | grep -Fq "EFI v"; then .... Pas besoin de courir le [ commande en plus, juste pour tester le succès / échec. $? est principalement utile pour vérifier les erreurs spécifiques. - geirha
Cela est fragile, car rien ne garantit que la chaîne recherchée est générée par la fonctionnalité souhaitée. - Thorbjørn Ravn Andersen
@izx, n'importe quel script peut écrire "EFI v" dans le cadre de quelque chose d'autre. Si cela se produit sur une machine BIOS, ce serait un faux positif. - Thorbjørn Ravn Andersen
Mieux vaut ne pas grep pour le texte dans le journal du noyau, il est sujet à changement. Mieux vaut regarder / sys / firmware / efi - Colin Ian King
J'aimerais toutefois mentionner que c'est un excellent moyen d'obtenir la version EFI! - Omega


Code Python pour vérifier si le système est démarré avec UEFI ou le BIOS ROM:

importer os, sys
def main ():
    if (os.path.exists ("/ sys / firmware / efi")):
        print "\ n \ n Le système est démarré avec uefi!"
    autre:
        print "\ n \ n Le système est démarré avec rom bios"
principale()
sys.exit (0)

1
2017-10-11 09:18