How do I determine whether a particular running Ubuntu system was booted using EFI/UEFI, or BIOS?


3 Answers 3


The easiest way is to check to see if /sys/firmware/efi exists. It does not appear if you booted using traditional BIOS.

[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS


The answer below is a method that may not always work.
Instead use Colin's answer based on /sys/firmware/efi.

It's very easy to tell if a system was booted in EFI (or not, in which case it must be BIOS):

Just use dmesg | grep "EFI v"

  • This will return a line like this, if the system was booted off of EFI:

    [ 0.000000] EFI v2.00 by American Megatrends
  • Or return nothing if it was not, in which case it was booted off of BIOS

Example of bash script usage based on grep's exit code:

dmesg | grep -q "EFI v"    # -q tell grep to output nothing
if [ $? -eq 0 ]      # check exit code; if 0 EFI, else BIOS
    echo "You are using EFI boot."
    echo "You are using BIOS boot"

Source: For how to determine if an EFI system is using legacy-BIOS emulation or not, as well as more information on testing for EFI and EFI compatibility, along with the strings for a number of EFI vendors/versions, please see this page from the Ubuntu Developer Summit for Precise.

  • 2
    I'd simplify that to if dmesg | grep -Fq "EFI v"; then .... No point in running the [ command in addition, just to test for success/failure. $? is mainly useful for checking for specific errors.
    – geirha
    Jul 12, 2012 at 10:50
  • 3
    This is brittle, as there is no guarantee that the string searched for is generated by the desired feature. Jul 13, 2012 at 1:28
  • 2
    @izx, any script can happen to write "EFI v" as part of something else. If that happens on a BIOS machine, this would be a false positive. Jul 13, 2012 at 1:37
  • 2
    Best not to grep for text in the kernel log, it is subject to change. Best to look at /sys/firmware/efi Jul 27, 2012 at 18:24
  • 2
    I'd like to mention however that this is a great way to get the EFI version! Sep 3, 2012 at 2:01

Python code to check if system is booted with UEFI or ROM BIOS:

import os,sys
def main():
        print"\n\n System is booted with uefi!"
        print"\n\n System is booted with rom bios"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.