Is it possible to change BIOS settings from Linux?

I'm trying to write a script to enable IPMI on a ton of machines without having to hook up a KVM to them one by one. Is it possible to change the BIOS settings from Linux? OS is SL6.

I understand that each machine will likely need to be power cycled, but I can do that programmatically of course.


In general, no. There is no standard for how settings are stored, or even what settings there are. This information is proprietary to each individual bios.


Use:

... to Read

  • dmidecode (tool for dumping a computer's DMI (some say SMBIOS))

... to write

  • http://flashrom.org (tool for identifying, reading, writing, verifying and erasing flash chips....)

  • http://www.coreboot.org (is a Free Software project aimed at replacing the proprietary BIOS (firmware) found in most computers.)


On HPE servers you can change settings using utility called conrep. It's part of the hp-scripting-tools RPM. The usage is described here:

h20566.www2.hpe.com/hpsc/doc/public/display?sp4ts.oid=5249594&docLocale=en_US&docId=emr_na-c05182235

It's quite simple. With -s (save) parameter you say it to save the configuration, like:

conrep -s -f BL460Gen8.dat

And with -l (load) parameter you say it to load the configuration:

conrep -l -f BL460Gen8.dat

The dat file is actually XML code. So if you want for example enable/disable hyperthreading settings, find respective line and modify the value. See the example for G6 and newer generations:

<Section name="Intel_Hyperthreading" helptext="Toggles hyperthreading on Intel based G6 and greater systems">Enabled</Section>