Jan 21, 2007

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

カーネルをスリム化し、Portsを更新できたので、Webサーバーとして必要なソフトのインストールを始めた。まずはこのWeblogを実現するMovableTypeに必要な環境だ。

●Apacheインストール
新しいバージョンの方が良かろうと思ってapache2.2をインストールしたが、httpd.confがあまりにも複雑だったのと、同時接続クライアント数(旧MaxClients)の設定がわからなかったので、apache1.3に入れ替えた。
(1) ports/www/apache13をインストール
(2) /usr/local/etc/apache/httpd.confをコメントに従って編集
(3) /etc/rc.confに'apache_enable="YES"'を追加してOS再起動
(4) 別PCから'http://(IPアドレス)/'にアクセスして/usr/local/www/data-distが見えることを確認
(5) 'http://(IPアドレス)/cgi-bin/test-cgi'にアクセスしてCGIが正常実行されることを確認

●MySQLインストール
MySQLは(少なくとも現時点でportsがサポートする最新の5.1までは)バージョンが上がる度に結構基本的なDBの機能が追加されているので、新しい方が良いと思われる。
そう思っていたのだが、5.1の新機能に魅力を感じなかったので5.0をインストールしてしまった。
(1) ports/databases/mysql50-serverをインストール
(2) /etc/rcに'mysql_enable="YES"'他必要な設定を加えてOS再起動
(3) 'mysql -e "select version()"'を実行、適切な結果が得られることを確認(今回は5.0.27と出た)

●MovableTypeリストア
MovableType自体は一式をtarで固めてバックアップしたものを展開すれば即動いた。
これまではBerkeleyDBを使っていたので、DBも一緒にリストアされた。

mt-check.cgiを実行すると、Perlが5.005であるということで、Perl 5.6.1以上を強く推奨された。
他に、このWeblogのエントリー作成で必要なHTML::Entities, Image::Magickが無かった。

●Perl 5.6.2インストール
portsにlang/perl5(Perl5.6.2)とlang/perl5.8があり、Perl 5.8のことはよく知らないし、Perl5.6.2で十分だろうと思ったのとで、perl/lang/perl5をインストールした。
その後、下記の要領でPerlの追加モジュールをインストールしていると、最新のportsではImage::Magick、XML::Atom等がPerl5.8を必要とすることが判明したので、5.8に入れ替えた。

●Perl 5.8インストール
ports/lang/perl5.8をインストールした後、ports/graphics/ImageMagickをmakeすると、configureスクリプトでPerlのバージョンが5.005だと診断されてしまい、Image::Magickがインストールされなかった。
/usr/bin/perlが5.005のままで、5.8は/usr/local/bin/perlとしてインストールされており、autoconfでは/usr/bin/perlが優先的に使用されてしまうらしい。
・/usr/bin/perlを/usr/local/bin/perl へのシンボリックリンクにしても駄目だった。
・/usr/bin/perlを/usr/local/bin/perl へのハードリンクにしても駄目だった。
・configureを実行する時のパス順序を/usr/local/bin優先に変更しても駄目だった。
ということでmanやdoc等かなり調べまくって悩んだのだが、たまたま/usr/ports/lang/perl5.8/pkg-messageというファイルが存在することに気付き、開いたらあっさり答えが書いてあった。

use.perl port

とすると、5.8がデフォルトになるらしい。use.perl systemで5.005がデフォルトに戻る。/usr/local/bin/use.perlの中身が何なのかは、疲労により追究する気力が無かった。

●HTML::Entitiesのインストール
Portsにそれらしいのが無かったので、CPANでインストールした。
(1) 'man CPAN'の記述に従い、'perl -MCPAN -e shell'を実行
(2)設定を色々尋ねられるが全てデフォルト設定、FTPサイトは日本国内のを選択
(3)'install HTML::Entities'実行

●Image::Magickのインストール
上記の通りPerlのバージョン認識エラーにより失敗を繰り返したが、それがクリアされたら、ports/graphics/ImageMagickをインストールするだけで完了した。
なお、ports/graphics/ImageMagickのオプションメニュー(初回のmakeまたはmake configで出る)にて"IMAGEMAGICK_PERL"にチェックが入っているのを確認しておくべし。

See more ...

Posted at 23:08 in UNIX | WriteBacks (0)
WriteBacks

Jan 13, 2007

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

このサーバーは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をダウンロードした方が良かったのかも知れない。

See more ...

Posted at 13:39 in UNIX | WriteBacks (1)
WriteBacks

FreeBSD 6.x/5.xのインストーラー起動時に--------------------- on pcib0trap12: page fault while in kernel mode...current process = 0 (swapper)---------------------と出て固まる件について色々調べたが、同様のトラブルは結構発生しているようだが、解決したらしい情報は1件も発見できなかった。原因の憶測も多岐に渡り、結構根が深い問題のようだ。大体共通しているのは、おそらくハードウェアが古くてサポート対象外となったのだろう、ということだった。古いIDE HDDはDMAができないのが原因だろう、という意見が散見されたが、ブートメニューの"Safe mode"だとIDEのDMAが無効にされる(カーネル変数hw.ata.ata_dmaが0に設定されるされる)ことが判明し、Safe modeでも同様の現象だったので、外れだ。他に"second disk"で起動するとより多くのカーネルが選択できるので試してみるべし、という怪情報があったが、*-disk2.isoでは起動できなかった。こういうことではなく"second disk"なるものが存在するのだろうか?

Posted by ynomura at 01/15/2007 01:26:51 AM