分类:
2008-04-28 22:19:40
在 IBM 系统上更新固件
注意:以下更新固件的方法在您所在的地区或硬件上可能不受支持。建议在升级之前与本地的 IBM 代理确认。这个信息只是作为示例之用。
用来远程刷新固件的 CSM 代码仍处在开发之中。目前,如果需要对许多计算机进行 BIOS、BMC 或其他固件更新,就会遇到一个大问题。用当前的方法不能合理地刷新大型集群,需要写入一张软盘或 CD 镜像,并需要对每台计算机分别执行刷新;所以需要另一种方法。如果没有硬件电源控制(没有设置 BMC IP 地址),请先从刷新 BMC 固件开始,使您能够同时设置 IP 地址。只需要一次性按下全部电源按钮。对于其他固件刷新,可以远程打开或关闭系统的电源。
下面的示例针对的是 IBM Systems 325 或基于 AMD 处理器的 326 系统。但是,只要稍做修改,就能把它应用到 System x 计算机。其原理是获得一个默认固件更新镜像,对其进行修改,这样就可以把当用作 PXE 启动镜像。然后,可以通过网络启动一个系统,然后解开镜像,刷新相关固件。一旦把系统设置成 PXE 启动,只需要开启系统就可以进行刷新。
设置 PXE 启动服务器
在网络上需要一台运行 DHCP 和 TFTP 服务器的计算机。安装并运行 CSM 管理节点的计算机是一个合适的替代方案。但是,如果目前在网络上还没有安装计算机,可以使用一台连接到网络并运行 Linux 的笔记本。确保 PXE 服务器在网络的正确位置(在同一子网内),或者确保交换机能把 DHPC 请求跨子网转发到正确的服务器。然后,完成以下步骤:
ddns-update-style ad-hoc; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.255.254; filename "/pxe.0"; next-server 192.168.0.1; } |
serial 0 9600 default local #default bmc #default bios #default broadcom label local localboot 0 label bmc kernel memdisk append initrd=firmware/bmc.img label bios kernel memdisk append initrd=firmware/bios.img label broadcom kernel memdisk append initrd=firmware/broadcom.img |
作为参考,当计算机在 PXE 期间接收到 DHCP 地址时,就用特定顺序搜索 /tftpboot/pxelinux.cfg 下的配置文件,第一个找到的文件被用作请求计算机的启动配置。搜索顺序的确定方法是:把请求 DHCP 地址转换成 8 个 16 进制数字,通过扩展子网对配置目录搜索第一个匹配的文件名(每一次搜索后从右到左删除一位数字)。
例如,假设一台客户计算机在 PXE 启动期间从服务器得到地址 192.168.0.2。第一次文件搜索是搜索这个 IP 地址的 16 进制形式 /tftpboot/pxelinux.cfg/C0A80002。如果这个配置文件不存在,第二个搜索就查找 C0A8000,依次类推。如果没有找到匹配,就用名为 default 的文件。所以,把以上 PXE 配置放在名为 default 的文件可以为所有计算机工作,而不论 DHCP 的配置如何。但是,如果把配置写入 C0A800 (192.168.0.0/24 子网)将减少搜索的次数。
更新基板管理控制器(BMC)固件和设置 IP 地址
注意:这里描述的产品用于基于 AMD 的集群节点。但是,对基于 Intel 的产品也可以采用类似过程。Intel BMC 的更新由 bmc_cfg.exe 程序(不是 lancfg.exe)提供,用来设置 BMC 地址。可以用终端服务器,使用与 部分提供的脚本类似的脚本驱动该过程。而且,对于基于 Intel 的计算机,通常可以在系统 BIOS 中设置 BMC 地址。
在节点上设置了 BMC 地址之后,就可以进行远程电源控制,这样的话就可以更加轻松地配置集群了。但是,更新 BMC 的这种方法依赖网络启动,所以如果计算机在 BIOS 中没有设置为 PXE 启动,只能先更新 BIOS,然后再回来对 BMC 进行更新。
最新的 BMC 固件更新 DOS 镜像,按照说明创建软盘启动镜像。这个镜像包含叫做 lancfg.exe 的程序,用它可以设置 BMC 的 IP 地址。执行的一般过程是插入软盘,并从软盘启动,用软盘进行更新。但是,首先在 PXE 启动服务器计算机上使用以下命令从软盘创建 PXE 启动镜像:
dd if=/dev/fd0 of=/tftpboot/firmware/bmc.img bs=1024 |
现在可以根据需要编辑 DOS 镜像。对于 BMC 更新来说,基本镜像本身不需要做修改,只要把 DOS 关机程序拷贝到镜像。从高层次来看,在计算机加电时,计算机通过 PXE 启动来刷新 BMC 固件,然后让计算机在 DOS 镜像中运行。可以用一个脚本来通过终端服务器设置 BMC 地址,然后关闭计算机。这样,就可以知道所有开着的计算机正在刷新 BMC 固件,或者等待设置 IP 地址。在所有关闭的计算机上,将结束该过程。请下载合适的基于 DOS 的关机命令,例如 atxoff.com 实用工具。有了关机实用工具之后,请按照下面的步骤把它拷贝到镜像中:
mount -o loop /tftpboot/firmware/bmc.img /mnt cp /path/to/poweroff.exe /mnt umount /mnt |
现在修改适当的注释,在前面创建的 /tftpboot/pxelinux.cfg/default 文件中设置 BMC 为默认项,确保 PXE 启动配置文件能发送正确的镜像。测试了一个节点之后,从关机状态启动所有计算机,这样所有需要的节点就都能得到更新。所有节点都启动了 PXE 镜像之后,请把配置修改回本地启动,从而最小化意外刷新计算机的情况(如果其中一个被重新启动的话)。
现在可以调用 lancfg 程序,并通过终端服务器操作它(假设 BIOS 设置通过串口导出了终端,与终端服务器配置相同)。可以在 Perl 脚本中用 lancfg 配置 BMC IP 地址,例如 下载 部分中可用的不支持的示例脚本。例如,要在网关地址 192.168.10.254、子网掩码 255.255.255.0 的名为 Rack1 的节点组中设置所有计算机的 BMC 地址,请从 PXE 启动服务器计算机上运行以下命令:
perl set-bmc-address.pl -N Rack1 -g 192.168.10.254 -m 255.255.255.0 |
可以根据自己的设置定制这个脚本。脚本完成时,计算机在设置完 BMC IP 地址之后,用拷贝到启动镜像的 DOS 关机程序自动关闭。