最新の FreeBSD(98) を追いかける

$Date: 2005/01/27 16:07:55 $

1. はじめに

-current や -stable は開発バージョンだということを忘れないで下さい。時 によってはコンパイルできないかもしれませんし、コンパイルできたかたらと いって必ずしも動作するとは限りません。つまり、何があっても自分で何とか しようというガッツがある人以外にはオススメできないということです。

現在、FreeBSD(98) 移植チームでは、AT 互換機用のリリースごとに PC98 用 の差分をリリースしています。しかし、5.0-RELEASE 以降は、本家に PC98 用 のソースがマージされてるので PC98 用のパッチのあたったソースを用意しな くても PC98 用のバイナリを作成することが可能です。では、なぜ PC98 用の ソース差分があるのか疑問の思うかもしれません。どういう差分があるかを説 明してその疑問に答えようと思います。まず大雑把に分類すると、

  1. PC98 では役に立つのだけど、本家ソースツリーにマージできないでいる
  2. 一部コマンドの日本語対応
  3. ソースツリー中の PC98 固有部が共通部の変更と完全に同期が取れないた めに発生してしまった

という 3 通りに分類されます。-stable や -current のソースを取得すると 3 番目に相当する変更は既にされているはずです。コマンドの日本語対応は FreeBSD(98) 移植チームからのささやかなサービスと思って下さい。1 番に相 当する部分が存在する理由は、

  1. 今の PC98 差分のままだと見苦しい
  2. 本家に必要性を理解してもらえない
ということになります。

FreeBSD(98) 移植チームでは、PC98 用の差分をすべて本家へマージすること を目標に作業を行なっています。しかし、実際に作業に当たる人が少なくてな かなか進んでいないのが現状です。

2. 情報源

FreeBSD(98)-stable を利用する人は FreeBSD-stable メーリングリストへ、 FreeBSD(98)-current を利用する人は FreeBSD-current メーリングリストへ ぜひとも加入してください。これらのメーリングリストに入るには、 majordomo@FreeBSD.org

      subscribe freebsd-stable
      subscribe freebsd-current
    

と書いたメールを送って下さい。これらのメーリングリストは英語で議論が行 なわれています。日本語は送らないで下さい。

日本語でも大丈夫なメーリングリストとして FreeBSD98-testers メーリング リストがあります。このメーリングリストに加入するには、 majordomo@jp.FreeBSD.org

        subscribe freebsd98-testers
    
と書いたメールを送って下さい。

また 「FreeBSD ハンドブック」「Chapter 19. 開発の最前線:FreeBSD-current と FreeBSD-stable」 を必ず読んでください。

3. ソースツリーの取得

FreeBSD(98) SNAPSHOT を利用してバイナリをインストールすることも可能で すが、自分でソースに変更を加えてコンパイルすることを考えると、ソースか らアップデートするのが開発者向きでしょう。

/usr/src 以下にソースツリーを用意するとしましょう。CTM や ftp でも可能 ですが、ここでは cvsup を用いる方法だけ説明します。

まずは cvsup をインストールしましょう。cvsup は ports や packages にあ ります。たとえば、

      pkg_add -r cvsup
    

とすると、インストールすることができます。ただし、 FreeBSD(98) 4.3R-Rev01 以前のバージョンに付属の packages に収録されてい る cvsup にはバグがあるため、必ず新しいバージョンを使うようにしてくだ さい。

次に cvsup の動作を指定する supfile を作成します。 /usr/share/examples/cvsup 以下にサンプルファイルがあるので、これを元に して作成するといいでしょう。たとえば stable-supfile が RELENG_4 ブラン チ (4.x-stable) 用の supfile で、standard-supfile が HEAD ブランチ (5.0-current) 用の supfile です。

      # cd /usr/share/examples/cvsup
      # cp standard-supfile standard-supfile.pc98
      # vi standard-supfile.pc98
    

*default host=CHANGE_THIS.FreeBSD.org となっているところを書き変えて身 近な cvsup サーバを指定します。たとえば、cvsup2.jp.freebsd.org を使う とすると

      *default host=cvsup2.jp.FreeBSD.org
    

となります。

さて、supfile の準備ができたら cvsup を実行します。

      # cvsup -g -L 2 /usr/share/examples/cvsup/standard-supfile.pc98
    

ネットワークの帯域にもよりますが、はじめて実行する場合は非常に時間がか かり 1 時間たっても終らないかもしれません。途中で中止したい場合は、 CTRL-C で終了してください。

無事 cvsup が終了すると、この場合は /usr/src 以下が指定した stable や current のソースになっています。あとは好きなときに cvsup を実行すると、 その時点での stable や current のソースを取得できます。cron で自動的 に cvsup を実行するようにしてもいいでしょう。

4. システムの再構築

まずは、/usr/src/UPDATING に注意事項が書いてあるので、よく読んで、その 指示にしたがってください。また以下の作業でつまづいた時には、もう一度こ のファイルを読み直して下さい。対処方法が書いてあるかもしれません。

それでは、実際にコンパイルしてみましょう。一番簡単な方法は、そのまま make buildworld してしまうことです。当然 PC98 用の差分に含まれている機 能は使えなくなりますが、そういう機能を使わないと割り切ってしまいましょ う。

      # cd /usr/src 
      # make buildworld
    

環境にもよるのですが、PentiumMMX-233MHz で 4 時間程度かかります。エラ ーもなく終了すると /usr/obj 以下に新しいバイナリが作成されています。つ ぎに kernel をコンパイルします。config file を /sys/pc98/conf/SARU とす ると

      # cd /usr/src
      # make buildkernel KERNCONF=SARU
    

デバイス情報ファイルをインストールし、必要に応じて修正します。

      # cp /usr/src/sys/pc98/conf/GENERIC.hints /boot/device.hints
      # vi /boot/device.hints
    

コンパイルされた kernel とモジュールをインストールします。

      # make installkernel KERNCONF=SARU
    

新しい loader をインストールします。

      # cd src/sys/boot
      # make install
    

新しい kernel をシングルユーザモードで起動し直します。新しいユーザラン ドは、新しいシステムコールを行なうことがあるので、make installworld を 行なう前に新しい kernel を立ち上げるべきです。新しい kernel で起動しな い場合は、ちょうど壊れている時に cvsup してしまったのでしょう。まずは 古い kernel に戻しましょう。それから、2,3 日待って cvsup からやり直し て下さい。

無事に新しい kernel で起動したらまず最初に乱数の種を初期生成し、その後に installworld に必要な最低限のファイルのみ更新しておきます。

      # /etc/rc.d/preseedrandom
      # mergemaster -p
    

gcc のバージョンが上がっているので、古い形式のインクルードファイルを削除します。

      # rm -rf /usr/include/g++
    

前準備が無事終了したらユーザーランドをインストールします。

      # cd /usr/src ; make installworld
    

/etc/ 以下を修正します。/usr/sbin/mergemaster を使うとよいでしょう。

      # mergemaster
    

これで、システムの再構築は完了しました。恐怖の再起動です。

      # shutdown -r now
    

正常に起動したらアップデートの完了です。

----
FreeBSD(98) 移植チーム
戻る
www@jp.FreeBSD.org
Copyright (C) 2000-2005 The FreeBSD Project (Japan). All rights reserved.
$Date: 2005/01/27 16:07:55 $