新しく用意したマシンにCentOSをインストールしようとしたのだけれど、なんとこのマシンにはCDDもFDDもついてなかった!
というわけで、PXEネットーワークブートを使用してCentOSをインストールすることにしました。
PXEネットワークブート用サーバを構築
まずは、PXEネットワークブート用のサーバを構築します。
「@IT:PXEネットワークブート用サーバを構築するには」
「PXEを使ったネットワークブート」
を参考にしました。
開発用のサーバとして使用しているCentOS4.4マシンをPXEサーバにすることにします。
- TFTPサーバを構築
- tftp-serverをインストール
# rpm -qa | grep tftp
# yum install tftp-server
Installed: tftp-server.i386 0:0.39-2
Complete!
/etc/xinetd.d/tftpを編集し、サービスを有効にする# vi /etc/xniinetd.d/trftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
# service xinetd restart
xinetd を停止中: [ OK ]
xinetd を起動中: [ OK ]
PXE用ブートイメージを取得# mkdir /tftpboot/pxe_centos4.5
# cd /tftpboot/pxe_centos4.5
# wget ftp://ftp.riken.jp/Linux/centos/4.5/os/i386/images/pxeboot/vmlinuz
# wget ftp://ftp.riken.jp/Linux/centos/4.5/os/i386/images/pxeboot/initrd.img
# ls
initrd.img vmlinuz - DHCPサーバを構築
- dhcpをインストール
# rpm -qa | grep dhcp
dhcpv6_client-0.10-14_EL4
# yum install dhcp
Installed: dhcp.i386 7:3.0.1-59.EL4
Complete!
設定ファイルを編集 ※ 不要な行は削除しています# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf
# vi /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name "r-stone.net";
option domain-name-servers 192.168.0.2;
option time-offset -18000; # Eastern Standar
d Time
filename "/pxe_centos4.5/pxelinux.
0";
range dynamic-bootp 192.168.0.250 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
}
# mkdir /var/lib/dhcpd
# touch /var/lib/dhcpd/dhcpd.leases
# service dhcpd start
dhcpd を起動中: [ OK ] - PXEサーバを構築
- syslinux(pxelinux)のインストール (既にインストール済みでした)
# rpm -qa | grep syslinux
syslinux-2.11-1
ブートローダの準備# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/pxe_ccentos4.5/
設定ファイルの作成# mkdir /trftpboot/pxe_centos4.5/pxelinux.cfg
# vi /tftpboot/pxe_centos4.5/pxelinux.cfg/default
default centos4
label centos4
kernel vmlinuz
append load initrd=initrd.img devfs=nomount - ファイアウォールの設定
- これまで構築したサーバで使用するポートを開放
サーバ ポート プロトコル DHCP 67 UDP TFTP 69 UDP PXE 4011 UDP ###
# DHCP
###
iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 67 -j ACCEPT
###
# TFTP
###
iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 69 -j ACCEPT
###
# PXE
###
iptables -A INPUT -p udp -s 192.168.0.0/24 --dport 4011 -j ACCEPT - CentOSのイメージをマウント&HTTP公開
ISOイメージをマウント# mkdir /mnt/iso
# mount -t iso9660 -o loop /home/r-stone/iso/CentOS-4.5-i386-binDVD.iso /mnt/iso
Apatchで公開# vi /usr/local/apache2/conf/httpd.conf
Alias /centos4.5 "/mnt/iso"
<Directory /mnt/iso>
Options MultiViews Indexes FollowSymLinks
Order deny,allow
Deny from all
Allow from 192.168.0.0/24 127.0.0.1
</Directory>
# /usr/local/apache2/bin/apachectl restart
PXEネットワークブートでCentOSをインストール
いよいよCentOSをネットワークインストールします。
こちらは、
「@IT:PXEネットワークブートでLinuxをインストールするには」
を参考にしました。
- インストール方法の設定
PXEブートよりインストーラが起動してしまえば、あとは通常のインストールと同じです。
ただ、パッケージの転送はHTTPを使用するようにしましたので、インストール方法の画面では「HTTP」を選択し、HTTPの設定を行います。- インストール後
PXEサーバ側:
念のため使用後はサービスを停止しておきます- HTTP公開の停止
- イメージのアンマウント
- TFTPサーバの停止
- DHCPサーバの停止
クライアント側:- BIOSのPXEを無効に
CDDがなかったのは焦りましたが、結局CDDなんてインストール時にしか使わないわけで、消費電力を抑えるためにもPXEでのネットワークインストールも良いかなと思います。