CentOSにネットワークインストール環境を構築してkickstartでインストール
複数のサーバを構築するときに一つずつDVDドライブを接続してインストールするなんて作業はしたくないいっぺんにやってしまいたい。そういうときの為にpxebootからosのネットワークインストールを行う為の環境を構築。今回は起動イメージだけじゃなくインストールするosのDVDイメージも同サーバ内に展開しての作業。
空っぽのサーバ用マシンが一台・・・今回はこれをネットワークインストール環境用マシンとして使用。
まずはosのインストールからでもちろんosはだいたい何でもok。
CentOSのインストール(ここでは普通にインストール用DVDから)
・日本語を選択
・キーボードも日本語
・インストール元はローカルのディスク
・ドライバは手動選択にして、mass ... linux ... を選択(あんまりよく覚えてない・・・)
・パーティションとかの細かい設定に関しては今回は全部デフォルトのままで
とまあ何となくの気持ちでokなんでまずはインストール。
で、ここからが本番な訳でさっきインストールしたCentOSマシン上での作業。
tftp-serverとdhcpのインストール
yum install tftp-server dhcp
「/etc/xinetd.d/tftp」の以下のdisableをnoに変更する
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 }
ホストosインストール時に同時にインストールされるpxelinux.0ファイルをtftpbootディレクトリ以下にコピー。
今後、複数のosをネットワークインストールする為、今回はtftpbootディレクトリ以下にもう一つディレクトリを作成。
mkdir /tftpboot/centos-5.3-x86_64
cp /usr/lib/syslinux/pxelinux.0 /tftpboot/centos-5.3-x86_64/
ネットワークブート用のイメージをダウンロード
cd /tftpboot/centos-5.3-x86_64
wget http://ftp.iij.ad.jp/pub/linux/centos/5.3/os/x86_64/images/pxeboot/initrd.img
wget http://ftp.iij.ad.jp/pub/linux/centos/5.3/os/x86_64/images/pxeboot/vmlinuz
pxeブート用の設定ファイルを作成
mkdir /tftpboot/centos-5.3-x86_64/pxelinux.cfg
「/tftpboot/centos-5.3-x86_64/pxelinux.cfg/default」を作成して以下に編集。
default centos-5.3-x86_64 prompt 1 timeout 15 label centos-5.3-x86_64 kernel vmlinuz append load initrd=initrd.img noipv6 devfs=nomount
dhcpの設定。ファイルは「/etc/dhcpd.conf」。
ddns-update-style interim; ignore client-updates; subnet 192.168.10.0 netmask 255.255.255.0 { option routers 192.168.10.1; option subnet-mask 255.255.255.0; option domain-name "dev.local"; option domain-name-servers 192.168.10.1; next-server 192.168.10.1; option time-offset -18000; # Eastern Standard Time range dynamic-bootp 192.168.10.80 192.168.10.99; default-lease-time 21600; max-lease-time 43200; filename "centos-5.3-x86_64/pxelinux.0"; }
「/etc/sysconfig/dhcpd」も編集。
# Command line options here
DHCPDARGS=eth0
固定ipの設定(可能であればcuiツールを利用するsetupコマンドから行う)
「/etc/sysconfig/network-scripts/ifcfg-eth0」を編集。
# eth0の設定 # Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express DEVICE=eth0 BOOTPROTO=none HWADDR=XX:XX:XX:XX:XX:XX ONBOOT=yes NETMASK=255.255.255.0 IPADDR=192.168.10.1 TYPE=Ethernet
ネットワークの再起動
service network restart
tftpサービスの起動
/etc/init.d/xinetd start
dhcpサービスの起動
/etc/init.d/dhcpd start
これで基本的な準備は完了。
サーバとなるpcと新規インストール対象のpcを接続してpxeブートを選択すればネットワークインストールが始まる。
「pxe-e32 tftp open timeout」など、問題が発生する場合はselinuxやfirewallの設定を確認。
サービスを止めておくと確実。
firewallの停止
service iptables stop
selinuxを無効にする場合はファイル「/etc/sysconfig/selinux」を編集。
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. SELINUX=disabled #ここをdisabledに変更 # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted
selinuxの設定を変更した場合は再起動しましょう。
reboot
今のままじゃ、ネットワークインストールの起動は出来るが、インストール対象のosのイメージをweb上に探しに行かないといけない。ので、osイメージも同サーバpcで取得可能なようにする。
httpdサービスのインストール
yum install httpd
他のpcにてダウンロード済みのイメージ等がある場合はファイル共有用にvsftpをインストール。
yum install vsftpd
匿名ユーザにてディレクトリの作成やファイルの書き込みを行いたい場合は「/etc/vsftpd/vsftpd.conf」を編集して以下の設定を行う。
anon_mkdir_write_enable=YES anon_upload_enable=YES
vsftpサービスの起動
/etc/init.d/vsftpd start
osイメージファイルマウント用に、webサーバのドキュメントルート配下にディレクトリを作成
mkdir /var/www/html/centos-5.3-x86_64
現在イメージファイルが/var/ftp/pub/CentOS-5.3-x86_64-bin-DVD.isoにあるとして、webサーバ配下にマウント
今回はマウントのみしているが、展開したファイルをwebサーバ配下に置いておくと、毎回マウントする手間も無くなる。
mount -t iso9660 -o loop /var/ftp/pub/CentOS-5.3-x86_64-bin-DVD.iso /var/www/html/centos-5.3-x86_64
httpdサービスの起動
/etc/init.d/httpd start
毎回同じ設定のosをインストールするのであれば、kickstartインストールの環境を作成しておくと便利。
kickstartファイルの準備
サーバpcにosをインストールした際に作成されているkickstartファイルをテンプレートとして利用する。
cp /root/anaconda-ks.cfg /var/www/html/centos-5.3-x86_64/ks.cfg
用意したkickstart設定ファイルを好みに合わせて変更
今回のインストール元はcdなどではないので、2行目の「cdrom」と記述されている行を以下の通りに変更。
url --url http://192.168.10.1/centos-5.3-x86_64
その他の設定に関しては以下のサイトが参考になる。(参考にさせて頂きました。)
pxeブート用の設定ファイルを変更(ksの設定を追記)。ファイルは「/tftpboot/centos-5.3-x86_64/pxelinux.cfg/default」。
default centos-5.3-x86_64 prompt 1 timeout 15 label centos-5.3-x86_64 kernel vmlinuz append load ks=http://192.168.10.1/centos-5.3-x86_64/ks.cfg initrd=initrd.img noipv6 devfs=nomount
あとは通常のネットワークインストールと同様、新規インストール対象のpcを接続して電源を入れてpxeブートするのみ。
尚3HFDY、これらの環境をvirtualbox等の仮想環境上で行っている場合はゲストosとかホストosとかのネットワーク設定が必要。
virtualboxの場合のみ参考程度に以下に記述。
- ゲストosの設定画面にて、ネットワークのアダプタタイプを「PCnet-FAST3(Am79C973)」に指定。
- 割り当てを「Bridged Adapter」に指定。
- 名前を「MACブリッジミニポート」に指定。
- ホストos(windows想定)のネットワーク接続画面にて、「ローカルエリア接続」と「VirtualBox Host-Only Network」を選択し、「ブリッジへ追加」を選択。
- 無線LAN等、今回使わない他のネットワークがある場合には切っておいたほうが確実です。
で、virtualboxのネットワーク設定は以上。
以後、立ち上げたばかりのサーバをネットワークインストールokの状態にするには以下のコマンドを打つのみでok。
/etc/init.d/iptables stop /etc/init.d/xinetd start /etc/init.d/dhcpd start /etc/init.d/httpd start
セキュリティやDHCPサーバの重複等の問題が無いなら全部chkconfigとかで起動設定しておいてもok。
以上!
ちなみに今回は「pxelinux.cfg/default」でネットワークインストール用のファイルを直接していしたけど、「menu.c32」をはさめばインタラクティブで階層構造を持ったメニュー画面を表示する事が可能けどそれはまた別の機会に。