サーバ設定系の記事が続きます。
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ブートを有効にしてね。