Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I was searching, but didn't found an obvious way to know if GRUB is using UEFI in the system boot, or the BIOS compatibility mode or a full fledged BIOS. Only Windows methods. Is there something in GRUB or the Kernel boot logs that shows if I'm using UEFI, EFI or BIOS?

share|improve this question
    
Don't have the time to look up the answer, but I've been doing a lot of UEFI troubleshooting lately, too. This site is pretty helpful with understanding UEFI. rodsbooks.com/refind/index.html –  0xSheepdog Aug 4 at 17:05
1  
I don't mean to sound smarmy, but what's the machine's firmware set to do? –  ericx Aug 4 at 17:06
1  
@ericx this question is under the pretense that you don't have any idea of how to check it out. That's why all solutions can be done on a booted system. –  Braiam Nov 10 at 9:59

2 Answers 2

up vote 10 down vote accepted

First method:

Ok, I booted up my UEFI box to check. First clue, near the top of dmesg. This shouldn't appear if you're booted via 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)
⋮


Second method:

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

If you are not, then the following should appear:

$ sudo efibootmgr        

EFI variables are not supported on this system.

Note that you'll have to have the efibootmgr package installed. You can also attempt to list the EFI variables:

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


Third method:

Check if you have a /boot/efi:

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

Inside that partition should be the files that UEFI executes to boot.

If using any of these methods the relevant entries doesn't appear, is very likely you are not using UEFI.

share|improve this answer
    
/boot/efi is just some directory in /boot and the rest are installed packages - all would likely exist on a system that was installed in UEFI mode, but is now booted with the compatibility support module. Still, the first is pretty sure-fire... You can disable the mount of the efivarfs with some kind of paranoid option. –  mikeserv Aug 4 at 18:38

If you've booted using the UEFI firmware as opposed to using BIOS firmware then your system should make the EFI NVRAM variables available in:

/sys/firmware/efi/vars/

or

/sys/firmware/efi/efivars/

When booting using a BIOS (or the BIOS emulation mode of UEFI firmware) then these variables aren't available.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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