6系に比べて7系は ULE とか ZFS とか面白そうなものが満載です。早く使ってみたいなーとは思うものの自宅サーバーにいきなり入れて動かなかったりしたらまぬけすぎるのでがまんがまん。だけどその前にちょっと試験的に導入、ってことでバックアップに使用しているFreeBSD6.2機に7.0-BETA3をインストールしてみました。
[マルチユーザインストール成功][ ULE を試してみる ]上にいろいろ積み上げてるのでディスプレイとキーボードの接続が難しく、仕方が無いからネットワーク越しにアップグレードです。make kernel → make world → mergemaster → 再起動 にて難なくインストールできました。make kernel でモジュールインストール時になんか妙なメッセージが出てたような気がしますが、一応動いています(^_^)。その後7で再起動後に make kernel した時は特に変なメッセージは出ませんでした。このマシンは ssh で深夜のバックアップとメンテナンスに使う以外はアイドル状態のようなものなのですが、自宅サーバの場合は Apache とか PostgreSQL とかいろいろ動いてますし、さすがにシングルユーザモードに落ちないとダメでしょうね。
[ ffmpeg のコンパイル ]デフォルトになるのは7.1の予定らしいのですが、登場したのはFreeBSD5系からでCURRENTでの実績は割とあると思うので、別に使ってもいいかな? てことで。カーネルコンフィギュレーションで GENERIC の代わりに次の内容を使用します。
-- ULE-GENERIC include GENERIC ident ULE-GENERIC options SCHED_ULE nooptions SCHED_4BSDで、make kernel KERNCONF=ULE-GENERIC するとか /etc/make.conf に 'KERNCONF=ULE-GENERIC' とか書いておけばOK。作ったカーネルで短いファイルをエンコードして速度差を測定してみましたが、測定誤差程度の差しかありませんでした。まぁPentium3-800MHzのユニプロセッサ仕様なので当たり前ですが(笑)。コア数が4個以上になると生きてくるスケジューラだったような気がしますが、大幅な速度低下がないのであれば先取りしても特に問題はないでしょう。
自宅サーバは深夜アニメのエンコード用も兼ねてるので、これが動かなくては話になりません。FreeBSD7ではgccが4.2.1になりますが、ffmpegの解説ページを見るとgcc4で失敗する例をちらほら見かけるのでちょっと気になっていました。
で、ports で入れてみたところ
ばっちり動きましたよしよし、なかなか順調ですね。じつは自宅サーバのffmpegは
Compiler did not align stack variables. Libavcodec has been miscompiled and may be very slow or crash. This is not a bug in libavcodec, but in the compiler. You may try recompiling using gcc >= 4.2.というメッセージがいつも出ているのですが、FreeBSD7ではさすがにこれが出なくなりました。もしかしてうちの ffmpeg は very slow で動いてたりした場合、FreeBSD7 にするとちょっと速くなったりするのかもしれませんね(^^)。
Do not report crashes to FFmpeg developers.ちなみに、ports/multimedia/ffmpeg を WITH_OPTIMIZED_CFLAGS で make すると、エンコード時に
Value nan for parameter 'coder' out of range.と表示されて止まっちゃいました。しばらくは WITH_OPTIMIZED_CFLAGS は封印です。
Value nan for parameter 'coder' out of range.
Segmentation fault (core dumped)
RELEASE版が出るのは来月初旬になるみたいですが、年始のヒマな時にはRC1か2が出てるハズですので、ここらへんを入れてみようかしら。新年早々うちのサーバがコケてたらごめんなさい(苦笑)。