トップページ > コンテンツ > ネットワーク関連メモ > ネットワーク運用編 > サーバー関連 > ネットワーク初期設定 > pxeboot

pxebootとはネットワーク経由でマシンをブートさせる方法。
ここでは概要だけ記載。詳しくはこちらこちらこちら参照。

pxebootの仕組み概要

1.クライアント←→DHCPサーバ
  • サーバ側準備4で指定しする形で、IPとbootローダーのファイル名を指定

2.クライアント←→TFTPサーバ
  • bootローダーファイル(pxelinux.0等)を取得
  • 起動方法が書かれたファイル(pxelinux.cfg/default)を取得
  • カーネル本体(vmlinuz)や起動ディスク(initrd等)を取得

3.クライアント
  • カーネル本体(vmlinuz)や起動ディスク(initrd等)により、起動を開始する。

※DHCPサーバとTFTPサーバは同一マシンに載せることが多い。
※pxebootを行うにはNICがpxe対応である必要がある。

サーバ側準備

1.TFTPサーバ準備

1-1.必要パッケージのインストール

yum tftp-server

1-2.tftpの自動起動有効

systemctl enable xinetd.service

1-3.xinetdの再起動による有効化(tftpはxinetdを仲介して通信するため)


1-4.tftpの設定ファイル修正

/etc/xinetd.d/にtftp用のファイルを作って編集等。

2.DHCPサーバ準備

2-1.必要パッケージのインストール

yum dhcp

2-2.dhcpの自動起動有効

systemctl enable dhcpd.service

2-3.DHCPサーバー設定(/etc/dhcpd.conf修正)

allow booting:
allow bootp;

subnet 自分の環境{
next-server tftp-serverのIPアドレス #dhcpサーバとtftpサーバを別にする時に使用
filename "pxeboot/pxelinux.0"
}

3.ブートローダーの準備

3-1.必要パッケージのインストール
yum syslinux

3-2.bootローダーファイル(pxelinux.0)の準備
cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxeboot/pxelinux.0
※syslinuxの中のファイルをコピー
※dhcpd.confファイルで指定する場所にコピーする。

3-3.カーネル本体(vmlinuz)や起動ディスク(initrd等)の格納
<isoイメージの中からkernel本体や初期RAMディスクを格納する場合>
mount -t iso9660 -o loop,ro /isoimageのパス /mount先のパス
cp -p /mount先のパス/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/OS名等

<wgetなどでインターネットから取得する場合>
wget http://ファイルを取得するサーバの場所/vmlinuz.img
wget http://ファイルを取得するサーバの場所/initrd.img

3-4.起動方法が書かれたファイル(/var/lib/tftpboot/pxelinux/pxelinux.cfg/default)の修正。
 これによりpxeboot時のOS選択メニューが表示される。
default vesamenu.c32 #メニュー選択画面を表示するためのソフトウェア
prompt 1 #ブートプロンプト表示フラグ(1:表示、0:非表示)
timeout 60 #ブートメニューの表示時間

display boot.msg #ブート直後にコンソール画面に表示するメッセージ
menu title === PXE Boot Menu === #メニューのタイトル

label XXX
  menu label ^1) ラベル名 #メニューに表示させるラベル名。
                                     #^はショートカットキーを表し、^の後ろの文字でメニュー選択できる。
  menu default #該当ラベルをデフォルト設定にする場合
  kernel vmlinuz #インストーラーkernelを指定
  append load initrd=initrd.img devfs=nomount #初期RAMディスクを指定。kickstartと連携する場合はks=kickstart用ファイルが置かれた場所/ファイル名.cfg(※)とする。Preseedと連携する場合はpressed/url=preseed.cfgが置かれた場所とする。
label YYY
 ・・・

(※)指定方法の例
ディスクの場合 ks=hd:sdb1:/ks.cfg
URLの場合 ks=http://xxx/ks.cfg
CD-ROMの場合 ks=cdrom:

(※)kickstartファイルの準備方法はこちら

クライアント側準備

1.BIOS等で起動の優先順位として、ネットワークの起動の優先度を上げる

2.boot:プロンプトでpxelinux.cfgで設定したパッケージのラベルを入力する。
最終更新:2021年07月01日 19:43