On Mac OS X there is a tool called nvram to get and set EFI properties. As I am now deploying GNU/Linux on Apple hardware, I'd like to have a similar tool that is able to talk to Apple's EFI implementation.

Are there tools to achieve this?

  • 1
    you should just be able to read them with the efivars program available via package manager. However, if you took the (horrible!) advice offered by many - such as at this Ubuntu/Mac how-to - and converted your disk to a Hybrid MBR so you might boot Linux in legacy (read - BIOS) mode, then those variables are not available to you and will not be until you boot the Linux kernel in EFI-mode. Here is a far better tutorial on the subject. – mikeserv Sep 8 '14 at 3:06
  • 1
    There's /sys/firmware/efi/vars/ holding those on my UEFI compatible systems upon efivars.ko module load but it was known a year or two ago that loading it might corrupt Apple's firmware, it was advised that one backs it up and has the backout plan/tools handy (see also rodsbooks.com/efi-bootloaders/installation.html). – Michael Shigorin Sep 8 '14 at 13:08
  • @mikeserv efivars works, at least for reading. About all those Apple-Firmwares-Will-Be-Destroyed-Warnings... I never got authoritative information about that. – Max Ried Sep 8 '14 at 22:01
  • @mikeserv Would you write an answer about efivars? – Max Ried Sep 8 '14 at 22:02
  • I dont have any Apples and so i dont know the ins and outs well enough to make any authoritative calls in that respect. Youre far better off cruising rodsbooks as Michael has suggested - Rod Smith is about as authoritative as it gets in my opinion on this subject. I do know that theres little mystery there - i can read those with printf and od in a pinch. You might also look into the clover bootloader forums - which is the other active refit fork and is what all of the hackintosh guys use. I am curious though and i may dig into it. Can i ask - what do you wanna do with them? – mikeserv Sep 8 '14 at 22:13

The tools available are going to vary between Linux distributions, but with a Ubuntu 16.04 LTS live ISO booted from a USB stick on a 2011 MacBook Pro, nvram variables are readable in the filesystem:

ubuntu@ubuntu:~$ cd /sys/firmware/efi/efivars/
ubuntu@ubuntu:/sys/firmware/efi/efivars$ ls
ubuntu@ubuntu:/sys/firmware/efi/efivars$ hexdump -C Lang-*
00000000  07 00 00 00 65 6e 67                              |....eng|

To modify variables, install the efivar tool with apt.

|improve this answer|||||

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.