2009年5月3日日曜日

PXEブートインストールの設定

SLESのインストールをインストールメディアを用意することなくできるように、ネットワークブートさせてインストールできるようになると効率がよい。これにはインストールサーバとPXEブートサーバを構築すればできるので設定方法を調べてみた。SLES11 for x86_64で実施。

PXEブートサーバを作るためには、3つの手順が必要
  1. TFTPサーバの設定
  2. PXEブート用ブートイメージおよびメニューの設定
  3. DHCPサーバの設定

[TFTPサーバの設定]
YaSTから[ネットワークサービス] > [TFTPサーバ]を選択。(注意:このときにTFTPサーバアイコンが二つあるので、白い方を選択すること。実は茶色いもう一つのTFTPサーバのアイコンは普通のFTPサーバの設定で表示名の間違い)。続いて次の設定を行う
  • [有効化]をチェック
  • [ブートイメージディレクトリ]にTFTPサーバを設定するパスを指定する
例) /srv/tftpboot/
  • [ファイアウォールでポートを開く]をチェック

[PXEブート用ブートイメージの構築]
TFTPサーバで指定したパスにPXEブートに必要なファイルをSLESのインストールメディアからコピーする。
/boot/x86_64/loader/linux
/boot/x86_64/loader/initrd
/boot/x86_64/loader/message
/boot/x86_64/loader/biostest
/boot/x86_64/loader/memtest
上記はx86_64の場合。もしx86であれば/boot/i586/loader以下からコピーする


つづいてpxelinux.0をコピーする。これもコピー先はTFTPのパス直下。もしファイルがなければsyslinuxパッケージがインストールされていないのでインストールすること
/usr/share/syslinux/pxelinux.0

つづいてPXEブート時に呼び出すメニューを作成する。
まずpxelinux.cfgフォルダを作成し、/boot/x86_64/loader/isolinux.cfgをdefaultと言う名前でコピーする。

#mkdir /srv/tftpboot/pxelinux.cfg
#cp <マウントポイント>/boot/x86_64/loader/isolinux.cfg /srv/tftpboot/pxelinux.cfg/default

defaultファイルを編集してPXEブートからインストールできるようにする
まずはgfxboot、readinfo、およびframebufferで始まる行を削除。
次に "# install"セクションを編集する。

[編集前]
# install
label linux
kernel linux
append initrd=initrd splash=silent showopts

[編集後]
# SLES11 for x86_64
label sles11_x86_64
kernel linux
append initrd=initrd splash=silent showopts install=http://<インストールサーバのアドレス>/sles11_x86_64

install=はnfs,samba,httpなどインストールサーバであればなんでもよいので設定したSLES11 for x86_64サーバのインストールURLを記述する。

つづいて余計な部分を削除してしまう。noacpi, nolapic, failsafe, rescueなど削除

最後にmessageファイルを編集してpxelinux.cfg/defaultで指定した"label"を入力できるようにメッセージを出力させる
linux - Installation 行を次のように変更
sles11_x86_64 - Install SUSE Linux Enterprise Server 11 for x86_64

その他の不要な部分は削除

[DHCPサーバの設定]
DHCPサーバからPXEブートサーバのアドレスとブートイメージファイルを指定する。
/etc/dchpd.confを編集する。
next-serverにPXEブートサーバのアドレスを設定
filename に"pxelinux.0"を指定

例)
subnet 192.168.1.0 netmask 255.255.255.0 {

range dynamic-bootp 192.168.1.200 192.168.1.228;
next-server ip_tftp_server:
filename "pxelinux.0";
}
設定が完了したらdhcpサーバを再起動させる

以上で完成。

2 件のコメント:

  1. 始めまして参考にさせていただいたのですが、

    append initrd=initrd splash=silent showopts install=http://インストールサーバのアドレス/sles11_x86_64

    の部分のパス?(sles11_x86_64)は意味があるのでしょうか?
    設定をしている最中でテスト段階まで進んでいないのですが、
    上記の設定は任意に別の物に代えても問題ないでしょうか?

    いきなりの質問すみません。

    返信削除
  2. コメントありがとうございます。
    これは異なるカーネルのインストールも出きるようにするためにパスを切っています。例えば32bit版は/sles11_x86/などとしてその下に32bit版のbootイメージをコピーしてdefaultファイルにSLES11 for x86の項目を作ってあげれば32bit版と64bit版のインストールを使い分けることができます。
    OpenSUSE 11.1なども同様にパスを区切って追加してあげれば便利なインストールサーバが出来上がります。

    返信削除