+ 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) クロスコンパイルしたカーネルをテストするのに、なんども同じ作業(イメージファイルを作って焼く)を繰り返すのが面倒なので、効率化したい
上記はそれぞれ別の話だけど、使う概念は共通のところもある。
まずは、(1)をやってみる。
2.予備知識
役者
ホスト | 備考 |
---|---|
対象ホスト | これからLinixをインストールするホスト |
支援ホスト | インストールを支援するホスト |
支援ホストはFedora Core 1。
実際の作業では、ここで言う支援ホストとは別に、Fedora Core 3のファイルをHTTPで提供するホスト(支援ホスト2)を使ったが特に記述しない。いったんインストーラが起動してしまえば、TFTPサーバもDHCPサーバも要らない。
使う仕組み
名称 | 備考 |
---|---|
DHCP | 対象ホストにIPアドレスを払い出し、ブートプログラムのありかを通知 |
TFTP | 各ファイルを転送する。(1)ブートプログラム、(2)ブートプログラム用設定ファイル、(3)インストーラプログラムである小さなLinuxカーネル、(4)そのディレクトリイメージ(initrd) |
PXE | Preboot 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.支援ホストの作業
必要なパッケージをインストール
名称 | 備考 |
---|---|
dhcp | DHCPサーバ |
tftp-server | TFTPサーバ |
syslinux | PXE関連のファイル |
支援ホストにこいつらをインストールする。
支援ホストは外部のホストを参照するよう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
[2]
[3]
[4] /usr/share/doc/syslinux-2.06/syslinux.doc
[5] /usr/share/doc/syslinux-2.06/pxelinux.doc