Vraag Hoe weet ik of mijn systeem is opgestart als EFI / UEFI of BIOS?


Hoe bepaal ik of een bepaald lopend Ubuntu-systeem is opgestart met EFI / UEFI of BIOS?


102
2017-07-11 21:00


oorsprong


Interessante vraag. Geen exacte dupe, maar probeer het antwoord hier, op een vergelijkbare vraag. - Tom Brossman
unix.stackexchange.com/questions/148356/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


antwoorden:


De eenvoudigste manier is om te controleren of /sys/firmware/efi bestaat. Het verschijnt niet als je het traditionele BIOS hebt geboot.

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

117
2017-07-12 18:11



Getest op QEMU 2.0.0, OVFM en Ubuntu 14.04: github.com/cirosantilli/runlinux/tree/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
Werkt op Ubuntu 16.04 en Fedora 24 - geek1011


Verouderd

Het onderstaande antwoord is een methode die mogelijk niet altijd werkt.
 Gebruik in plaats daarvan Colin's antwoord gebaseerd op /sys/firmware/efi.


Het is heel gemakkelijk om te vertellen of een systeem is opgestart in EFI (of niet, in welk geval het moet worden BIOS):

Gebruik gewoon dmesg | grep "EFI v"

  • Hiermee wordt een regel als deze geretourneerd als het systeem is opgestart van EFI:

    [0.000000] EFI v2.00 door American Megatrends
  • Of retourneer niets als dit niet het geval was, in welk geval het vanaf BIOS is opgestart

Voorbeeld van bash-scriptgebruik op basis van grep's exit code:

...
dmesg | grep -q "EFI v" # -q vertel grep om niets uit te voeren
als [$? -eq 0] # controleer exitcode; als 0 EFI, anders BIOS
dan
    echo "U gebruikt EFI-boot."
  anders
    echo "U gebruikt BIOS boot"
fi
...

Bron: om te bepalen of een EFI-systeem legacy-BIOS-emulatie gebruikt of niet, en meer informatie over testen op EFI- en EFI-compatibiliteit, samen met de strings voor een aantal EFI-leveranciers / -versies, zie alstublieft deze pagina van de Ubuntu Developer Summit for Precise.


16
2017-07-11 21:36



Ik zou dat vereenvoudigen if dmesg | grep -Fq "EFI v"; then .... Geen zin in het uitvoeren van de [ commando bovendien, alleen om te testen op succes / mislukking. $? is vooral handig voor het controleren op specifieke fouten. - geirha
Dit is broos, omdat er geen garantie is dat de string waarnaar wordt gezocht wordt gegenereerd door de gewenste functie. - Thorbjørn Ravn Andersen
@izx, elk script kan toevallig 'EFI v' bevatten als onderdeel van iets anders. Als dat gebeurt op een BIOS-computer, zou dit een vals-positief punt zijn. - Thorbjørn Ravn Andersen
Het beste om niet te grep voor tekst in het kernellogboek, het is onderhevig aan verandering. Beste om naar / sys / firmware / efi te kijken - Colin Ian King
Ik wil echter graag vermelden dat dit een geweldige manier is om de EFI-versie te krijgen! - Omega


Python-code om te controleren of het systeem is opgestart met UEFI of ROM BIOS:

import os, sys
def main ():
    if (os.path.exists ( "/ sys / firmware / efi")):
        print "\ n \ n Systeem wordt opgestart met uefi!"
    anders:
        print "\ n \ n Systeem wordt opgestart met rom bios"
hoofd()
sys.exit (0)

1
2017-10-11 09:18