# 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
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"
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
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.