MT の再構築時のサーバエラー("Premature end of script headers...")対策としては本来,メモリを増設するのが望ましい。しかし,オンボロ ThinkPad サーバに投資をするには懐が寂しすぎる。MT のEntriesPerRebuild 設定値を変えたりしてみても限界があるようである。
実記憶装置の増設はさしあたりペンディングとしても,仮想記憶を増やしておくのも手だてとしてあるわけで,FreeBSD Handbook に従ってスワップ領域を追加してみた。仮想記憶の容量は実記憶容量とのバランスを考えて設定しないと,ページングが頻発してパフォーマンスが低下する,いわゆるスラッシングを招く場合がある。そのあたりのリスクを受け容れるべきである。
FreeBSD 5.4 での拡張方法を整理しておく。ただし,この方法はバージョンに依存するので,4.X 系を使っている方は使えないことに注意。
まず追加するスワップ領域をディスク上に作成する。/usr/swap0 として 256MB の容量とした。容量を変えたい場合は dd コマンド引数 count 回数値を MB 換算値に指定すればよい。次にファイルのパーミションを設定し,最後に mdconfig,swapon コマンドを発行すれば有効になった。
# dd if=/dev/zero of=/usr/swap0 bs=1024k count=256 # chmod 0600 /usr/swap0 # mdconfig -a -t vnode -f /usr/swap0 -n 0 && swapon /dev/md0
pstat コマンドで確認する。/dev/md0 が機能していることがわかる。
# pstat -s Device 1K-blocks Used Avail Capacity /dev/ad0s1b 393216 218864 174352 56% /dev/md0 262144 38916 223228 15% Total 655360 257780 397580 39%
リブートは不要である。しかし,システムを停止するとこの swapon 操作は無に帰するので,次回リブートしたときも活きるよう,/etc/rc.conf に以下の行を追加しておく。
swapfile="/usr/swap0"
カーネルコンフィグレーションファイルにおいて md 疑似デバイスが有効になっている必要がある。これは標準の GENERIC カーネルにも組込まれているので,あまり気にせずともよさそうである。カスタマイズしている方は,「device md」の行があるか確認し,なければ追加してカーネル再構築を行う。
MT の EntriesPerPrebuild 値をデフォルトの 40 に戻して,再構築してみたが問題なさそうである。