CentOS7でPXEサーバを作ってみる

Filed in コンピュータ

サーバ設定系の記事が続きます。

NFSサーバを立ててESXiから使っている訳ですがRAIDを組むためにHDDを追加したことは先の記事のとおり。
拡張性のあまりないPCを使ったので空きベイが足りなかった。
このとき何も考えていなかったのでCD-ROMドライブを外して5インチベイにHDDを2つ挿してしまいました。

そうです。OSをインストールしようとしたときになって「あっ!起動できない」と気づいたわけです。
いったんHDDを外すという手もありますが、せっかくなのでPXEサーバをたててネットワークインストールをすることにしました。

ということでメモ。

始める前にインストールイメージをどっかから用意しておく。
今回はCDを用意した。

必要なものをインストール

$ yum install tftp-server xinetd dhcp syslinux httpd

xinetdの設定をしてtftpを有効にする

/etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s -v /var/lib/tftpboot   <= -vつけ。/var/log/messageにログが出るよ。
        disable                 = no                        <= yesから変える。
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

xinetdを再起動

$ systemctl restart xinetd

DHCPサーバを用意する。
抜粋。

/etc/dhcp/dhcpd.conf

option domain-name "dracula.mydns.jp";   <= ドメイン
option domain-name-servers 192.168.1.1;     <= DNS

subnet 192.168.1.0 netmask 255.255.255.0 {
        filename "/pxeboot/pxelinux.0";          <= PXEの設定。
        range 192.168.1.250 192.168.1.254;      <= 割り当てに使うIP
        option routers 192.168.1.1;
        default-lease-time 600;
        max-lease-time 7200;
}

サービス再起動

$ systemctl restart dhcpd

ここから本番。
ブートローダsyslinuxを準備する。

cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxeboot/
cp -p /usr/share/syslinux/menu.c32   /var/lib/tftpboot/pxeboot/

webサーバの公開ディレクトリに用意したCDをマウント。
webサーバのディレクトリにするのはそのままインストールに使うから。

$ mkdir /var/www/html/centos7
$ mount /dev/cdrom /var/www/html/centos7

インストーラのイメージファイルをPXEブートディレクトリにコピー

$ cp -p /var/www/html/centos7/iso/isolinux/initrd.img /var/lib/tftpboot/pxeboot
$ cp -p /var/www/html/centos7/iso/isolinux/vmlinuz /var/lib/tftpboot/pxeboot

PXEブートの設定ファイル置き場を作成

$ mkdir /var/lib/tftpboot/pxeboot/pxelinux.cfg

PXEブートの設定ファイルを作成

/var/lib/tftpboot/pxeboot/pxelinux.cfg/default

default   menu.c32

label 1
menu label ^1) install centos 7 from pxeserver
kernel vmlinuz
append load initrd=initrd.img inst.repo=http://<pxeサーバ>/centos7/  <= CDマウントして公開したたもの。

inst.repoはhttp://ftp.riken.jp/Linux/centos/7/os/x86_64/など外部を使ってもいいと思う。
それならhttpdいらない。
ただし遅いと思うのでそれは覚悟。

最後にポートを開ける

$ firewall-cmd --permanent --add-port=67/udp  <= Boostrap Protocol Server
$ firewall-cmd --permanent --add-port=68/udp  <= Bootstrap Protocol Client (BOOTP)
$ firewall-cmd --permanent --add-port=69/udp  <= Trivial File Transfer Protocol (TFTP)
$ firewall-cmd --reload

これで準備は完了である。

あとはクライアントを同じセグメントに接続して起動すればいいのだ。
BIOSとかでPXEブートを有効にしてね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)