Linux – Cannot access BIOS after installing a Linux distro

bootlinuxuefi

Some time ago, I went and installed ElementaryOS on my Samsung NP530U3C. After that, I could never access the BIOS again. Pressing F2 had absolutely no effect (neither any other common BIOS-accessing key, such as F10, Del, Tab…). Actually, neither F4 (recovery) nor F10 (select boot device) has any effect.

The only way to boot from an USB now is to mash F buttons until it happens to boot (without any 'select device' window, it just boots the USB). It booted to the installed OS just fine.

A few days ago I thought I could try to reset the BIOS to factory settings (by disconnecting the CMOS battery for a while), and see if that enables me to enter the BIOS again. Well, it didn't, and now the notebook does not boot at all. Upon startup, it shows the Samsung splash screen, it restarts, and the "Boot Menu/App Menu" appears without any options whatsoever.

I tried using the boot-repair ISO USB disk, and when trying the Recommended fix, it says that my notebook is in Legacy mode, and that I should change it to UEFI. I would gladly do so, if I could access the BIOS…

So, I thought if there would be some way to change the boot mode to UEFI by software, or add the "Setup" option to the "App Menu" (usually, these notebooks have this 'Setup' option there, which loads up the BIOS menu). Well, any way to fix this I will gladly hear.

Thank you!

Best Answer

This is a known bug with Samsung's implementation of UEFI on certain notebooks. You can know more about this by googling "Samsung UEFI bug".

It's been mentioned in several places like in this Ubuntu CD Image bug report and this Wikipedia article

In his online journal, Matthew Garret explains the problem with Samsung's UEFI implementation:

The problem with Samsung laptops bricking themselves turned out to be down to the UEFI variable store becoming more than 50% full and Samsung's firmware being dreadful, but the trigger was us writing a crash dump to the nvram.

And how to debug it:

First, make sure pstore is mounted. If you're on 3.9 then do:

mount -t pstore /sys/fs/pstore /sys/fs/pstore

For earlier kernels you'll need to find somewhere else to stick it. If there's anything in there, delete it - we want to make sure there's enough space to save future dumps. Now reboot twice[1]. Next time you get a system crash that doesn't make it to system logs, mount pstore again and (with luck) there'll be a bunch of files there. For tedious reasons these need to be assembled in reverse order (part 12 comes before part 11, and so on) but you should have a crash log. Report that, delete the files again and marvel at the benefits that technology has brought to your life.

[1] UEFI implementations generally handle variable deletion by flagging the space as reclaimable rather than immediately making it available again. You need to reboot in order for the firmware to garbage collect it. Some firmware seems to require two reboot cycles to do this properly. Thanks, firmware.

The fix? That'll have to come from Samsung. In the meantime, Garret has submitted a patch to the Linux kernel source that takes precautions against this. So using a distro with the latest Linux kernel should not trigger the bug.