守破離でいこう! -Let's go with SyuHaRi!-

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

ラベル:

naoki 13:10
HaloScan: |

0 Comments:

Add a comment