BMC超级用户密码一般为:sysadmin /superuser
Root /0penBmc admin/admin
修改BMC用户密码
1. ipmitool user list 1 显示BMC的用户信息
Ipmitool user set name ID admin123 ID是第几个用户
Ipmitool user set password ID admin123
例子: ipmitool user set password 1 root1234 //设置用户名 可以覆盖原用户名
ipmitool user set password 1 root12345 // 设置密码
KCS
KCS全称是Keyboard Controller Style,关于这个名称不用过多的追究,只需要知道它是系统(BIOS和OS)和BMC通信的一种基本方式即可。本文将介绍BIOS下的KCS接口,包括接口使用方式和数据。内容参考自《ipmi-second-gen-interface-spec-v2-rev1-1.pdf》
- NetFn/Cmd:IPMI命令有不同的分组,通过NetFn/Cmd命令字的方式来索引,在IPMI命令介绍会进一步说明。
- LUN:Logical Unit Number,占据8个比特中的最低两个,对于通过KCS向BMC发送的数据,LUN的值都是00b。
- Data:IPMI命令的实际请求数据
KSC通信
KSC接口定义了一组IO寄存器,通过它们就可以完成与BMC的交互,这组寄存器的基地址基本上已经固定:
gIpmiFeaturePkgTokenSpaceGuid.PcdIpmiIoBaseAddress|0xCA2|UINT16|0xF000000A
为了使用该地址,首先需要打开它的映射,代码如下所示:
/**Initializing hardware for the IPMI transport.@retval EFI_SUCCESS Hardware was successfully initialized.@retval Other An error was returned from PlatformIpmiIoRangeSet.
**/EFI_STATUS
InitializeIpmiTransportHardware(VOID){EFI_STATUS Status; Enable OEM specific southbridge SIO KCS I/O address range 0xCA0 to 0xCAF at here// if the the I/O address range has not been enabled.//Status =PlatformIpmiIoRangeSet(PcdGet16(PcdIpmiIoBaseAddress));DEBUG((DEBUG_INFO,"IPMI: PlatformIpmiIoRangeSet - %r!\n",Status));returnStatus;}
对于PlatformIpmiIoRangeSet()函数的实现,可以暂时不过,因为依赖于不同的硬件平台,对于x86平台,通常是LPC设备一些操作。
当完成PcdIpmiIoBaseAddress基地址之后,就可以进行IO操作了,对应的寄存器如下:
可以看到就4个寄存器(如果考虑共用的部分,其实就2个寄存器):
- Status:只读寄存器,包含了操作过程中的Flag。
- Command:只写寄存器,用于写入各类操作,这些操作称为“Write Control Codes”。
- Data_Out:只读寄存器,用来读取数据。
- Data_In:只写寄存器,用来写入数据或者“Read Control Codes”。
ipmitool -H 100.8.9.123 -I lanplus -U admin -P admin chassis power
Chassis Device This chassis control device represents functions associated with recovery control actions such as power on/off, power cycle, reset, diagnostic interrupt, chassis identification indicator, and system boot.
ipmitool -H ip -I lanplus -U admin -P admin chassis power on //开关机
#ipmitool -H -U root chassis bootdev disk clear-cmos=yes //清除Cmos