FreeBSD 7.1へようこそ

第1回7.1-RELEASEの世界へ

2009年1月5日、待望のFreeBSD 7.1-RELEASEが発表された。2008年2月27日の7.0-RELEASE発表から数えて丸10ヵ月強にわたって安定化が図られた、⁠安定版(STABLE)」ブランチからのリリースであると同時に、8-CURRENTで試みられたいくつかの興味深い改良が加えられている。

本特集ではこれから数回にわたり、最新のRELEASEで使える便利な機能や新たな機能を通じて、FreeBSDの魅力に迫ってみることにしよう。

強力なリリースエンジニアリング

2008年3月3日より、5回にわたり掲載したFreeBSD 7.0-RELEASE特集「FreeBSD 7.0へようこそ」で紹介したように、FreeBSDは1993年11月に1.0-RELEASEが公開されて以来、絶え間無い革新と拡張が行われてきており、今回のリリースで丸15年を迎えたことになる。1993年といえば筆者は大学3年生、まだ卒業研究室にも配属されていなかった若者であった。爾来FreeBSDを使いづつけていつのまにか15年も経っているもので、感慨ひとしおである。

…となんだかノスタルジックな書き出しだが、7.1-RELEASEのインストールおすすめ時期を占った昨年の一番目の記事では、5.0→6.0のように、ピリオド「.」前の数字が上がる「メジャーリリース」から、6.0→6.1のように、ピリオドの後の数字が上がる「マイナーリリース」までの期間でもって、メジャーリリースの安定度を判定してみた。

その結果、⁠エンジニアリングの腕があがっている」ことから、⁠X.1が出るまでには少なくとも半年は楽しめる」と予言して、⁠ズバリ7.0-Rは今がインストールのしどき」とオススメしたのだが、果して結果はどうであったか?早速、メジャーリリースからマイナーリリースまでの間隔をまとめた表に、今回発表された7.1-RELEASEまでの間隔を加筆してみた。

表1 メジャーリリースからマイナーリリースまでの間隔
系列 間隔
2 7ヵ月
3 4ヵ月
4 4ヵ月
5 5ヵ月
6 6ヵ月
7 10ヵ月

結果、これまでの最長記録であったFreeBSD 2系列を抜いて、FreeBSD 7.0-RELEASEが堂々10ヵ月の長きにわたって最新の座にとどまる結果となった。予言が見事的中したわけで、筆者は少なからず嬉しく思っている。ちなみに次回のメジャーリリースは、www.FreeBSD.org内のリリースエンジニアリングのページにあるように、2009年6月にFreeBSD 8.0が予定されている。

 2.0⁠3年9ヵ月⁠⁠→ 3.0⁠1年5ヵ月⁠⁠→
 4.0⁠2年10ヵ月⁠⁠→ 5.0⁠2年10ヵ月⁠⁠→
 6.0⁠2年4ヵ月⁠⁠→ 7.0⁠2年3ヵ月の予定⁠⁠→ 8.0

ということになる。

7.1-RELEASEの新機能

これまた知っている人には耳にタコであるが、FreeBSDの最新の開発はHEADというブランチで行われる。現在では8.0に向けた8-CURRENTである。CURRENTでの開発が一段落ついたところで、X.0-RELEASEを出して、その後はX-STABLEというブランチで安定化の作業が行われる。

一方、-CURRENTで試みられた新しい機能は、随時-STABLEにもマージされる(Merge From Current:MFCという)ので、STABLEブランチのRELEASEを追いかけ続けても、一定の期間遅れで新機能を試すことができるという仕組みである。

したがって、今回のマイナーリリースでは、7.0-Rが出たほどのはなやかさは無いのだが、重要な改良と、いくつかのおもしろい機能がMFCされている。公開メールにある概要は…

  • 強力なデバッグ手段である「DTrace」が導入された(元はOpenSolaris⁠⁠。
  • ブートローダが改良され、USBデバイスやGPTラベルされたデバイスからの起動が可能になった。
  • デスクトップ環境はKDE 3.5.10とGNOME2.22.3になった。
  • amd64とi386アーキテクチャに、DVDインストールイメージが用意された。
  • cpusetシステムコールやcpusetコマンドが用意され、プロセスやリソースをCPUにわりふることができるようになった。
  • NFS(Network File System)でのロック機構「NLM」が改良された。
  • スケジューラが従来のBSDスケジューラからULEスケジューラになった。

このうち、機能として目新しいものはDTraceやブートローダの改良、一般ユーザに関係するものはKDEとGnomeのバージョンアップやDVDメディアの整備といったところである。本特集で、追い追い新機能について紹介する予定である。

7.1-RELEASEにアップグレードしよう

それでは早速7.1-RELEASEにアップグレードしてみることにしよう。筆者が用意した環境は、前作執筆時にインストールしたFreeBSD 7.0-RELEASEである(ということは、10ヵ月もの間アップデートをさぼっていたということだが、ここでは気にしない⁠⁠。freebsd-upgradeという仕組みを使えば、簡単にリリース間の移動(アップグレード)が可能なので大変便利である。

ネットワークにつながったFreeBSDマシンにログインして、freebsd-updateを実行する。手順が煩雑そうだが実は、聞かれる質問にはyと答えつづけていればよい

# freebsd-update -r 7.1-RELEASE upgrade

update.FreeBSD.orgというサイトとそのミラーをみつけて、自動的にアップデートが開始される。

Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching public key from update2.FreeBSD.org... done.
Fetching metadata signature for 7.0-RELEASE from update2.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... 

今回インストールするマシンには、ディストリビューション丸ごとは入れていなかったので、無い部分がありますよと聞かれている。単純にyと答える。

The following components of FreeBSD seem to be installed:
kernel/generic src/base src/sys world/base world/dict world/doc
world/games world/info world/manpages world/proflibs

The following components of FreeBSD do not seem to be installed:
src/bin src/cddl src/compat src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/tools src/ubin src/usbin
world/catpages

Does this look reasonable (y/n)? y

アップグレードに必要なファイルのダウンロードがはじまる。10ヵ月の開発の成果でナント、17815個のファイルをダウンロードするのだそうだ。筆者が実験したところ、fletsの光ブロードバンド回線でも優に2時間半はかかるので、急いでいるときには行わないのが身のためである。

Fetching metadata signature for 7.1-RELEASE from update2.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 7.0-RELEASE for merging... done.
Preparing to download files... done.
Fetching 17815 patches.....10....20....30....40...(省略).17780....17790....17800....17810.. done.
Applying patches... done.

パッチ適用で終わったかと思いきや、そして新たに1649個ものファイルダウンロードがはじまる。ここで筆者は手がすべって、Ctrl-Cで作業を止めてしまったのだが、もう一度

# freebsd-update -r 7.1-RELEASE upgrade

と入力することで、無事アップグレードを再開することができた。

次に、/etc以下の設定ファイルの更新が始まる。大抵の環境では/etc/hostsファイルを書きかえていると思うが、その場合、変更に問題がないかどうか、手動で変更を求められる。Enterを押すとviエディタが起動するので編集する─といっても大抵の場合、ZZ(大文字のZ2回)で抜けるだけでよい。

Fetching 1649 files... done.
Attempting to automatically merge changes in files... done.

The following file could not be merged automatically: /etc/hosts
Press Enter to edit this file in vi and resolve the conflicts
manually...

同じ要領で、設定ファイルを更新するかどうか聞いてくるが、基本的には

Does this look reasonable (y/n)? 

に対してyと答えるだけでよい。変更するファイルのリストが出るので、スペースバーを押しつづけるか、qでmoreから抜けて準備終了である。

The following files will be removed as part of updating to 7.1-RELEASE-p3:
/etc/rc.d/kernel
/usr/include/netgraph/atm/ng_atmpif.h
/usr/sbin/pkg_check
/usr/sbin/pkg_sign
/usr/share/doc/de_DE.ISO8859-1/books/handbook/portsnap.html
(省略)

この状態ではまだ「更新予約」が行なわれただけで、実際に更新されていない。

# freebsd-update -r 7.1-RELEASE install

としてカーネルの更新を行う。

Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.

言われるままに再起動して、もう一度インストールコマンドを実行する。

# shutdown -r now

(再起動を待って、rootでログイン)

# freebsd-update install

筆者の環境で20分ほど待った後、あっけなく終了である。

Installing updates... done.

再起動してメッセージを見ると、めでたく7.1-RELEASEにアップグレード成功である。ちなみに実体は7.1-RELEASE-p3になっていた。つい昨年までは、/etcのバックアップをとって、インストーラをたちあげて、どこを消すか気をつけて、…と細心の注意を払って作業していたことを思うと、拍子抜けするほどのお気楽さである。

# uname -a
FreeBSD mitamachine 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan  1 14:37:25 UTC 2009     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

おわりに

アップデートに意外と時間を取られ、気がつくと夜が明けてしまっていた。というのも、freebsd-updateのデータファイルは/var/db/freebsd-update以下に蓄積されるのだが、なんとトータル459メガバイト!CD-ROM1枚に迫るだけのファイルをダウンロードしていたのだった。

これは10ヵ月にわたる開発の結果で、FreeBSDボランティアの開発力に素直に驚嘆すると同時に、おそらくまめにアップデートを繰り返していればこんなに時間をかけることもなかっただろうと思うと、⁠仕事は溜めない」のが一番だと思う今日この頃、〆切に遅れてばかりの自分を見るようで、反省しきりである。それではまた来週。

おすすめ記事

記事・ニュース一覧