May 15, 2017
Raspberry PiでPXEサーバを構築し、NW経由でCentOSをインストールする
色々あって、ディスクドライブのついていないサーバ機を頂いたので
PXEサーバをたててCentOSの1511をPXEブートにてインストールします。
HW : raspberry pi 2
OS : Raspbian Jessie with PIXEL (Kernel version: 4.4)
作業内容としては以下になります。
– dhcpサーバにてTFTPサーバのアドレスとファイルのパス指定
– tftpサーバにてブートローダを公開
– ftpサーバにてブートイメージを公開
今回は、現用のdhcpサーバをそのまま流用し、
tftpサーバおよびftpサーバをRaspberry Pi専用に新規で構築します。
dhcpサーバにてTFTPサーバのアドレスとファイルのパス指定
dhcpサーバのdhcpd.confのサブネット内に以下を追記。
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
range 192.168.33.11 192.168.33.50;
# TFTPサーバのIPアドレス
next-server 192.168.0.33;
# TFTPサーバルートからのファイルパス
filename “pxelinux.0”;
}
tftpサーバにてブートローダを公開
$ sudo apt install -y tftp-hpa $ sudo vi /etc/default/tftp-hpa
# /etc/default/tftpd-hpa
# tftpサーバの実行ユーザ
TFTP_USERNAME=”tftp”
# tftpの公開するディレクトリルート
TFTP_DIRECTORY=”/srv/tftp/tftpboot”
# tftp接続を許可するアドレス
TFTP_ADDRESS=”0.0.0.0:69″
# tftp起動オプション
TFTP_OPTIONS=”–create –secure –ipv4”
ブートローダを入手
本来はaptでsyslinux-commonパッケージをインストールすると/usr/lib/syslinux/内に
pxelinux.0等があるらしいのだが無かったので、別のcentOSにてsyslinuxをインストールし、
全てのファイルをtftp公開ディレクトリルートにコピーする
$ cp //[cent-OS内]/usr/share/syslinux/* //[tftpサーバ内]/srv/tftp/tftpboot/
ちなみにaptにてパッケージを検索すると、pxelinuxと呼ばれるパッケージがあったので
こちらをインストールするとpxelinux.0等必要なファイルがあるかもしれない。
インストール対象のCentOSのimgを入手し、マウントする
$ sudo mkdir /mnt/centos7 $ sudo mount CentOS-7-x86_64-DVD-1511.iso /mnt/centos7
kernelイメージとRAMイメージのコピー
$ sudo mkdir /srv/tftp/tftpboot/centos7 [vagrant@test1 ~]$ sudo cp /mnt/centos7/images/pxeboot/{vmlinuz,initrd.img} /srv/tftp/tftpboot/centos7
ftpサーバにてブートイメージを公開
$ sudo apt -y install vsftpd $ sudo vi /etc/vsftpd.conf
設定にてanonymousユーザを読み取り専用で許可する(その他動くように適当に設定する)
anonymous_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=NO
ftpルートにisoの中身コピー
$ sudo cp -r /mnt/centos7/images/centos7/* /srv/ftp/
PXEブートの設定ファイル作成
$ sudo mkdir /srv/tftp/tftpboot/pxelinux.cfg $ sudo vi /srv/tftp/tftpboot/pxelinux.cfg/default
default menu.c32
PROMPT 0
TIMEOUT 300
ONTIMEOUT local
menu title ######## PXE Boot Menu ##########
label 1
menu label ^1)CentOS 7 1511
kernel centos7/vmlinuz
append initrd=centos7/initrd.img inst.repo=ftp://192.168.0.33/
頭痛予防
dhcp関連
- PXEブート時、dhcpで情報取得までうまくいっていればIPアドレス等が表示される。
- filename “pxelinux.0″はtftpルートからの相対パス
- dhcpサーバとtftpサーバを別ける場合、next-server指定必須
tftp関連
- windowsのtftpコマンド有効化でtftp接続テスト可能
- [有効化手順]コントロールパネル > プログラム > Windowsの機能の有効化または無効化 > TFTPクライアント
- [使用方法]コマンドプロンプトにてtftp [tftpサーバのIP] get pxelinux.0
- tftpの公開ディレクトリ配下がtftpユーザの権限下でないと失敗する。
- chown -R tftp:tftp /srv/tftp/tftpboot
ftp関連
- windowsのftpコマンドでテスト可能
- anonymousユーザにてログイン・getできるか