 |
≫ |
|
|
 |
 |
pxelinuxとは、CDや FDからのインストール時に使用されるローダーである syslinuxを PXEに対応させたもので、指定できるオプション等は syslinuxと同等となっています。本ページでは、この pxelinuxで tftpサーバよりカーネルを取得し、インストール CDイメージを NFS経由で参照する kickstartインストール、つまりネットワーク経由での完全自動インストール方法を行う方法について説明します。 |
 |
pxelinuxの詳細は syslinux.zytor.com/pxe.phpを参照 |
1. |
システムが PXE経由でブートし、DHCPサーバへアドレスを要求する
|
2. |
DHCPサーバが、IPアドレス、tftpサーバのアドレス、最初にロードするプログラム名(pxelinux)等を通知する
|
3. |
システムが DHCPサーバから通知された情報を元に、tftpで pxelinuxを取得する
|
4. |
システム上の pxelinuxが tftpサーバから構成ファイル(カーネルファイル名 initrdファイル名、ブートオプション等の書かれているファイル)を取得する
|
5. |
システム上の pxelinuxが取得した構成ファイルを元に tftpサーバからカーネル、initrdイメージを取得し、それを使用してブートする
|
6. |
システム上でインストーラーが起動し、kickstart用構成ファイルを NFS経由で取得する
|
7. |
システム上で kickstart用構成ファイルの指定に従いインストールが行われる、キット(インストール CDイメージ)は NFS経由で参照される
|
|
これらは同一のサーバ上で動作させる事も、それぞれ別のサーバで動作させる事も可能です。当方が構築したインストール用環境では、1台の Red Hat 7.2上ですべてのサービスを動作させて確認を行っています。その際、それぞれのサービスは Red Hat 7.2でインストールされるものをそのまま使用しました。 |
必要なファイルの配置(vmlinuz, initrd.img, syslinux.cfg, pxelinux.0, ks.cfg)を行います。
tftpおよび NFSで取得される各種ファイルを配置します。今回は tftpのルートディレクトリは /tftpboot、NFSのエクスポートディレクトリは /usr/local/exportsにしています。 |
 |
- インストールに使用されるカーネル、initrdイメージおよび syslinux.cfgは、インストール CD 1枚目の /images/bootnet.imgから取り出します(/images/pxebootディレクトリにある vmlinuz, initrd.imgでも可)。
 |
#mkdir /work
#mount -o loop bootnet.img /work
#cd /work
#mkdir /tftpboot/pxelinux.cfg (pxelinux のために必要)
#cp initrd.img vmlinuz /tftpboot
#cp syslinux.cfg /tftpboot/pxelinux.cfg
|
- syslinux.cfgを以下のように書き換えます。
 |
default ks
prompt 0
label ks
kernel vmlinuz
[シリアルを利用しない場合]
append ks=nfs:192.168.1.12:/usr/local/exports/ks.cfg initrd=initrd.img
もしくは…
[シリアルを利用する場合]
append ks=nfs:192.168.1.12:/usr/local/exports/ks.cfg initrd=initrd.img console=tty0 console=ttyS0,115200
|
- defaultというファイルを syslinux.cfgにシンボリックリンクさせます。これは pxelinuxは DHCPで取得した IPを HEXに変換したファイル名もしくは defaultというファイルを構成ファイルとして取得するようにハードコーディングされている為です。
 |
#cd /tftpboot/pxelinux.cfg
#ln -s syslinux.cfg default
|
- pxelinux.0を配置します。
www.kernel.org/pub/linux/utils/boot/syslinux/から syslinux-1.72.tar.gzをダウンロードし、適当なディレクトリで解凍&展開後、得られた pxelinux.0を /tftpbootディレクトリにコピーします。
 |
#tar zxvf syslinux-1.72.tar.gz
#cp syslinux-1.72/pxelinux.0 /tftpboot/
|
- ks.cfgを作成します。今回は NFS経由で取得させるので、NFSのエクスポートディレクトリ(/usr/local/exports)に配置します。
 |
lang en_US
langsupport ja_JP.eucJP
network --bootproto dhcp
nfs --server 192.168.1.12 --dir /usr/local/exports
text
keyboard jp106
zerombr yes
clearpart --all
part /boot --size 60
part swap --size 512
part / --size 3072 --grow
install
mouse genericps/2 --emulthree
timezone --utc Asia/Tokyo
xconfig --monitor "generic monitor"
rootpw compaq
auth --useshadow --enablemd5
[シリアルを利用しない場合]
lilo --location mbr
もしくは…
[シリアルを利用する場合]
lilo --append "console=tty0 console=ttyS0,115200" --location mbr
reboot
%packages
@ Everything
%pre
echo "" > /dev/tty1
echo "" > /dev/tty1
echo "Kickstart installation in progress." > /dev/tty1
echo "" > /dev/tty1
echo "You can view the install process by using the" > /dev/tty1
echo "Integrated Administrator Remote Console feature." > /dev/tty1
%post
[下記の 2行はシリアルを利用する場合のみ必要]
echo 7:12345:respawn:/sbin/agetty 115200 ttyS0 vt100 >> /etc/inittab
echo ttyS0 >> /etc/securetty
sed 's/SAFE=no/SAFE=yes/' /etc/sysconfig/kudzu > /etc/sysconfig/kudzu.new
mv -f /etc/sysconfig/kudzu.new /etc/sysconfig/kudzu
chkconfig --level 0123456 apmd off
chkconfig --level 0123456 gpm off
chkconfig --level 0123456 sendmail off
chkconfig --level 35 httpd on
chkconfig --level 01246 httpd off
chkconfig --level 35 snmpd on
chkconfig --level 01246 snmpd off
chkconfig finger off
chkconfig talk off
chkconfig ntalk off
sed 's/eepro100/e100/' /etc/modules.conf > /etc/modules.conf.new
mv -f /etc/modules.conf.new /etc/modules.conf
|
- インストール CDイメージを NFSエクスポートディレクトリへコピー
 |
#mount /mnt/cdrom (インストール CDは 2枚ともすべてコピーする)
#cp -rp /mnt/cdrom/* /usr/local/exports
#umount /mnt/cdrom
|
- それぞれのサービス(tftp, DHCP, NFS)を有効に
- tftpを有効にします。
 |
#chkconfig tftp on ; /etc/init.d/xinetd restart |
- DHCPを有効にします。最初に/etc/dhcpd.confを以下の例を参考に書き換えます。
 |
deny bootp;
option domain-name "tsglab.net";
option domain-name-servers 192.168.1.254;
option subnet-mask 255.255.255.0;
default-lease-time 7200;
max-lease-time 7200;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
filename "pxelinux.0";
server-name "DHCPServer";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.200 192.168.1.240;
next-server 192.168.1.12;
}
|
- dhcpd.confを書き換えたら、サービスを起動します。
 |
#chkconfig tftp on ; /etc/init.d/xinetd restart |
- NFSを有効にします。/etc/exportsを以下の例を参考に書き換えます。
 |
/usr/local/exports *(ro)
|
- exportsを書き換えたら、サービスを起動します。
 |
#chkconfig nfs on ; /etc/init.d/nfs start
|
上述の手順でインストール用環境を構築後、システムの電源を入れると上述のインストールフローの通りに自動でインストールが行われます。 |
|