使用AMI SCELNX修改BIOS设置
在 通过linux命令行修改服务器BIOS配置 介绍了Linux平台下修改服务器BIOS的方法,基本上各个服务器厂商都采用AMI的BIOS,基本工具实际是相同的。
AMI Setup Control Environment (AMISCE) 是命令行工具提供了更新NVRAM变量,也就是直接设置BIOS的方法。AMISCE提供了一个脚本来列出系统所有的设置选项问题,然后用户就可以通过修改这个脚本文件并使用它来正确修改NVRAM设置变量。
AMISCE 在 Linux 下通過 SCELNX_64 命令行工具來配置 BIOS ,SCELNX_64 依赖 kernel-devel 软件包:
yum install -y kernel-devel准备工作
通过远程ipmi方式先验证能够通过串口控制台访问服务器:
ipmitool -I lanplus -H IP -U username -P password -E sol activate登录服务器,通过ipmitool将服务器引导到BIOS界面,方法请参考 ipmitool使用tips:
ipmitool raw 0x00 0x08 0x05 0x80 0x18 0x00 0x00 0x00
ipmitool chassis bootdev bios
ipmitool chassis bootparam set bootflag force_bios重启服务器
sync;sync;sync
shutdown -r now重启后服务器会自动进入BIOS界面
通过SCELNX设置
首先读取并保存 AMI BIOS 配置文件 NVRAM script file:
SCELNX_64 /o /lang /s BIOS-with-map-string.cfg /hb对于早期版本工具,可能不支持
/lang参数或者/hb参数,可以简化为SCELNX_64 /o /s BIOS-with-map-string.cfg。
只有 /lang 参数导出的配置文件,才包含BIOS配置项对应的 map string
例如:
具有 map string 的导出配置
Setup Question = Active Video
Map String = IRCS001
Token =22 // Do NOT change this line
Offset =4F
Width =01
BIOS Default =[00]Auto
Options =*[00]Auto // Move "*" to the desired Option
[01]Onboard Device
[02]PCIE Device没有 map string 的导出配置
Setup Question = Active Video
Token =22 // Do NOT change this line
Offset =4F
Width =01
BIOS Default =[00]Auto
Options =*[00]Auto // Move "*" to the desired Option
[01]Onboard Device
[02]PCIE Devicemap string可以帮助我们定位BIOS问题,例如,我们如果只需要检查单一的选项,就可以按照 map string 查询:
Single Question Export Usage:
SCELNX_64 /o [/lang <Lang Code>] /ms <question map string> [/q] [/d] [/hb]查看 BIOS 单一配置选项的命令
设置举例
我们需要开启服务器NUMA功能
首先输出BIOS当前配置文件:
SCELNX_64 /o /lang /s bios_no_numa.cfg /hb检查配置文件 bios_no_numa.cfg 可以看到有关Numa配置,当前是关闭状态:
Setup Question = Numa
Map String = CRCS005
Token =0C // Do NOT change this line
Offset =09
Width =01
BIOS Default =[00]Disable
Options =*[00]Disable // Move "*" to the desired Option
[01]Enable此时使用 numactl -H 可以看到只有一个node:
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
node 0 size: 195995 MB
node 0 free: 7216 MB
node distances:
node 0
0: 10不过,为了能够设置BIOS,需要选择一台同型号规格服务器,通过带外控制台防伪BIOS的交互界面,设置好NUMA,然后重启并使用上述命令导出一份激活了NUMA的BIOS配置,以便确定需要修改的内容:
对比可知激活NUMA的设置如下:
Setup Question = Numa
Map String = CRCS005
Token =0C // Do NOT change this line
Offset =09
Width =01
BIOS Default =[00]Disable
Options =[00]Disable // Move "*" to the desired Option
*[01]Enable通过对比可以看到,如果只是激活 双node 配置的 NUMA,实际修改配置内容非常少,只有
Options =[00]Disable // Move "*" to the desired Option
*[01]Enable既然我们通过
/lang参数已经获得了有关NUMA配置的map string值是CRCS005,所以我们可以通过以下命令单独查询出NUMA配置项
./SCELNX_64 /o /ms CRCS005 /hb输出就是选项设置,如下
Options =*[00]Disable
[01]Enable根据
map string修改单独配置项
./SCELNX_64 /i /ms CRCS005 /qv 0x01 /hb提示:
Question value imported successfully.再次检查NUMA单项配置,可以看到BIOS已经调整成激活NUMA
#./SCELNX_64 /o /ms CRCS005 /hb
Options =[00]Disable
*[01]Enable注意:有些BIOS配置需要修改多个位置,例如
Boot Option就有多个问题设置需要修改,必须全部修改才能生效。见原文:使用 AMI SCELNX 工具配置 BIOS
重启服务器,重启以后,使用
numactl -H验证可以看到服务器的NUMA已经激活
#numactl -H
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12
node 0 size: 97691 MB
node 0 free: 9668 MB
node 1 cpus: 13 14 15 16 17 18 19 20 21 22 23 24
node 1 size: 98304 MB
node 1 free: 12509 MB
node distances:
node 0 1
0: 10 21
1: 21 10参考
Last updated
Was this helpful?