LAN 内で構築し,インストールを行うたびごとにそれぞれのサービスを起動することにします.
apt-get install などを用いて導入しておきます.
Vine Linux 5.0 インストール用 CD, DVD などをマウントします.
# mount -t iso9660 /dev/cdrom /mnt/cdrom
/etc/exports に以下の内容を追記します.
/mnt/cdrom -(ro)
nfs サーバを起動します.
# service nfs start
次の内容で /etc/xinetd.d/tftp ファイルを作成します.
service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -c -s /tftpboot per_source = 11 cps = 100 2 }
これで
# service xinetd start
とすると tftpd が起動します.xinetd の起動時に tftpd が起動しないようにするには,disable の値を yes にします.
tftp サーバの使うディレクトリを作成し,その下に Linux インストール用のディレクトリを作成します.さらにその下に PXE ブート用の設定ファイルを格納するディレクトリを作成します.
# mkdir -p /tftpboot/linux-install/pxelinux.cfg
Vine Linux インストール CD(など)に含まれる PXE ブート用のイメージをコピーします.
# cp /mnt/cdrom/images/pxeboot/- /tftpboot/linux-install
syslinux パッケージに含まれる pxelinux.0 ファイルを同じところにコピーしておきます.
# cp pxelinux.0 /tftpboot/linux-install
起動設定用のファイル(/tftpboot/linux-install/pxelinux.cfg/default)を作成します.テストに使用した IBM ThinkPad 240Z では,次のようにすると anaconda が正常に起動できました(append の行がポイントです).
default VineLinux5Network label VineLinux5Network kernel vmlinuz append text initrd=initrd.img vga=0x303
インストール CD の isolinux/isolinux.cfg ファイルの text の部分を参考にしました.
必要なら稼働確認を行います.例えば /tftpboot/test.txt ファイルを作成し,適当な内容を書き込んでおきます.
tftp-client がインストールされていれば,tftp サーバの稼働しているマシンならば,次のようにして test.txt を取得できます.
$ tftp localhost tftp> get test.txt tftp> quit
カレントディレクトリに test.txt ができており,内容が同じならば成功です.
/etc/dhcp/dhcpd.conf ファイルを編集します.
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option subnet-mask 255.255.255.0; option time-offset 54000; # Eastern Standard Time range dynamic-bootp 192.168.1.64 192.168.0.70; filename "linux-install/pxelinux.0"; default-lease-time 21600; max-lease-time 43200; }
range dynamic-bootp のところに,インストールするマシンに割り当てる IP(の範囲)を記述します.filename には /etc/xinetd.d/tftp で指定した /tftpboot からの相対パスで pxelinux.0 ファイルを記述します.
次のサービスへのアクセスを可能にするために,いくつかのポートを解放する必要があります.
サービス | ポート | tcp/udp |
nfs | - | tcp/udp |
tftp | 69 | udp |
dhcp | 67 | udp |
nfs はいくつもの(不定の)ポートを使用するので,LAN 内が十分安全なら iptables をインストールの間だけ一時的に停止するのが簡単です.
# service iptables stop