会社のネットワーク環境では既にDHCPサーバが動いている。
そんな訳で、以前PXE-DHCPというソフトを使ってPXEサーバを構築してた。
しかし、このpxe-pdhcpでは4011ポートで待ち受けしてくれない。
PXEブートの詳細についてはここを見た方が詳しく書いてあるw
4011ポートがなぜ必要になったかというと、KVMのゲストOSをPXEでインストール出来ないかってのが発端。
まぁ、KVMのゲストOSなんでISOをDVDとしてマウントすればPXEなんて不要なんだけど、出来ないと言われると解決したくなる。
それで見つけたのがこのサイト
PXE-PDHCPの修正は上記サイトでパッチを公開してくれてるので何とかなるんだけど、Etherbootを修正するのが面倒(--;)
うにゅ~
gPXEは既に開発が終了して今はiPXEなんですね。なんだかよくわかんない・・・。
でもって、ここからが本題 < 前置きが長すぎwww
pxe-pdhcpやtftp-serverを個別に用意しなくても、dnsmasqを使えばpxe-dhcpもtftp-serverも設定が出来る。
試した環境はCentOS7.2。結構ミニマムな環境でもインストールされてたので大概は入ってるんじゃないかな。
※CentOS6は入ってなかったのでyum install dnsmasqでインストールする
でもって、/etc/dnsmasq.confを編集する
vi /etc/dnsmasq.conf
---------------------------------------------------------------------------------------------------------------
port=0
enable-tftp
tftp-root=/var/lib/tftpboot
pxe.proxydhcp
pxe-servicec=x86PC,"dnsmasq-tftp-root/gpxe... proxydhcp.0",pxelinux
---------------------------------------------------------------------------------------------------------------
細かい説明はGoogle先生に聞くとわかる(こらっ
設定が完了したらdnsmasqサービスを起動する。
CentOS7ではserviceコマンドではなくsystemctlを使ってサービスを起動・停止などをする。
systemctl start dnsmasq
serviceコマンドみたいにOKとか出てくれない。
systemctl status dnsmasq
でステータスを確認
サーバ起動時も有効にする為に以下のコマンドも実行
systemctl enable dnsmasq
tftp-serverの設定が必要なんだけど、それは最初のwikiに書いてるので読んでねw
無事にKVMのゲストもPXEからインストール出来るようになりました。
おぃおぃ、肝心なところが書いてないだろ!って意見が聞こえてきそうですが・・・ここの記事はそんなもんです(開き直りwww
CentOS7やScientific Linux7はそろそろ真剣に触っていかないとダメだなぁ~と思う今日この頃

CentOS7で作るネットワークサーバ構築ガイド (Network server construction gu)
- 作者: サーバ構築研究会
- 出版社/メーカー: 秀和システム
- 発売日: 2015/03/25
- メディア: 単行本
- この商品を含むブログ (3件) を見る
この辺りも勉強しなきゃなぁ。。。
DockerもLXC連携でなんとなく使ってるけど、実は良くわかってないw

<試読版>Linuxコンテナー最新ツール Dockerを支える技術(日経BP Next ICT選書) 日経Linux技術解説書【試読版】
- 作者: 中井悦司
- 出版社/メーカー: 日経BP社
- 発売日: 2015/03/25
- メディア: Kindle版
- この商品を含むブログを見る
そういや、Rocketはどうなったのかな?
systemctlでも良いのだけど、いちいちステータス確認するのが面倒なので、こんなスクリプトを書いてみた。
---------------------------------------------------------------------------------------------------------------
#!/bin/bash
chk_status() {
if [ "$3" == "" ]; then
chk=`systemctl status $2 | grep Active`
echo ${chk}
else
systemctl status $2 $3
fi
}
case $1 in
start)
systemctl start $2
chk_status $1 $2 $3
;;
stop)
systemctl stop $2
chk_status $1 $2 $3
;;
status)
if [ "$3" == "" ]; then
systemctl status $2
else
systemctl status $2 $3
fi
;;
restart)
systemctl restart $2
chk_status $1 $2 $3
;;
reload)
systemctl reload $2
chk_status $1 $2 $3
;;
enable)
systemctl enable $2
systemctl list-unit-files --type=service | grep $2
;;
disable)
systemctl disable $2
systemctl list-unit-files --type=service | grep $2
;;
*)
systemctl $1 $2 $3
;;
esac
---------------------------------------------------------------------------------------------------------------
適当に/usr/local/sbin/辺りに保存して実行権を付けたら使える。
単純に実行後にstatusを出すようにしてるだけw