用意したもの

ハードウェア 略称 説明
ALIX.2C0 ALIX FreeBSD7.0をインストールする組み込み型ボート。
FreeBSD7.0で動いているPC FreeBSDマシーン tftpd、dhcpd、nfsdを動かします。
また各種アプリケーションはports経由でインストールできるようにしておきます。
portsの位置はとする。
Windowsで動いているPC Windowマシーン ALIXとシリアルケーブルで接続してハイパーターミナルで操作する。
CompactFlash CF ALIXの記憶媒体です。ALIXに挿しておきます。今回は4GBのものを使用する。
シリアルケーブル(クロス) シリアルケーブル ALIXとWindowsマシーンとを接続します。本体同士を接続するためクロスケーブルを使用する。

ALIXとFreeBSDマシーンはLANに接続します。

FreeBSDマシーンでの作業

ルートに2つのフォルダを作成

コマンド 説明 別環境用
mkdir /tftpboot 後にbootフォルダを置くフォルダ。tftpdで/tftpbootを指定することになる。
mkdir /freebsd 後にFreeBSDのイメージをマウントさせるために使用する一時的なフォルダ。

tftpの設定

/etc/inetd.confを編集します。

vi /etc/inetd.conf

デフォルトのinetd.confで次の#を削除し、設定が有効になるようにして保存します。

before after
#tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot

dhcpの設定

isc-dhcp3-serverをインストールします。

cd /usr/ports/net/isc-dhcp3-server
make install clean

設定ファイルdhcpd.confを編集します。

vi /usr/local/etc/dhcpd.conf

次の設定を書き込んで保存します。

設定 設定項目 別環境用 説明
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option domain-name-servers 192.168.0.2;
server-identifier 192.168.0.2;
ddns-update-style none;
default-lease-time 120;
max-lease-time 120;

subnet 192.168.0.0 netmask 255.255.255.0 {
 filename "boot/pxeboot";
 option root-path "192.168.0.2:/tftpboot";
 range 192.168.0.100 192.168.0.199;
}
option routers ルーターのIPアドレス
option subnet-mask サブネットマスク
option broadcast-address ブロードキャストアドレス
option domain-name-servers DNSサーバーのIPアドレス。
FreeBSDマシーンで動かすのでFreeBSDマシーンのIPアドレス。
server-identifier server-identifier。マシーン個体を認識させるさせればいいようで、これもFreeBSDマシーンのIPアドレス。
subnet ネットワークアドレス
netmask サブネットマスク。通常はsubnet-maskと同じ値。
root-path boot/pxebootのルートパスの設定。FreeBSDマシーンのIPアドレスを指定。
range DHCPで取得できるIPアドレスの範囲を指定する。

nfsの設定

nfsで読ませるフォルダを指定するため、/etc/exportsを編集します。

vi /etc/exports

次の内容を追加して保存します。

/tftpboot -network 192.168.0.0 -mask 255.255.255.0

/etc/rc.confの編集

FreeBSDマシーンを起動させたとき、各種サービスが自動的に立ち上がるようにします。

vi /etc/rc.conf

次の設定をrc.confに追加して保存します。

inetd_enable="YES"
portmap_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
mountd_flags="-r"
dhcpd_enable="YES"

各種サービスを有効にするために再起動します。

reboot

FreeBSDイメージファイルを用意

にイメージファイルを置きます。

wgetによってイメージファイルを取得します。

コマンド 説明
wget -P /usr/src [7.0-RELEASE-i386-bootonly.isoのURL] i386のイメージファイルを使用する。
例:wget -P /usr/src ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/7.0/7.0-RELEASE-i386-bootonly.iso
イメージファイルは7.0-RELEASE-i386-disc1.isoでも可。

bootフォルダをコピー

PXEブートをするにはFreeBSDのイメージファイルに含まれるbootフォルダが必要です。

マウントしてコピーします。

コマンド 説明
mdconfig -af /usr/src/7.0-RELEASE-i386-bootonly.iso コマンドmdconfigで確定したデバイス名をとする。
mount -r -t cd9660 /dev/md0 /freebsd
cp -r /freebsd/boot /tftpboot/
cd /tftpboot/boot
gzip -d mfsroot.gz

loader.confを編集

vi /tftpboot/boot/loader.conf

次の内容にして保存します。

before after 説明
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
mfsroot_load="YES"
mfsroot_type="mfs_root"
mfsroot_name="/boot/mfsroot"
vfs.root.mountfrom="ufs:/dev/md0"
console="comconsole"
comconsole_speed="115200"
comconsole_speedは他の速度でもよいが、速いほうがコンソールの表示がスムーズになる。ここではとする。
初めて接続するときはデフォルトの速度を調べてから接続する。

ALIXとWindowsマシーンでの作業

PXEブートを試みる

  1. WindowsマシーンとALIXをシリアルケーブルで接続する
  2. Windowsマシーンのハイパーターミナルを起動する
  3. [切断]の状態でハイパーターミナルの設定をする:
    ビット/秒 115200
    エミュレーション VT100
  4. [電話]ボタン、または[通信]-[電話]を選択して通信できる状態にする
  5. ALIXの電源を入れ、メモリカウントを行っている間に"S"キーを押しBIOSの設定画面を表示させる
  6. 選択肢にある数字キーを押して通信速度を115200baudに、"E"キーを押してPXEブート可能にして"Q"キーを押して終了させる。その際、設定を保存するか聞いてくるので"Y"キーを押して設定をALIXのFlashメモリに保存する
  7. アスキーアートの"FreeBSD"が表示されるモード選択画面になったらタイムアウトにして進ませる(このときだけキーを受け付けなかったため)
  8. 画面表示に関するモード選択が出てるので、好みに合わせて選択する
  9. 環境に合った設定をしながらインストール作業を進める*1
  10. インストール作業の終盤で聞かれる、sshでのログインについては可能(YES)を選択する
  11. ユーザーの追加でgroupを 0 としたユーザーを作っておく*2

*1 今回はbootだけを扱ってきたので、ネットワーク経由のインストールが便利です。

*2 この設定をするのは、FreeBSD7.0のインストールが終わった後でALIXのみでFreeBSDを起動させるとハイパーターミナルでは表示されなくなり、のちのコントロールに困るからです。ALIXを起動させたときにFreeBSDの通信速度に関する設定をあらかじめできればいいだけと思いますが、私がその方法を知らないだけです。

*3 ALIXを再起動するなど初回の起動でない場合は6.の操作後に途中でフリーズすることがあります。原因はわかりませんが、LANと電源すべてのケーブルをALIXからはずすことにより解消するようです。

ALIXでFreeBSDを起動

その前に

  1. ALIXが再起動したら、メモリカウントを行っている間に"S"キーを押しBIOSの設定画面を表示させる
  2. "E"キーを押してPXEブートを解除して"Q"キーを押して終了させる。その際、設定を保存するか聞いてくるので"Y"キーを押して設定をALIXのFlashメモリに保存する

ALIXを起動

  1. FreeBSDマシーンでユーザーmynameでログインする(このユーザーがなければスーパーユーザーになって追加しておく)
  2. sshでFreeBSDマシーンからALIXに接続を試みる
  3. ALIXに接続できたらsuでスーパーユーザーになる(ユーザーmynameのgroupを0にしたから可能)
  4. ALIXのFreeBSDを自由に操作!

まとめ

ALIXにFreeBSD7.0のインストールすることは問題なくできた。その後ソースツリーを取得するためにコマンドcvsupを実行するも、すべて取得するのにほぼ1日かかり、perlのインストール中に暴走する。そのためApacheのインストールもperlが必要であるためにできず、ALIXをApacheを使ったwebサーバーとして使用することを断念した。CPU使用率には問題なかったため、CFの転送速度が原因である可能性が残る。またほかの種類のALIX(メモリが256MBのモデル)で試せば違う結果になっていたかも…
やはりマシーンスペックに合わせて軽いOSとwebサーバーを選ぶべきです。

やったこと 結果 備考
FreeBSD7.0のインストール 成功
ソースツリーを取得
(コマンドcvsupの実行)
成功 1日かかる
ports経由でperl5.8のインストール 失敗 途中で暴走
ports経由でApacheのインストール 失敗 perl5.8がインストールできないため
ソースからApacheをインストール 成功 でもレスポンスが悪い…

参考元

以下のサイトを参考にしてFreeBSD7.0のインストールができました。
1.は成功例だったので、あきらめずにできました。

  1. Review: Alix2c3 + FreeBSD 7
  2. Installing FreeBSD 7.0 via serial console and PXE
  3. ThinkPad X60sにFreeBSDをインストール