PXEブートによるネットワークインストールはディスクレスのインストールが簡単にできて便利なのであるが、CD/DVDと違ってファームウェアが含まれてないことがあって、ディスクやNICが認識されなくて困ることがある。
こういうとき、基本的には下記ページを参考にする。
debパッケージをインストーラに付属させる
debパッケージをダウンロードし、cpio.gz形式で固めたあと、initrd.gzに結合する。
# paxコマンドがなければインストールしておく
sudo aptitude install pax
mkdir -p /tmp/initrd_firmware
cd /tmp/initrd_firmware
mkdir firmware # ファームウェアのdebパッケージを入れるディレクトリをつくる
# wgetでダウンロードしてくる
cd firmware
wget http://ftp.jp.debian.org/debian/pool/main/f/firmware-free/firmware-linux-free_3.2_all.deb
cd .. # ひとつ上の階層に戻る
# firmware.cpio.gzを作成
pax -x sv4cpio -w firmware | gzip -c >firmware.cpio.gz
# initrd.gzに結合する
cd /var/lib/tftpboot/debian-installer/amd64
cat initrd.gz $FWTMP/firmware.cpio.gz > initrd_nonfree.gz
どのdebパッケージが必要かわからないけど、とりあえず入れたい
標準で付属していないパッケージを固めた非公式アーカイブがあるので、これを使うと、non-freeのドライバが大量に入る。
# paxコマンドがなければインストールしておく
sudo aptitude install pax
mkdir -p /tmp/initrd_firmware
cd /tmp/initrd_firmware
mkdir firmware
wget http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/squeeze/current/firmware.tar.gz
tar -C firmware -zxf firmware.tar.gz
pax -x sv4cpio -s'%firmware%/firmware%' -w firmware | gzip -c >firmware.cpio.gz
# initrd.gzに結合する
cd /var/lib/tftpboot/debian-installer/amd64
cat initrd.gz /tmp/initrd_firmware/firmware.cpio.gz > initrd_nonfree.gz
pxelinux.cfgを書き換えるのを忘れないようにする
忘れるとあれ?、ってなる。
label wheezy_nonfree
kernel wheezy-installer-c600/amd64/linux
append auto=true interface=auto (..snip..) initrd=wheezy-installer/amd64/initrd_nonfree.gz -- quiet