広島工業大学山岸ゼミ - YamaLabo

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できるか

Mail Address


Comment

スパム・迷惑コメント投稿防止の為メールアドレスの入力が必須ですが、公開はされません。何卒ご協力のほどお願いいたします。
投稿いただいたコメントは管理者のチェック後掲載しておりますので、即時には反映されません。

Profile

ちぇけ丸

IT系の仕事をしつつ、趣味で本の装丁やiPhoneケースなどのデザインなど、様々なものづくりを行っています。

»more

Sarch

Category

calendar

2017年11月
« 5月    
 12345
6789101112
13141516171819
20212223242526
27282930  

▲Pagetop