ttt

getttyent

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

2007-02-08 22:20:36 | デジタル・インターネット

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かなんかで動きませんでした。まあ、いいや。


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。