Mebius MN-340へのFreeBSD再インストール記(1)

  • 投稿日:
  • by
  • カテゴリ:

このサーバーはMebius MN-340(CPU: Pentium 150MHz) + FreeBSD 4.10で構成されていた。たまにCPUのパワー不足を感じる以外は問題なく動いていたが、長年色々なアプリをインストールしては消したりしていたためか、HDDにゴミが溜まり、不自然に空き容量が無くなってしまった。
しかも、おそらくセクタ不良によるHDDの"hardware error"がこれまでに何回か発生して、使用不能な領域が増えている。
そのため、HDDをフォーマットしてFreeBSDを再インストールすることにした。

●最新バージョンを試す
せっかくなので、最新バージョンである6.1をインストールしようと思った。CD-Rが勿体無いので、インストーラーをFD起動してネットワークインストールしようと思って、6.1-RELEASE/floppies/の
boot.flp
kern1.flp
kern2.flp
をダウンロードしてFDにコピーしてPCをFD起動したら、右側にポップな"FreeBSD"のアスキーアートが出るブートメニューでデフォルトのものを選択し、カーネルが起動開始した直後に"page fault"が出て固まってしまった。
FDが悪いのかと思って、6.1-RELEASE-i386-bootonly.iso をCD-Rに焼いてCD起動したが、結果は同じだった。PCIドライバ起動中に出てる感じだ。

以前にもこのPCのFreeBSDを5.xにバージョンアップしようとして、同じことが起こって断念した経緯がある。6.xになって解決してるかもと期待したが、残念だった。
仕方なく、4.xの最終バージョンである4.11をインストールすることにした。

●FreeBSD 4.11インストール
4.11のインストールCDのISOイメージをFreeBSDのミラーサイトからダウンロードしようとしたら、古過ぎるためか、ミラーサイトの無いftp-archiveサーバーに移されていた(なぜか2.2.9だけはftpサーバーに残されていた。2.2.9は現役なのだろうか?)。そのftp-archiveサーバーからのダウンロードが非常に遅いため、通常の2枚分のCD-ROMイメージの取得を諦めて、233Mの4.11-RELEASE-i386-miniinst.isoを2時間かけてダウンロードし、8分でCD-Rに焼いた。

そのCD-ROMにはX11が入っていなかったので、この際、X Window無しのWebサーバーとして構築することにした。
CD-ROMを起動して、Kern-Developerのセットを選択して、特に工夫せずインストールしてFreeBSDを起動したら、PCMCIAのネットワークカードが認識されなかった。dmesgで起動ログを見ると、pcic0(PCMCIAドライバ)は正常に起動していたのに、カードを抜き差ししても反応しなかった。認識失敗の下り調子のBEEP音も出ない。原因がわからなくて、再度インストーラーを起動してKernel configurationにてシリアルポート(IRQ=3-4)とパラレルポート(IRQ=7)のドライバを無効にして、ネットワークインストールする振りしてIRQ=3,7指定でPCMCIAのNICを認識させてみたら、あっさり認識されたので、そのままFreeBSD全体を再インストールした。そうすると、シリアルポート(IRQ=3)を有効にして起動しても、PCMCIAのNICが正常に認識された。

おそらく、rc.confのpccard_*の行がおかしかったのだろう。最終的には

pccard_enable="YES"
pccard_mem="DEFAULT"
pccard_flags="-i 3"
の設定で正常に動いている。

●カーネル再構築
なにぶん低スペックのマシンなので、まずカーネルをスリムにすることにした。

cd /usr/src/sys/i386/conf/
cp GENERIC MINE
として、MINEを編集した。結果はこちら。SCSI関連、PCI NICドライバ、USB関連を全て無効にした。Webサーバーとしての動作を考えると、もっとスリムにできるだろうだが、追求するのは後日にすることにした。
MN-340に浮動少数点演算のコプロもあるようなので、MATH_EMULATIONも無効にしてみた。これを消すのは初挑戦だ。

MINE編集後、

config MINE
cd ../../compile/MINE
make depend
make
make install
として再構築(約2時間)したカーネルをインストールして再起動すると、起動しなかった。この時、MINEのcpuの行を誤って"I386_CPU"としていたため、"Unknown processor type"というエラーが出たのだ。

そこで、/usr/share/doc/の教え通り、カーネル起動前の10カウント中に停止し、

unload
boot kernel.old
としてカーネルを起動し(10カウントより前にkernel.oldと打っても起動するが、正しく起動しないようだ)、
cd /
mv kernel.old kernel.good
mv modules.old modules.good
として、正しく動くカーネルを退避した。

その後、MINEのcpuの行を"I586_CPU"に修正して同じ手順で再構築すると、今度は無事に起動した。
再構築前のカーネルが4.2Mだったのに対し新しいのは1.9M、起動直後のRAM使用量は24Mから21Mに減少した。(カーネル単体のRAM使用量は調べ方がわからなかった)

●Portsのアップデート
4.11のpackagesは当然もはやネット上に存在しないので、各種アプリケーションはportsでインストールするのだが、4.11のportsのままだと、必要とする各ソースコードパッケージのバージョンが古すぎて、やはりネット上に存在しないものが多数ある。従って、まずはportsを最新のものにしなければならない。
portsの更新は、現在はPortsnapとかいう手段が主流のようだが、今回は昔ながらのCVSupで行うことにした。

1. cvsupインストール

cd /usr/ports/net/cvsup-without-gui
make install
 なんと、依存関係により、これだけで12のパッケージがインストールされてしまった。
2. 環境変数の設定
 環境変数SUP_UPDATE, PORTSSUPFILEを設定する。
setenv SUP_UPDATE
setenv PORTSSUPFILE /usr/share/examples/cvsup/ports-supfile
 (本当はports-supfileを別の場所にコピーした方が良い)
3. ports-supfileの編集
 $PORTSSUPFILEで示されるファイルを編集する。特に"*default host="の右側に近所のサーバー名を指定する。
 今回は/usr/share/docs/を参考に(今回はよくお世話になった)
*default host=cvsup4.jp.FreeBSD.org
 とした。
4. CVSup実行
cd /usr/ports
make update
とすると、約3時間で更新が完了した。
5. portupgrade
 cvsupの道連れに大量の古いバージョンのツールがインストールされたので、portupgradeを使用して全てバージョンアップすることにした。
 portupgradeをインストールし(これでまたrubyを含むいくつかのツールが芋づる式にインストールされてしまった)、
portupgrade cvsup-without-gui
を実行すると、無事に全てバージョンアップされた。

portsを更新するだけで20近いパッケージがインストールされてしまうとは、えらいものだ。最初は最新のports.tar.gzをダウンロードした方が良かったのかも知れない。