- PXE
- サーバからDHCPでIPアドレスを貰ってTFTPで起動イメージを貰って起動したりできる仕組みらしい。
- PXEサーバからネットワーク経由でイメージを提供するのでCDとかUSBとかを使わなくてもよく良くなる。
- Wake-on-LANとかで一斉にマシンを起動させるだけでバックアップやリストアとかできる。
- 大量の物理マシンのバックアップやリストアの手間を何とかできる。
- 大掛かりにパッケージングされたソリューションよりも自分でやった方がたぶんトラブルシュート&カスタムしやすい。
- たぶん。
- 公式情報
サーバ側の準備の流れとしては以下のとおり。
- PXEな設定をしたDHCPサーバを準備する。
- TFTPサーバを準備する。
- 決められたとおりのディレクトリ階層で各種ファイルを配置する。
DHCPサーバ
インストールする。
aptitude install isc-dhcp-server
設定ファイルは以下のとおり。
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.2 192.168.100.254;
host node-002 { hardware ethernet 00:00:00:00:00:02; fixed-address 192.168.100.2; }
host node-003 { hardware ethernet 00:00:00:00:00:03; fixed-address 192.168.100.3; }
filename "pxelinux.0";
}
- メモ
- 192.168.100.0の中でノードを管理する。
- MACアドレスとIPアドレスを紐付けるようにしている。
- マシン構成
- 192.168.100.001: 親サーバ(node-001)
- 192.168.100.002: 子サーバ(node-002)
- 192.168.100.003: 子サーバ(node-003)
- [...]
- 192.168.100.254: 子サーバ(node-254)
- マシン構成
再起動する。
service isc-dhcp-server restart
- メモ
- この段階で子ノードからIPアドレスのリースとping/pongの確認をしておく。
-
dhclient -r
: IPアドレスのリリース - ifdown eth0
- ifup eth0
- ifconfig
-
- 要するに
filename "pxelinux.0";
を書くだけ?
- この段階で子ノードからIPアドレスのリースとping/pongの確認をしておく。
TFTPサーバ
インストールする。
aptitude install tftpd-hpa
設定ファイルは以下のとおり。デフォルトのまま。楽。
FTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp/"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
- メモ
- Debianのデフォルト設定のまま使っている。
再起動する。
service tftpd-hpa restart
イメージの配置
Debian
Debianのネットワークブートイメージと関連ファイルをダウンロードしてそれを雛形につかう。Installing Debian via the Internetの左下からたどって、netboot
の中のnetboot.tar.gz
をダウンロードする。
wget http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-i386/current/images/netboot/netboot.tar.gz
圧縮ファイルを展開して/srv/tftp/
へ移動させる。
tar xzf netboot.tar.gz
mv pxelinux.0 /srv/tftp/
mv pxelinux.cfg /srv/tftp/
mv debian-installer /srv/tftp/
mv version.info /srv/tftp/
ここで子ノード(クライアント)を起動して、DHCPでIPアドレスを貰って、TFTPでpxelinux.0
とpxelinux.cfg/default
を読み込んで、起動するかを確認。Debianのインストーラが起動すればOK。
Clonezilla
Debianのインストーラが起動するのを確認したら、後はフォルダ構成の問題。最終的にできたフォルダ構成は以下のとおり。
tree /srv/tftp/ -L 3
/srv/tftp/
├── images
│ ├── clonezilla
│ │ ├── filesystem.squashfs
│ │ ├── initrd.img
│ │ └── vmlinuz
│ └── debian
│ ├── debian-installer
│ ├── pxelinux.0 -> debian-installer/i386/pxelinux.0
│ ├── pxelinux.cfg -> debian-installer/i386/pxelinux.cfg
│ └── version.info
├── pxelinux.0 -> images/debian/debian-installer/i386/pxelinux.0
└── pxelinux.cfg
└── default
これをするには、まず、Debianのイメージを/srv/tftp/images/debian/
へ移動させる。
# イメージごとにディレクトリを作る
mkdir -p /srv/tftp/images/clonezilla/
# Debianのイメージと関連ファイル一式を移動
mv -r /srv/tftp/pxelinux.0 /srv/tftp/images/debian/
mv -r /srv/tftp/pxelinux.cfg /srv/tftp/images/debian/
mv -r /srv/tftp/debian-installer /srv/tftp/images/debian/
mv -r /srv/tftp/version.info /srv/tftp/images/debian/
次に、移動したイメージへのシンボリックリンクをはる。
# シンボリックリンクをはる。ただし、/srv/tftp/pxelinux.cfg/defaultだけはあとで自分で書く。
ln -s /srv/tftp/images/debian/pxelinux.0 /srv/tftp/pxelinux.0
mkdir /srv/tftp/pxelinux.cfg/
touch /srv/tftp/pxelinux.cfg/default
Clonezillaのイメージをダウンロードして展開する。基本的にはClonezilla Live on PXE Serverの通りにすれば良い。
以下のフォルダに展開した。
/srv/tftp/images/clonezilla/
/srv/tftp/pxelinux.cfg/default
の内容は以下のとおり。各所に書かれているパスに注意する。
default images/debian/debian-installer/i386/boot-screens/vesamenu.c32
prompt 1
timeout 120
menu title - Boot Menu -
label Debian-7.7
menu label Debian 7.7
kernel images/debian/debian-installer/i386/linux
append priority=critical vga=788 initrd=images/debian/debian-installer/i386/initrd.gz
label Clonezilla-Live
menu LABEL Clonezilla Live
kernel images/clonezilla/vmlinuz
append initrd=images/clonezilla/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" keyboard-layouts="" ocs_live_batch="no" locales="" vga=788 nosplash noprompt fetch=tftp://192.168.100.1/images/clonezilla/filesystem.squashfs