Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104647866
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-28 22:17:11

 
文章来源中国IT实验室收集整理 作者Graham W…

更新驱动程序

    即使在集群中安装了操作系统不能直接支持的硬件,也仍然可能会有相应的驱动程序可以使用。在必要的时候,这个过程也适用于驱动程序更新。如果最终安装和安装操作系统时所用的 RAM 磁盘需要更新驱动程序,CSM 可以自动将附加或替换的驱动程序包括进来。

    在使用 System x 硬件的例子时,您通常会希望获得板载 Broadcom Ethernethard 适配器的 Broadcom 网络驱动程序所提供的性能和稳定性。要实现这一目的,可按如下步骤操作,这些步骤使用的是 Broadcom bcm5700 驱动程序而不是 Red Hat Linux 提供的标准的 tg3 网络驱动程序:

  1. 因为处理的是一个内核模块,所以要确保针对目标系统安装的内核源匹配内核等级和类型(UP 或 SMP)。

  2. 从 Broadcom (参看 参考资料)最新的 bcm57xx 驱动程序并解包驱动程序源代码。

  3. 从解包后的 bcm 驱动程序的 src 目录运行 make 来针对当前的运行内核进行构建。

  4. 将构建驱动程序 (bcm5700.ko for 2.6 kernel 或 bcm5700.o for 2.4 kernels)复制到管理服务器上的 /csminstall/csm/drivers/lt;kernel versiongt;/x86_64。

  5. 如果想针对其他内核版本进行构建,可以运行 make clean 来清除当前的构建,然后再运行 make LINUX=/path/to/your/kernel/source。

    CSM 在构建 RAM 磁盘映像时,使用目录结构 /csminstall/csm/drivers/lt;kernel versiongt;/lt;architecturegt 之下的驱动程序;当内核版本匹配 RAM 磁盘内核版本时,这些映像用来在安装过程中引导系统。注意当为安装映像创建驱动程序时一定要小心:安装内核的内核版本号可能会不一样。例如 Red Hat 通常会在版本字符串尾部追加单词 BOOT。如果内核版本与所安装系统的运行内核相匹配,驱动程序对当前的操作系统也可用。如果您不能确认内核的版本,可以在 RAM 磁盘映像内进一步深入研究,如以下一节所述。

修改 RAM 磁盘

    通常,这一步骤不推荐使用。但有时候又不得不这么做,比如不能确认内核版本的情况。在由于更新应用程序或其他情况而需要深入研究 RAM 磁盘映像时,以下命令会很有帮助。

    当使用主机总线适配器 (HBA) 将存储直接被连到 Red Hat Linux 系统时,存储驱动程序(例如 qlogic qla2300 驱动程序)可能会在 ServeRAID 驱动程序(用于内部系统磁盘即操作系统磁盘)之前加载。如果是这样,就意味着安装在错误的磁盘上了。/dev/sda 代表的是附加存储介质而非本地磁盘上的 LUN。在这种情况下,在安装新的操作系统时,对重写 SAN 上而非本地磁盘上的数据要格外小心。为避免其发生,请从 CSM 用来创建引导映像的默认 Red Hat RAM 磁盘上移除 qlogic 驱动程序。当然,系统运行时也需要驱动程序,所以请使用另外一种机制,例如 post 安装脚本来为运行中的操作系统安装驱动程序。由于默认 Red Hat qlogic 驱动程序通常都不是故障转移驱动程序,所以推荐采用上述做法。

    例如,从 Red Hat Enterprise Linux Advanced Server Version 3 的默认 RAM 磁盘映像移除 qla2300 驱动程序。表 4 给出了能实现此目的的命令。


表 4: RAM 磁盘命令
命令 目的
cd /csminstallhttp://Linux.chinaitlab.com/RedHatEL-AS/3/x86_64/RedHatEL-AS3-QU5/images/pxeboot 转到包含所需更改的 RAM 磁盘映像的那个目录。
cp initrd.img initrd.img.orig 备份原始映像。
mkdir mnt 创建一个挂载点。
gunzip -S .img initrd.img 解包这个映像。
mount -o loop initrd.img /mnt 将这个映像挂载到挂载点。
手动步骤 手动移除所有到 mnt/modules/* 中的 qla[23]00 的引用。
cp mnt/modules/modules.cgz 将模块归档文件从映像复制到当前目录。
gunzip -c modules.cgz | cpio -ivd 解包这个模块归档文件。
rm modules.cgz 删除这个模块归档文件。
rm 2.4.21-32.EL/ia32e/qla2* 从解包后的模块归档文件中删除 qlogic 模块。
find 2.4.21-32.EL -type f | cpio -–o -H crc | gzip -c -9 > modules.cgz 删除 qlogic 模块后,打包剩余模块。
rm -rf 2.4.21-32.EL 删除解包后的模块归档文件。
mv -f modules.cgz mnt/modules 用新的模块归档文件代替旧的模块归档文件。
umount mnt 卸载这个 RAM 磁盘映像。
rmdir mnt 移除挂载点。
gzip -S .img initrd 再次打包这个 RAM 磁盘映像。

    注意:要修改 Suse 或 SLES 的 RAM 磁盘,必须确保 ips(ServeRAID 驱动程序)出现在 INITRD_MODULES stanza 之下的 /etc/sysconfig/kernel 文件内的所有 HBA 驱动程序之前。用于创建 RAM 磁盘映像的 Suse 或 SLES 机制可确保驱动程序被顺序加载。

安装重新引导前和重新引导后脚本

    由于每个环境和集群都是不相同的,您可能需要应用一些安装后脚本来根据您自己的特定需求定制操作系统安装。可以在重新引导到新安装的系统之前或之后进行这些操作。对于配置备用网络适配器来说,这十分有用,CSM 针对此目的提供了一个示例脚本。由于双网络设置(到每个节点都有一个计算网络和一个存储网络)的原因,这个示例集群将需要使用备用适配器配置。具体的步骤如下所示:

  1. 将 CSM 提供的默认适配器配置脚本复制到 installprereboot 脚本执行目录以使脚本可以在安装时运行,确保它能运行,如下所示:
    cp /csminstall/csm/scripts/adaptor_config_Linux /csminstall/csm/scripts/
    	installprereboot/100_adapter_config._LinuxNodes
    chmod 755 /csminstall/csm/scripts/installprereboot/100_adaptor_config._LinuxNodes
    

  2. 生成适配器 stanza 文件 /csminstall/csm/scripts/data/Linux_adapter_stanza_file,可如下所示编写头部:
    default:
    machine_type=secondary
    network_type=eth
    interface_name=eth1
    DEVICE=eth1
    STARTMODE=onboot
    ONBOOT=yes
    BROADCAST=192.168.1.255
    NETMASK=255.255.255.0
    MTU=9000
    

  3. 这会配置所有备用 (eth1) 适配器在引导时启动,并采用针对广播地址、网络掩码和 MTU 大小的默认设置。在附加的 stanza 行内还可以以一种与节点定义文件相同的方式配置特定于计算机的网络细节,如下所示:
    for node in $(lsnodes)
    do
      ip=$(grep $node /etc/hosts | head -n 1 | awk '{print $1}')
      echo -e "$node:\n  IPADDR=$ip" gt;gt; Linux_adaptor_stanza_file
    done
    

  4. 这会把输出追加到适配器 stanza 文件以为每个计算机配置不同的 IP 地址,如下所示:
    node001.cluster.com:
      IPADDR: 192.168.1.1
    node002.cluster.com:
      IPADDR: 192.168.1.2
    node003.cluster.com:
      IPADDR: 192.168.1.3
    
阅读(258) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~