CentOS5.2 のpxebootインストール

  • 投稿日:
  • by
  • カテゴリ:

CentOS5.2 x64 をインストールするという依頼がありcobbler (pxeでインストールするシステム)でできればなぁと思って登録したが動かない。

対象のサーバはHP Proliant BL460 G6という機種で、ネットワークがbnx2xというドライバを使っています。CentOS5.2のinitrd.imgに組み込まれているドライバがどうもダメらしい。

ドライバをコンパイルして、initrd.img を作りなおすことによりpxeインストールは成功しました。

インストール後にbnx2xが動かない。
CentOS5.2で入れているbnx2xのドライバのバージョンは古いため対応していない。このままだと動かないので、cobbler でインストール時にドライバを入れ替えるようにすることにしました。

CentOS5.6あたりのイメージでインストールすると問題無くインストールできるので
5.2あたりだとダメだったんだろう。

後日手順などは追記します。


以下は手順

PXEまたはcobblerを提供しているサーバで

あとでドライバをコンパイルするときに必要。
rpm -ivh --force kernel-2.6.18-92.el5
rpm -ivh --force kernel-dev-2.6.18-92.el5


rpm -ivh hp-netxtream2-7.0.39-2.src.rpm
cd rpm/SOURCES
cp hp-netxtreame2-7.0.39.tar.gz /tmp

cd /tmp

mkdir initrd-new

cp /mnt/cdrom/images/pxeboot/initrd.img .

cd initrd-new
zcat ../initrd.img | cpio -i -c

以下が展開されます。
bin
dev
etc
init
modules
proc
sbin
selinux
sys
tmp
var

cd modules
modules.alias(変更が必要) modinfoの結果をコピーする。
modules.dep(追加が必要) ドライバの読み込みに記載が必要。

cd /tmp
mkdir driver
cd driver
cd ../hp-netxtreme2-7.0.39.tar.gz
cd hp-netxtreme2-7.0.39/bnx2x/src
make -C /lib/modules/2.6.18-92.el5/build M=`pwd` clean
make -C /lib/modules/2.6.18-92.el5/build M=`pwd` modules

modinfo ./bnx2x.ko

[root@hoge src]# modinfo ./bnx2x.ko
filename: ./bnx2x.ko
version: 1.70.40
license: GPL
description: Broadcom NetXtreme II BCM57710/57711/57711E/57712/57712_MF/57800 /57800_MF/57810/57810_MF/57840/57840_MF Driver
author: Eliezer Tamir
srcversion: C02D11744F4EFA7B09E5D0B
alias: pci:v000014E4d000016ABsv*sd*bc*sc*i*
alias: pci:v000014E4d0000168Dsv*sd*bc*sc*i*
alias: pci:v000014E4d000016AEsv*sd*bc*sc*i*
alias: pci:v000014E4d0000168Esv*sd*bc*sc*i*
alias: pci:v000014E4d000016A5sv*sd*bc*sc*i*
alias: pci:v000014E4d0000168Asv*sd*bc*sc*i*
alias: pci:v000014E4d00001663sv*sd*bc*sc*i*
alias: pci:v000014E4d00001662sv*sd*bc*sc*i*
alias: pci:v000014E4d00001650sv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Fsv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Esv*sd*bc*sc*i*
depends:
vermagic: 2.6.18-92.el5 SMP mod_unload gcc-4.1

cd /tmp/initrd-new/modules/
vi modules.alias
以下に変更
alias pci:v000014E4d000016ABsv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d0000168Dsv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d000016AEsv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d0000168Esv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d000016A5sv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d0000168Asv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d00001663sv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d00001662sv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d00001650sv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d0000164Fsv*sd*bc*sc*i* bnx2x
alias pci:v000014E4d0000164Esv*sd*bc*sc*i* bnx2x

vi modules.dep
以下を追加(記載が無かったため)
bnx2x: 8021q mdio

mkdir /tmp/modules-new
cd /tmp/modules-new
gzip -dc /tmp/initrd-old/modules/modules.cgz|cpio -iuvmd
2.6.18-92.el5/x86_64
ドライバが展開されます。

cp /tmp/driver/hp-netxtreme2-7.0.39/bnx2x/src/bnx2x.ko /tmp/modules-new/2.6.18-92.el5/x86_64/

ドライバをまとめる
cd modules
find .|cpio --quiet -c -o | gzip -c > ../modules-new.cgz

intird.im の再作成
cd initrd-new
find .|cpio --quiet -c -o|gzip -c > ../initrd-new.img

作成されたinitrd-new.imgをPXEもしくはDVDに焼けば使えるようになります。
ただし、インストール後は標準のkernelのドライバが書かれてしまうため
正しく動きません。ドライバのコピー、インストールがうまくできるように剃る必要があります。