PXEを利用してDebianをネットワークインストールする

カーネルが消滅したのでどうしようとIRC@DeibanJPで相談したら,「インストールCDから起動してchrootしてカーネル再構築すればいいよ」と言われたけれどDynabook3430にはCDドライブなどついておらず純正の外付けドライブなどもなくbootできる手段といったらPXE対応のNICだけだったので,今日はPXEからネットワークインストーラーを使ってインストールしてみた.

bootまでの順番(予想)

  1. サーバPC起動
  2. サーバPC内で,DHCPサーバ,TFTPサーバ起動
  3. クライアントPC起動
  4. クライアントPC,PXEからブート開始
  5. クライアントPC,DHCPサーバをネットワーク上から探してきてIP要求
  6. サーバPCがクライアントPCからのIP要求にDHCPサーバで応答し,IPとともにbootイメージの場所を渡す.
  7. クライアントPC,TFTPを使ってbootイメージを取得後,boot.

必要なモノ

  • Linux入サーバ&PXE対応NIC搭載クライアントPC
  • DHCPサーバ(Debianパッケージだと"dhcp3-server")
  • TFTPサーバ(Debianパッケージだと"tftpd-hpa")

必要な情報

  • クライアントPCについてるPXE対応NICMACアドレス
    • PEXブートがONになっていれば,dhcpサーバを探しているあいだ表示されているはず.(00:10:DC:27:6C:15こういうの)

事前準備

ルータのDHCP機能をOFFにしておく.同一ネットワーク上にある他のDHCPサーバも切った方がいいとおもう.
debianインストーラー配布ページから"netboot.tar.gz"をダウンロードしてきて"/var/lib/tftpboot"に展開する.

$ mkdir /var/lib/tftpboot
$ cd /var/lib/tftpboot
$ wget http://people.debian.org/~joeyh/d-i/images/daily/netboot/netboot.tar.gz
$ tar xvzf netboot.tar.gz

各種サーバー設定

これで動きましたよな最低限っぽい設定.

/etc/dhcp3/dhcpd.conf
allow booting;
allow bootp;

subnet 192.168.0.0 netmask 255.255.255.0{
        option routers 192.168.0.1;
        option broadcast-address 192.168.0.255;
        }
host clientname{
        filename "/pxelinux.0";
        hardware ethernet 00:10:DC:27:6C:15;
        fixed-address 192.168.0.9;
        }

"option domain-name"の設定は必要なかった.

/etc/default/tftpd-hpa

なんとなく後からRUN_DAEMONをYesにしてみた.

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

最後のOPTIONSがサーバーのルートディレクトリになるみたいで,ここと前に設定した

        filename "/pxelinux.0";

が関係してくる予感.

実行

クライアントを起動すればインストーラーが立ち上がる.

参考サイト

ココを読むよりわかりやすいサイトたち.

4.6. TFTP ネットブート用ファイルの準備
http://www.debian.org/releases/stable/i386/ch04s06.html.ja
(Debian)netboot
http://robotics.naist.jp/~osamu-m/cgi-bin/wiki.cgi?(Debian)netboot