2007年2月9日金曜日

FreeBSD 7.0-CURRENT-200701にアップグレード・インストールしてみたのですが…

20070208



先週、FreeBSD 6.2-RELEASEをインストールして、使い出してみたものの、





ということで、Intel High Definition Audio(HDA)というオーディオデバイスが、6.2Rでは未サポートだったため、カーネルだけ、FreeBSD 7.0のsnapshot版に入れ替えて使っていました(注意:FreeBSDでは、ふつうはカーネルだけ差し替えて使う、ってことはやりません。あくまでもテストしてみた、ということ)。



数日間使っていて、それほど大きな不具合はなさそうだったので、カーネル以外のものもすべてひっくるめて、FreeBSD 7.0-CURRENT-200701に移行してみることにしました。



カーネルを入れ替えたときは、



ftp://ftp2.jp.freebsd.org/pub/FreeBSD/snapshots/200701/



から、7.0-CURRENT-200701-i386-bootonly.isoをダウンロードして、mdconfigして、ISOイメージファイルから/boot以下をごっそり抜き出してきました。



この/bootには、mfsrootなども含まれているので、FreeBSDブート時のメニューで、いったんコマンド形式のboot loaderに抜けてから、「boot -a」でブートし、途中でルートパーティションを聞いてくるので、「ufs:md0a」と入力すれば、mfsrootをルートパーティションとしてマウントし、インストーラ(sysinstall)が起動します。



そして、いつもと同じようにネットワークインストール(proxy経由のHTTPで)をしたのですが・・・配布元ファイルが見つからないといわれて、インストールできません。



あっ!



ftp://ftp2.jp.freebsd.org/pub/FreeBSD/snapshots/200701



snapshot版って、FTPサイトにはISOイメージファイルしか置いてないのですね・・・



ネットワークインストールの場合は、たとえば、



ftp://ftp2.jp.freebsd.org/pub/FreeBSD/releases/i386/6.2-RELEASE/



の中にある、base, dict, doc, games, info, kernels, manpagesといったディレクトリから、ファイルをダウンロードしながら展開していきます。snapshot版の場合、それらがFTPサーバ上には置いてありませんので、ネットワークインストールもできません。



しかたないので、bootonlyじゃないほうのISOイメージファイルをダウンロード。



ftp://ftp2.jp.freebsd.org/pub/FreeBSD/snapshots/200701/



ftp://ftp2.jp.freebsd.org/pub/FreeBSD/snapshots/200701/7.0-CURRENT-200701-i386-disc1.iso



CDを焼くのは嫌なので、ローカルファイルシステムからインストールしよう、という作戦です。



さっきと同様にして、ISOイメージをマウントし、その中の7.0-CURRENT-200701というような名前のディレクトリを、とりあえず/var/へコピーしました。



リブートして、boot -a、ufs:md0a、でインストーラを起動。



アップグレードインストールを開始し、適切にあれこれ指定。



最後に、ファイルの配布元として、ローカルなファイルシステムの/var/FreeBSD/7.0-CURRENT-200701を指定。これで、インストールがはじまりました。



インストール作業はあっというまに完了し、新しい、FreeBSD 7.0-CURRENT-200701でブート。



とくに問題なく、ログインできました。で、Xを起動するため、startx・・・灰色の画面のままですねぇ あれ?



どうやら、.xinitrcで起動するプログラムのいくつかか、すんなり起動しなくて(scim -dとからしかった)、けっこう長いこと待っていたら、あがってきました。
ログをみると、signal 11で、たくさんのプロセスが落っこちてます。

あぁ、やっぱりライブラリが変わったりして、だめなのかなぁ

と思ったのですが、でも、カーネルだけ差し替えたときは動いていたので、システムコールは問題ないのでは?という気がします。 じゃあ、ライブラリのバージョン番号が同じままで、ライブラリの中身の実装は変わっちゃってるのでしょうか。

まあ、あれこれ原因を考えても仕方が無い。CURRENTを使う以上、何が起きても自己責任

ということで、次に進みましょうか。



てゆーか、src/UPDATINGとかまったくチェックしてないし・・・無謀すぎるといえるかも。でも、FreeBSDって、こういうむちゃくちゃをやっちゃっても、それなりになんとか動かせちゃう、そういうシンプルさがいいんです。うん、うん。



というわけで、portupgrade -faで、portsでインストールしたアプリを全部再コンパイルしましょうか・・・あらあら、rubyがsignal 11で落ちて、portupgradeを実行できません。

うーん、そうきたか。

pkg_deleteで。portupgradeと、portupgradeが依存するruby、その他もろもろをアンインストール。



その後、portupgradeをmake install。



ちょうど、最近、portupgradeまわりで変化がおきているので、rm /var/db/pkg/pkgdb.dbしたり。



それと、これまでFreeBSD7はまったく使っていなかったため、/usr/ports/INDEX-7* がなかったので、/usr/portsを持っているファイルサーバ上で、



cd /usr/ports/
/usr/bin/make INDEXFILE=INDEX-7 fetchindex
/usr/bin/env PORTS_INDEX=/usr/ports/INDEX-7 /usr/local/sbin/portsdb -u



を実行しました。



これで、ようやく、FreeBSD 7.0-CURRENT-200701なマシンで、portupgrade -afができるようになりました。



時間がかかるので、vncserverの中でportupgradeを実行したままにしました。BATCHをつけてportupgradeするという方法もあるけど、INTERACTIVEなやつをリビルドしなくていいというわけでもないし、まあときどき、VNCでつないでみて、続行させればいいだけなので。



この作業と並行して、別マシンではCURRENTのソースコードをcvsupで取り出してあります。ひさびさに、CURRENTをmake buildworldして使う、日常生活がはじまりそうです。



(2007/2/9)
今日の夕方までかかって、ようやく、thunderbirdとfirefoxを実行できるところまできました。これで、ほぼ以前と同様な使い方ができるようになりました。
最後までやってしまって思ったのですが、portupgradeを使うんじゃなくて、pkg_deleteしてしまってから、make installすればよかったのだ、と。
あと、結局、diablo-jdkはsignal 11かなんかで動きませんでした。まあ、いいや。





0 件のコメント:

コメントを投稿