BIOS configuration via OS tools

1. Intro

It’s possible to configure BIOS options from the OS on SuperMicro and HP platforms. This removes the need for IPMI access, rebooting and going into the BIOS to apply the needed configuration changes.

All options that are needed by StorPool are described in the relevant installation guides. Some examples are given below, but those are not exhaustive.

2. SuperMicro

The changes are done via the SuperMicro Update Manager (SUM) tool, available at https://www.supermicro.com/en/solutions/management-software/supermicro-update-manager

Warning

The BIOS reconfiguration is currenly known not to work on SuperMicro EPYC2 nodes.

Note

The tool requires a license from SuperMicro to work. Having the license is highly recommended for all StorPool installations on SuperMicro servers from 2019-01 onward.

Dumping the BIOS is done in the following way:

./sum --file cbios.cfg -c GetCurrentBiosCfg

This will dump the current BIOS settings in a file called cbios.cfg. After modifying the file, it can be loaded via the following command:

./sum --file cbios.cfg -c ChangeBiosCfg

The file has full help embedded in it and should be pretty much self-explanatory.

Note

After loading the config a reboot would still be required for the changes to take effect.

2.1. SR-IOV

The option is called “SR-IOV Support”

2.2. NUMA nodes on AMD EPYC2

The option is called “NUMA Nodes Per Socket” and should be set to NPS4.

3. DELL

The changes are done via the racadm tool, available at Dell’s web site. The tool uses a hierarchical level of options to access the different options. Here is one example session:

root@node9 ~ # racadm get
iDRAC
System
LifeCycleController
BIOS
NIC
STORAGE
FC

root@node9 ~ # racadm get NIC
DeviceLevelConfig
FCoEConfiguration
FCoEGenParams
FrmwImgMenu
IscsiFirstTgtParams
IscsiGenParams
IscsiInitiatorParams
IscsiSecondTgtParams
IscsiSecondaryDeviceParams
NICConfig
NICPartitioningConfig
VndrConfigPage

root@node9 ~ # racadm get NIC.DeviceLevelConfig
NIC.DeviceLevelConfig.1 [Key=NIC.Integrated.1-1-1#DeviceLevelConfig]
NIC.DeviceLevelConfig.2 [Key=NIC.Integrated.1-2-1#DeviceLevelConfig]
NIC.DeviceLevelConfig.3 [Key=NIC.Integrated.1-3-1#DeviceLevelConfig]
NIC.DeviceLevelConfig.4 [Key=NIC.Integrated.1-4-1#DeviceLevelConfig]

root@node9 ~ # racadm get NIC.DeviceLevelConfig.1
[Key=NIC.Integrated.1-1-1#DeviceLevelConfig]
#SRIOVSupport=Available
VirtualizationMode=SRIOV

root@node9 ~ # racadm set NIC.DeviceLevelConfig.1.VirtualizationMode SRIOV
[Key=NIC.Integrated.1-1-1#VirtualizationMode]
RAC1017: Successfully modified the object value and the change is in
       pending state.
       To apply modified value, create a configuration job and reboot
       the system. To create the commit and reboot jobs, use "jobqueue"
       command. For more information about the "jobqueue" command, see RACADM
       help.

To apply the settings set above, a job-queue needs to be setup to apply them:

racadm jobqueue create NIC.Integrated.1-1-1

The above applies the BIOS settings.

3.1. SR-IOV

The foolowing code snippet enables SR-IOV in BIOS and on the first two NICs in the system:

racadm set BIOS.IntegratedDevices.SriovGlobalEnable Enabled
racadm jobqueue create BIOS.Setup.1-1
for i in 1 2 ; do racadm set NIC.DeviceLevelConfig.${i}.VirtualizationMode SRIOV ; sleep 2 ; done
for i in 1 2 ; do racadm get NIC.DeviceLevelConfig.${i}.VirtualizationMode ; sleep 2 ; done
for i in 1 2 ; do racadm jobqueue create NIC.Integrated.1-${i}-1 ; sleep 2 ; done

The example above enables the global option for SR-IOV and creates a job to apply it, then sets the options of the first two NICs, displays them and creates jobs to apply them.

4. HP

Currently work in progress.