PXEブートでネットワークインストール@RHEL5 or CentOS5

最近のPCやサーバーではPXEというネットワークブートを使って、CDやDVDを使わずにOSをインストールすることができます。

もちろんネットワークインストールするためには、 インストールするサーバー以外にすでに動いているサーバーが必要になります。そのため、一台だけインストールする場合はあまり意味がないのですが、複数のサーバーにインストールする場合や、頻繁にインストールする場合などは結構便利になります。

まず、PXEでネットワークインストールするには、もちろんネットワーク環境とDHCPサーバー、tftpサーバー、ファイル配信用サーバー(HTTPやFTPなど)が必要になります。ここではサーバーもRHEL5を使用しているとします。

まずtftpサーバーで、最小限のブートイメージを配信するための設定が必要になります。RHEL5でtftp-serverのRPMがインストールされていれば、/tftpbootというディレクトリがあります。

まずは、tftpサーバーを有効にします。 disable=noにするだけです。

$ vi /etc/xinetd.d/tftp
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
}

設定を反映するには、xinetdを再起動します。

# /etc/init.d/xinetd restart

/tftpboot/の中はこんな感じです。initrd.imgやpxelinux.0, vmlinuzなどはインストールDVDにありますので、コピーしてきます。

/tftpboot/linux-install:
合計 9168
-r--r--r-- 1 root root 7399936 12月  4 11:03 initrd.img
drwxr-xr-x 2 root root    4096 10月  1 02:22 msgs
-rw-r--r-- 1 root root   13100 12月 20  2005 pxelinux.0
drwxr-xr-x 2 root root    4096 12月  4 11:19 pxelinux.cfg
-r--r--r-- 1 root root 1932316 12月  4 11:03 vmlinuz

/tftpboot/linux-install/msgs:
合計 48
-rw-r--r-- 1 root root 439  4月  7  2008 boot.msg
-rw-r--r-- 1 root root 668  4月  7  2008 expert.msg
-rw-r--r-- 1 root root 871  4月  7  2008 general.msg
-rw-r--r-- 1 root root 860  4月  7  2008 param.msg
-rw-r--r-- 1 root root 530  4月  7  2008 rescue.msg
-rw-r--r-- 1 root root 545  4月  7  2008 snake.msg

/tftpboot/linux-install/pxelinux.cfg:
合計 4
-rw-r--r-- 1 root root 91 12月  4 11:19 default

最後のdefaultはテキストファイルで、自分で書く必要があります。内容はこんな感じです。

default rhel

label rhel
kernel vmlinuz
append load initrd=initrd.img devfs=nomount

次はDHCPです。DHCPサーバーがRPMでインストールされているとして、/etc/dhcpd.confは以下のようにします。基本的に普通のdhcpサーバーの設定にnext-serverという設定とfilenameの設定が必要になります。

ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {
        next-server 192.168.0.2;        #これが必要。HTTPやFTPサーバーのIPを指定する
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.0.1;
        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 192.168.0.200 192.168.0.254;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "/linux-install/pxelinux.0";
}

最後はインストールイメージを配信するサーバー、ここではapacheを使います。

まず、インストールのDVD ISOイメージを用意します。

httpdがrpmでインストールされているとして、デフォルトは/var/www/htmlがWEBサーバーのルートなので、ここに適当なディレクトリを作って、上記のISOイメージをマウントします。ここでは、/var/www/html/rhelにマウントするとします。

# mount  -o loop ISOイメージ名 /var/www/html/rhel

apacheを起動します。

# /etc/init.d/httpd restart

以上で設定は完了です。BIOSでPXEブートができるようにしたマシンをネットワークに繋いで電源を入れると、起動するはずです。インストーラーが立ち上がる前に、インストールイメージの場所を指定する画面が出てきます。HTTPを選択後、上記の設定では、URLに192.168.0.2(サーバーのIP) 、パスに/rhelを入力すればインストーラーが立ち上がります。

タイトルとURLをコピーしました