How to read/write all BIOS settings from Linux CLI?

There is no generic way an OS can access the system BIOS. This would only be possible if manufacturers were to provide detailed information and there were established standards as to how this is to be done. This is not the case, and I don't think it would be a good idea anyway.

Some manufacturers have created software for their own systems, at least for Windows. This software must be designed for specific versions of the BIOS.

The issue is that the BIOS is proprietary to each manufacturer. Typically settings are stored in the CMOS but there is no requirement for this. Manufacturers are free to store settings wherever and however they choose. No documentation is available for these details.

There are security implications with this. If legitimate software could access the BIOS then there would be nothing to stop malicious software from doing the same. This would open up a whole new world of possibilities for malware, one which it's creators would take full advantage. Of course safeguards could be developed but they could be and would be evaded


What you call BIOS is (at least) 3 different things:

  • The system setup utility (Often wrongly called the BIOS or CMOS Setup)
  • The BIOS (i.e. a rudimentary bootloader and standardized APIs)
  • (U)EFI Firmware (i.e. a more modern version of bootup hardware abstraction)

While the latter two expose a well-defined set of APIs, the former does not. This means, that there is no vendor-neutral universal way of manipulating all the settings, that the setup utility provides.

As to where the settings are stored: Most vendors use battery-backed static RAM ("CMOS-RAM" in ancient nomenclature), which is why it is a hassle if those CR2032 cells on the mainboard die.