X40 FreeBSD 6.2-RELEASE の PXE インストール

昨日 X40 に Linux をインストールした。ところが今日起きて,さまざまな設定をしようとしてブートさせても Windows しか起動しない。GRUB ローダーがうまく読まれないようである。LBA32 なんとかを設定してもだめでまた悩みに入ってしまった。

Google で探索していたら,「X40 のThinkPad 機能設定で Second IDE Device をオフにすると FreeBSD ACPI まわりの問題が解決する」との情報を入手。もしやと思い,これをやってみたところ,これまで probe でフリーズしていた FreeBSD インストーラがうまく起動したのである。しかしこんなことを知っている方がいて感心する。というわけでペンギン君初心者になろうとした矢先に BSD ユーザに舞い戻ることに。くされ縁というのか。

CD も FDD もない X40 に FreeBSD をインストールする手順ポイントをメモしておく。これは PXE ネットワークブートでインストーラを起動するためのものである。足回りの乏しいマシンにネットワーク越しにインストールする手段として有効である。ただし,X40 のような,PXE ネットワーク・ブートをサポートした PC (BIOS) でなければならない。

0. 「ThinkPad 機能設定」で Second IDE Device を「使用しない」に設定(X40)
上記参照。

1. Windows XP パーティションのデータ寄せ(X40)
X40 のハードドライブは当然のことながら,全体が Windows XP NTFS でフォーマットされている。このディスク領域を Windows 用と FreeBSD 用とで二分する必要がある。そのためには,FreeBSD に当てるエリアに Windows のデータが存在しないように分割ポイントを設定しなければならず,データ寄せを行っておく。

(1) デフラグでディスクの最適化を行っておく。断片化したデータを詰めて連続領域を確保するためである。

(2) 分割したいポイントの近辺にファイルが居座って動かせない場合,以下を試してみる。
- 仮想メモリの場合なら,システムプロパティ-パフォーマンスオプションで仮想メモリサイズを初期サイズ0,最大サイズ 0 に設定する。
- 通常のファイルの場合なら,PowerX PerfectDisk 8 Pro などのディスク最適化ツールを適用する。PowerX PerfectDisk 8 Pro にはお試し版が配布されていて,一時的に試すレベルなら無償で利用できる。

2. Windows XP パーティションの分割(X40)
(1) Linux には単一の NTFS パーティションを分割するツール ntfsresize がある。パーティション分割の準備として,これを含むディストリである RIPLinux を,Windows 環境で USB フラッシュメモリにインストールする。『Vine on X40』が参考になった。

(2) X40 をリブートする。BIOS 起動メッセージが表示されている間に F12 を押下し,ブートデバイス選択画面が表示されたら,USB ドライブを選択して (1) で作成した USB フラッシュメモリからブートする。

(3) RIPLinux が起動したら,ntfsresize でパーティションサイズを縮小し,その後 fdisk で実際のパーティション設定を実施する。『プレインストールされたノートPCに別のパーティションを作成する方法』が参考になった。

(4) 完了したら Windows XP を再起動してみる。chkdsk が実行されるが正常に飛び立つはずである。エクスプローラなどでパーティションサイズが小さくなったことを確認しておく。

3. PXE ブート環境の作成(既設の FreeBSD マシンでの作業)
(1) dhcp (isc-dhcp3-server-3.0.5.r2) を導入・設定する。/usr/local/etc/dhcpd.confroot-path オプションに "既設 FreeBSD マシン IP アドレス:NFS マウンティングポイント" を,filename オプションに PXE ブート用カーネル pxeboot を指定しておく。dhcp サーバの起動は,/etc/rc.confdhcpd_enable="YES" を追加してから,"/usr/local/etc/rc.d/isc-dhcpd start" とする。

私の dhcp サーバ定義 dhcpd.conf を掲載しておく。既設の FreeBSD マシンの ip を 192.168.1.4 とし,X40 に付与する ip を 192.168.1.7 としている。X40 の MAC アドレスを指定しているが XX:XX:XX:...と書いているので実際のターゲットマシンのものに書き換える必要がある。FreeBSD で同一ネットワーク上のホストの MAC アドレスを知るには arp -a コマンドを実行する。Windows XP で MAC アドレスを調べるにはコマンドプロンプトで "ipconfig /all" とする。Physical Address でこれが知れる。

server-identifier 192.168.1.4; 
# server ip addr 192.168.1.4
option domain-name "xxxxxx.org"; 
option domain-name-servers 192.168.1.1; 
# name server addr 192.168.1.1
default-lease-time 600;
max-lease-time 7200;
ddns-update-style ad-hoc;
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.8 192.168.1.24;
    option routers 192.168.1.1;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
    host pxeboot {
        hardware ethernet XX:XX:XX:XX:XX:XX;
        # X40 mac addr XX:XX:XX:XX:XX:XX
        fixed-address 192.168.1.7; 
        # X40 ip addr 192.168.1.7
        filename "pxeboot";
        option root-path "192.168.1.4:/nfsroot";
    }
}

(2) tftpd を inetd からサービスできるようにしておく。inetd.conf に次を追加する(\は折り返しを示す)。

tftp dgram udp wait root /usr/libexec/tftpd tftpd -l \ 
-s /nfsroot/boot

追加したら,"kill -HUP inetdプロセスID" で設定を再読み込みさせる。

(3) (1) の NFS マウンティングポイントを -maproot=root オプションをつけて /etc/exports に追加しておく(\は折り返しを示す)。

/nfsroot -maproot=root -network 192.168.1.0 \
-mask 255.255.255.0

4. FreeBSD インストール用CDの準備(既設の FreeBSD マシン)
(1) FreeBSD サイトから 6.2-RELEASE-i386-disc1.iso (6.2-RELEASE ディスク1枚目の ISO イメージ) をダウンロードする。

(2) 3.(1) の root-path に指定したマウンティングポイントに,この ISO イメージをマウントする。

# mkdir /nfsroot
# mdconfig -a -t vnode -f 6.2-RELEASE-i386-disc1.iso
# mount -t cd9660 /dev/md0 /nfsroot

5. ネットワークブート&インストール(X40 での作業)
(1) X40 をリブートし,F12 を押下し,ブートデバイス選択画面が表示されたら,LAN を選択する。すると,4.(2) で既設 FreeBSD マシンにマウントした ISO イメージから FreeBSD インストーラが起動してブートメニューが表示される。ここで必ず「2」(ACPI disable) を選択する。

もしネットワークブートに失敗するようなら,3 または 4 項の設定に問題があるかも知れない。ブートサーバ (既設 FreeBSD マシン) の /var/log/messages にエラーがないか,dhcpd,nfsd,inetd がきちんと起動しているか (ps ax) を確認する。tftp はサーバ上で "tftp localhost","get pxeboot" が動作すればよい。

(2) login: が表示されたら root でログインし,sysinstall を実行してインストール作業を開始する。

(3) インストールメディアは ftp を選択し,ネットワーク経由でリソースを組込むとよい。X40 の内蔵 NIC は em0 で認識されるはずであり,インストールで用いるネットワークアダプタはこれを選択する。

6. 後始末(既設の FreeBSD マシンでの作業)
(1) インストールが終了したら,ISO イメージをデマウントする。

# umount /nfsroot
# mdconfig -d -u 0
# rmdir /nfsroot