HAYAGUI

FreeBSD 4.10 + NetBoot

はじめに

FreeBSD 4.10 + PXE でネットワークブート(NetBoot) をやってみました。 クライアント側のネットワークカードは、PXE(Preboot eXecution Environment)対応のネットワークアダプタINTEL PRO/100+ です。 ネットワーク環境はこんな感じ。
 +---------------------------+
 |     HUB                   |
 +---------------------------+
    |                    |
 +------------------+ +-------------------------+
 | eden.hayagui.com | | mico.hayagui.com        |
 | 192.168.0.8      | | 192.168.0.7 (DHCP割付)  |
 | DNS Server       | +-------------------------+
 | TFTP Server      |
 | DHCP Server      |
 | NFS Server       |
 +------------------+
ちなみに、「NetBoot」とは、クライアント自身のローカルドライブからではなくてネットワーク経由で起動すること。

参考にしたページ

  • http://www15.big.or.jp/~yamamori/sun/pxe/
  • http://micho.mimora.com/pxeinst.txt
  • http://www.starbed.org/netboot/pxeboot_freebsd-j.html
  • INTEL PRO/100+のファーム更新

    クライアントPCのBIOS設定で、ネットワークをブートデバイスの一番に設定して起動させたら、
    PXE-EC1: Base-code ROM ID structure was not found.
    
    のようなメッセージがでちゃいました。はて?
    DELL のページから、「NIC のファームを更新する必要」があることを調べて、 INTEL のダウンロードページから、「Boot Agent ユーティリティ (FBOOT ユーティリティ)」を get して更新しました。

    DNS Server

    ネットワークにDNSを立てます。 「FreeBSD 4.4 + BIND8」を参考にしてやってください。ちなみに、今回の設定ファイルはこんな感じです。

    named.conf
    options {
    	directory "/etc/namedb";
    };
    
    zone "." {
    	type hint;
    	file "named.root";
    };
    
    zone "localhost" {
    	type master;
    	file "localhost.zone";
    }; 
    
    zone "0.0.127.IN-ADDR.ARPA" {
    	type master;
    	file "localhost.rev";
    };
    
    zone "hayagui.com" {
    	type master;
    	file "hayagui.zone";
    };
    
    zone "0.168.192.in-addr.arpa" {
    	type master;
    	file "hayagui.rev";
    };
    

    localhost.zone
    $TTL	3600
    @	IN	SOA	eden.hayagui.com. root.eden.hayagui.com. (
    		2004121801	;
    		604800		;
    		28800		;
    		3600000		;
    		2419200)	;
    	IN	NS	eden.hayagui.com.
    	IN	A	127.0.0.1
    

    localhost.rev
    $TTL	3600
    
    @	IN	SOA	eden.hayagui.com. root.eden.hayagui.com.  (
    				20041218	; Serial
    				3600	; Refresh
    				900	; Retry
    				3600000	; Expire
    				3600 )	; Minimum
    	IN	NS	eden.hayagui.com.
    1	IN	PTR	localhost.hayagui.com.
    

    hayagui.zone
    $TTL	3600
    @	IN	SOA	eden.hayagui.com. root.eden.hayagui.com. (
    		2004121801	;
    		604800		;
    		28800		;
    		3600000		;
    		2419200)	;
    	IN	NS	eden.hayagui.com.
    eden	IN	A	192.168.0.8
    mico	IN	A	192.168.0.7
    jhon	IN	A	192.168.0.6
    

    hayagui.rev
    $TTL	3600
    
    @	IN	SOA	eden.hayagui.com. root.eden.hayagui.com.  (
    				20041218	; Serial
    				3600	; Refresh
    				900	; Retry
    				3600000	; Expire
    				3600 )	; Minimum
    	IN	NS	eden.hayagui.com.
    8	IN	PTR	eden.hayagui.com.
    7	IN	PTR	mico.hayagui.com.
    6	IN	PTR	jhon.hayagui.com.
    
    named を起動し、nslookup で動作を確認してください。

    TFTP Server

    tftpサーバを立てます。「FreeBSD 4.10 + tftp」を参考にしてください。

    tftp のルートディレクトリに指定した /tftpboot に、/boot/pxeboot をコピーします。

    eden# cp -p /boot/pxeboot /tftpboot
    eden# chmod 444 /tftpboot/pxeboot 
    

    DHCP Server

    次に DHCP サーバを立てます。dhcpd.conf を以下のように設定します。
    server-identifier 192.168.0.8;
    server-name "eden.hayagui.com";
    
    option domain-name "hayagui.com";
    option domain-name-servers eden.hayagui.com;
    
    default-lease-time 600;
    max-lease-time 7200;
    
    ddns-update-style none;
    log-facility local7;
    
    subnet 192.168.0.0 netmask 255.255.255.0 {
      range 192.168.0.6 192.168.0.7;
      option routers 192.168.0.1;
      option broadcast-address 192.168.0.255;
    }
    
    host mico {
      hardware ethernet 00:20:e0:60:1b:e6;
      fixed-address 192.168.0.7;
      filename "pxeboot";
      option root-path "192.168.0.8:/tmp/diskless/freebsd";
    }
    
    下のセクションは、以下のような意味を持ちます。
    • MACアドレスが 00:20:e0:60:1b:e6 のクライアントからの要求の時は、192.168.0.7 というIPアドレスをリースする。
    • PXEBoot のファイル名として pxeboot を通知する。
      その後、クライアントはtftpでこのファイルを get することになる。
    • クライアントが使用するNFS領域として 192.168.0.8:/tmp/diskless/freebsd を通知する。
    dhcpd.conf の dhcpd_enable を YES に設定してください。
    「FreeBSD 4.5 + DHCPサーバとクライアント」を参考にしてやってください。

    NFS Server

    クライアントはNFSサーバが提供するディスク領域を使用します。 FreeBSD 4.10 mini.iso のCDをマウントして、Kernelを含むファイルをNFS公開領域に保存します。
    eden# mkdir /tmp/diskless
    eden# mkdir /tmp/diskless/freebsd
    eden# mount /cdrom
    eden# cd /cdrom/bin
    eden# cat bin.?? | tar zxvpf - --numeric-owner -C /tmp/diskless/freebsd 
    eden# cp /tmp/diskless/freebsd/kernel.GENERIC  /tmp/diskless/freebsd/kernel
    
    Kernel.GENERIC というファイルを Kernel にしておきます。
    

    次に、http://www15.big.or.jp/~yamamori/sun/pxe/freebsd.html を参考にして、 クライアントが使う rc.confとfstab を設定します。

    /tmp/diskless/freebsd/etc/rc.conf
    root_rw_mount="YES"
    nfs_client_enable="YES"
    
    /tmp/diskless/freebsd/etc/fstab
    192.168.0.8:/tmp/diskless/freebsd  /  nfs  rw  0 0
    

    NFSサーバの設定として、/etc/exports を書きます。IPアドレスはクライアントのIPアドレスです。

    /tmp/diskless/freebsd -maproot=root 192.168.0.7
    
    NFS サーバを起動します。showmount でマウント状況を確認します。
    eden# portmap
    eden# nfsd -u -t -n 4
    eden# mountd -r
    eden# showmount -e
    Exports list on localhost:
    /tmp/diskless/freebsd                 192.168.0.7
    
    次回起動用に、rc.conf に以下の行を追加します。
    portmap_enable="YES"
    nfs_server_enable="YES"
    nfs_server_flags="-u -t -n 4"
    mountd_flags="-r"
    
    さて、これで一通り設定終了。

    やってみよう。

    動いたー!

    戻る



    (C)1999 - 2004 Kenji Ito All rights reserved.