flat7th

+ pxeでネットワークインストール

created 2005-01-17 modified 2005-11-27 

Fedoraのネットワークインストールに関するメモ。
pxe:1.動機
pxe:2.予備知識
pxe:3.支援ホストの作業
pxe:4.対象ホストの作業
pxe:A.参照した文書など

1.動機

(1) なんらかの都合で普通にインストールできないプラットフォームに、ネットワークブートによってLinuxをインストールしたい
(2) クロスコンパイルしたカーネルをテストするのに、なんども同じ作業(イメージファイルを作って焼く)を繰り返すのが面倒なので、効率化したい

上記はそれぞれ別の話だけど、使う概念は共通のところもある。
まずは、(1)をやってみる。

2.予備知識

役者

ホスト備考
対象ホストこれからLinixをインストールするホスト
支援ホストインストールを支援するホスト
対象ホストはDOS/V機で、DVDドライブがないがBIOSがネットワークブートをサポートしている。ここにFedora Core 3をインストールしたい。
支援ホストはFedora Core 1。

実際の作業では、ここで言う支援ホストとは別に、Fedora Core 3のファイルをHTTPで提供するホスト(支援ホスト2)を使ったが特に記述しない。いったんインストーラが起動してしまえば、TFTPサーバもDHCPサーバも要らない。

使う仕組み

名称備考
DHCP対象ホストにIPアドレスを払い出し、ブートプログラムのありかを通知
TFTP各ファイルを転送する。(1)ブートプログラム、(2)ブートプログラム用設定ファイル、(3)インストーラプログラムである小さなLinuxカーネル、(4)そのディレクトリイメージ(initrd)
PXEPreboot eXecution Environmentの略。ネットワークブートの規格
HTTPインストーラが必要とする各種ファイルと、RPMパッケージを転送

インストール処理の流れ

  • 対象ホストのROMにあるpxeクライアントソフトが起動。dhcpサーバを探す
  • 支援ホストのdhcpサーバが応答。アドレス、ネットワークブート用のファイル名、(オプションでそのファイルを持っているサーバ名)を通知
  • 対象ホストのpxeクライアントソフトがtftpでブート用のファイル(pxelinux.0)を取得し、実行
  • pxelinux.0が、支援ホストから設定ファイルを取得。設定ファイルにはtftpで取得すべきファイル(インストーラであるLinuxカーネル(vmlinuz)、起動用RAMディスク(initrd.img))の位置、カーネル起動の追加オプションが書いてある
  • pxelinux.0が上記のカーネルと起動用RAMディスクをtftpで取得、実行
  • インストーラがインストール方法を訪ねる。ユーザがネットワークインストールを指定
  • インストーラはネットワークインストールに使用するネットワークデバイスをユーザに尋ね、初期化
  • インストーラがインストールメディアの場所を尋ねる。ユーザが支援ホストのアドレスとディレクトリを指定
あとは通常のインストール作業と同じ。

3.支援ホストの作業

必要なパッケージをインストール

名称備考
dhcpDHCPサーバ
tftp-serverTFTPサーバ
syslinuxPXE関連のファイル

支援ホストにこいつらをインストールする。
支援ホストは外部のホストを参照するようyumの設定が済んでいる。
yum install dhcp tftp-server syslinux

上記で /tftpboot ディレクトリが作成されるし、
/usr/lib/syslinux/pxelinux.0 が手に入る。
/usr/share/doc/syslinux-2.06/ 以下にドキュメント[4][5]も置かれる。

TFTPサーバの設定

TFTPサーバを有効にする。
具体的には、/etc/xinet.d/tftp の disable=yes を no に変更し、/etc/xinit.d/xinetd reload を実行。

DHCPサーバの設定

/etc/dhcpd.conf を設定
(未記述)

PXEの設定

PXEクライアントが最初に取得するpxelinux.0と、その設定ファイルを作成
cp /usr/lib/syslinux/pxelinux.0 /tftpboot
mkdir /tftpboot/pxelinux.cfg
vi /tftpboot/pxelinux.cfg/default
(/tftpboot/pxelinux.cfg/default)
default fc3

label fc3
kernel vmlinuz
append load initrd=initrd.img devfs=nomount ether=0,0,eth0 ether=0,0,eth1
このファイルのファイル名については[5]に、書式については[4]に記述がある。

FC3のDVD(ここではisoイメージ)からインストーラカーネルとRAMディスクファイルを取ってくる
mount -t iso9660 -o loop FC3-i386-DVD.iso /mnt/cdrom    # -o loop は「ループバックデバイス」の意
cd /mnt/cdrom/images/pxeboot/
cp vmlinuz /tftpboot
cp initrd.img /tftpboot

Apacheの設定

(詳細未記述、インストーラDVDの Fedora/ 以下をHTTPで公開する)


というところなんだけど...現状、/tftpboot/tftpboot/pxelinux.0 と、tftpbootディレクトリを2重にしないとうまくできてない。原因不明。

4.対象ホストの作業

A.参照した文書など

[1]
[2]
[3]
[4] /usr/share/doc/syslinux-2.06/syslinux.doc
[5] /usr/share/doc/syslinux-2.06/pxelinux.doc