Tips記事
» 2003年02月06日 17時01分 UPDATE

ネットワークブートインストールをしたい

[木田佳克,ITmedia]

 BIOS上で「ネットワークブート」の選択肢がある場合、CDやフロッピードライブが搭載されていなくてもLinuxインストールが行える。ここでは、PXE(Preboot eXecution Environment)対応のネットワークアダプタを前提とし、Red Hat Linuxのインストーラが起動するまでの手順を紹介しよう。

画面
CD/FDドライブの標準搭載されていないノートPCなどでは、ネットワークブートが効果的だ

 ただし、インストーラ画面までたどり着くためには、次のような条件を満たす必要がある。ハードウェア面ではPXE対応NICさえ用意できればよく、あとは以下に解説するソフトウェア設定で可能だ。

1. クライアントにPXE対応のネットワークアダプタが搭載されている(BIOSからネットワークブートが可能)
2. LAN内のサーバにDHCPサーバソフトが稼働
3. LAN内のサーバにTFTPサーバソフトが稼働
4. ツール「BpBatch」を使う

 ネットワークブートのプロセスを知っておくと作業の見通しがよくなる。簡単に紹介しておこう。

 PXE対応のネットワークデバイスは、カード上のフラッシュメモリから基本ソフトを読み込み、ネットワーク上のDHCPサーバを探し出しIPアドレスを受け取る。受け取れた場合には、TFTPサーバによって接続が許可され、ブートイメージを探す。

・TFTP接続時にDHCPでIPアドレスが自動発行されるようにする

 DHCPサーバを稼働させる基本事項は、「DHCPサーバを立てたい」Tipsを参考にしてほしい。

 ただし、後述するTFTPとBpBatchの関連から、次のような設定内容(dhcpd.conf)にしておく必要がある。なお、注意点としてRed Hat Linux 7.x/8.0最新のRPMパッケージではPXEブートがうまく行かない場合がある。この際には、DHCPのパッケージをアンインストール(rpm -e dhcp-3.0xxxx)し、「dhcp-2.0pl5-8.i386.rpm」などの2.xを利用しよう(ここではこのパッケージを使っている)。

# cat /etc/dhcpd.conf
#ddns-update-style ad-hoc;
server-identifier server;
server-name "server";
option domain-name "localdomain";
option domain-name-servers 192.168.0.175;
option routers 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.254;
option broadcast-address 192.168.0.255;
}

host client {
hardware ethernet 00:80:45:21:xx:xx;
fixed-address 192.168.0.245;
filename "bpbatch";
option root-path "/tftpboot";
option dhcp-class-identifier "PXEClient";
option vendor-encapsulated-options 01:04:00:00:00:00;
option option-135 "-i";
}

 黄色文字の個所は自分の環境に合わせて編集する必要がある。また、「host client..」以下の設定は「client」に任意な文字列、「hardware ethernet .....」にはクライアントネットワークアダプタのMACアドレス、「filename....」個所には後述するツール「BpBatch」のファイル名の記述などに注目しておきたい。ブロードバンドルータなどで同一ネットワークアドレス内にDHCPが稼働している場合には、オフにしてからサーバ上でdhcpdを起動させるのも注意点だ。

・TFTPdでクライアントからの接続環境を用意する

 次にTFTPサーバソフトの環境を整える。まず最初に次のように指定し、システム上にTFTPがインストールされているかを確認しよう。

# rpm -qa|grep tftp

 見つからなかった場合には、SpeakEasy.Rpmfind.Net Serverなどで探し出せばよい。

# rpm -ivh tftp-server-0.29-3.i386.rpm

# vi /etc/xinetd.d/tftp
service tftp
{
        socket_type        = dgram
        protocol           = udp
        wait               = yes
        user               = root
        server             = /usr/sbin/in.tftpd
        server_args        = -c -s /tftpboot
        disable            = no
        per_source         = 11
        cps                = 100 2
}

 ここではスーパーデーモンXinetdを介してTFTPdを起動させる例だ。RPMパッケージによるインストールであれば、「/etc/xinetd.d/tftp」ファイルもインストール時に用意される。黄色文字の個所を確認しよう。

 次に、クライアントがネットワークブート要求をした際、TFTPへアクセスを行いブートイメージを読み込むための実ファイルを用意する。これには、「/etc/xinetd.d/tftp」ファイル内の「server_args...」行を確認し、ディレクトリ指定先と、実際にそのディレクトリが存在するかを確認すればよい。

# ls /tftpboot/
X86PC
# /etc/rc.d/init.d/xinetd restart

 Xinetdを再起動させれば、ここまでの設定が有効となる。

・インストールCDをNFSマウントさせる

 Red Hat LinuxのインストールCD(1枚目)をマウントさせよう。次のように指定し、ネットワークブート時に利用するフロッピーイメージファイルがimages/下にあることも確認しておく。

# mount /mnt/cdrom
# ls /mnt/cdrom/images/
README  boot.img  drvblock.img pcmcia.img  pxeboot
TRANS.TBL bootnet.img drvnet.img  pcmciadd.img

 NFSサーバの設定ファイル「/etc/exports」には、次の行を追加してCDドライブをNFS共有できるようにする。ここでの例は、/mnt/cdrom下すべてをリードオンリー共有を意味する。

# vi /etc/exports
/mnt/cdrom *(ro)

 設定後は、NFSサーバを起動させる。

# /etc/rc.d/init.d/nfs start
# /etc/rc.d/init.d/nfslock start

 なお、NFSサーバのためにはportmapデーモンも起動させておく必要がある。次のように指定し、portmapが無い場合には、SpeakEasy.Rpmfind.Net Serverで探し、インストールすればよい。NFSサーバソフト起動後は、次のように共有されていることが確認できる。

# showmount -e localhost
Export list for localhost:
/mnt/cdrom *

 ここまでで、NFSのインストールCDマウント、TFTPサーバによるクライアントからの接続、Xinetdを介したDHCPでクライアントに自動IPアドレス割り振りが可能となった。

・BpBatchを/tftpboot/ディレクトリ下に用意する

 /tftpboot/は、PXE要求によってTFTPログインを受けた際、ディレクトリ下のファイルをクライアントに転送してブートを行わせるための標準設定領域だ。

 XFTPでクライアントからの接続を受けた際には、「/tftpboot/」ディレクトリ下に用意するBpBatchを読み込むようにする(/etc/xinet.d/tftpdファイル内でログイン後のトップ階層指定)。BpBatchはPXEネットワークブートを行ったクライアントに対してファイル転送を行いブート環境を提供できるものだ。また、フロッピーイメージファイルを読み込ませる機能もあるため、これを使うことでRed Hat Linuxのインストーラを起動させるわけだ。

・BpBatch入手先
http://www.bpbatch.org/

# cd /tftpboot/
# wget http://www.bpbatch.org/downloads/bpb-exe.tar.gz
# tar zxfv bpb-exe.tar.gz
# ls -l
合計 4152
-rw-r--r--    1 root   root       856  2月 11  2000 INSTALL
-rw-r--r--    1 root   root      3471  2月 11  2000 LICENSE
drwxrwxrwx    3 root   root      4096  9月 22 01:39 X86PC
-rwxrwxrwx    1 root   root   1474560  2月  5 22:50 bootnet.img
-rw-r--r--    1 root   root    807620  2月 11  2000 bpb-exe.tar.gz
-rw-r--r--    1 root   root      2183  2月 11  2000 bpbatch
-rw-r--r--    1 root   root      2183  2月 11  2000 bpbatch.P
-rw-r--r--    1 root   root     58659  2月 11  2000 bpbatch.hlp
-rw-r--r--    1 root   root    191812  2月 11  2000 bpbatch.ovl
-rwxr-xr-x    1 root   root    173607  2月 11  2000 mrbatch
-rw-r--r--    1 root   root    203190  2月 11  2000 mrbatch.exe
-rwxr-xr-x    1 root   root    399536  2月 11  2000 mrbatch.static
-rwxr-xr-x    1 root   root    208763  2月 11  2000 mrzip
-rw-r--r--    1 root   root    210416  2月 11  2000 mrzip.exe
-rwxr-xr-x    1 root   root    429816  2月 11  2000 mrzip.static
-rw-r--r--    1 root   root       771  2月 11  2000 readme
-rw-r--r--    1 root   root      8631  2月 11  2000 whatsnew

# cp /mnt/cdrom/images/bootnet.img /tftpboot/

 ここまでで設定が完了だ。DHCP、NFS、TFTPサーバそれぞれのデーモン起動確認後、クライアント側で再起動を行い、BIOSからネットワークブート操作を行ってみよう。

 プロンプトが表示されればBpBatchが読み込まれた状態であり、次のように入力すればよい。イメージファイル「bootnet.img」が読み込まれ、Red Hat Linuxのインストーラが表示されるはずだ。

> set cachenever = "on"
> loadramdisk "bootnet.img"
Loading ramdisk image...
1440 Kb loaded to the ramdisk
> floppyboot
Booting from floppy disk

 なお、ここでは特にRed Hat Linuxと明記しているが、フロッピーイメージファイルさえ揃えばよく、ほかのディストリビューションだけでなくMS-DOSなどのブートも可能だ。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ