2007/07/24

PXEでCentOSをネットワークインストールする


新しく用意したマシンに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


ファイアウォールの設定

これまで構築したサーバで使用するポートを開放














サーバポートプロトコル
DHCP67UDP
TFTP69UDP
PXE4011UDP

###
# 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でのネットワークインストールも良いかなと思います。

0 件のコメント: