FreeBSD(98) の開発について

                                        日付: 平成11年(1999年)12月28日 (火)
     _________________________________________________________________

   このドキュメントを運用した結果に関し、FreeBSD(98) 移植関係者および筆者
   は一切責任を負いません。

1. FreeBSD(98) の開発計画を知るにはどこにたずねたらいいですか?

   FreeBSD(98) 移植チームは、すでにリリースされたもの以外の公開時期をまっ
   たく知りません。いつまでに次のリリースを出すかといったことはまったくわ
   かりません。もちろん、PC/AT 版のリリースにあわせ、常に最新版の公開に向
   けて作業を行なっていますが、公開時期を事前に約束することはできません。
   完成した時が公開時期です。

   PC/AT 版との同時リリースには、PC-98 固有のソースコードを完全に PC/AT 版
   のソースツリーにマージすることが重要です。現在は、kernel のマージは、ほ
   ぼ完了しているのですが、userland (fdisk や vidcontrol 等) および
   release (インストーラ) は不完全です。また、インストーラのテストやドキュ
   メントの日本語訳の時間等も必要となります。
   リリースまでの時間短縮のため、より多くの開発協力者を募集します。

2. FreeBSD(98) の開発のお手伝いをしたいのですが、どこに連絡すれば良いでし
   ょうか?

   移植チームは慢性的に人手不足なので、移植のお手伝いをしたいという方は大
   歓迎です。移植チームへ参加を希望される方は、
   <URL:mailto:FreeBSD98-hackers@jp.freebsd.org> に入会希望であることを明
   記し、簡単な自己紹介を書いたメールを送って下さい。このアドレスは移植チ
   ームの Mailing List そのものなので、"help" や "subscribe" とだけ書かれ
   たメールを送られても何もできません。
   また、この Mailing List は、開発作業に参加して頂けると判断できる方のみ
   を新規登録しています。現在の開発体制では、メンバが相互に顔を突き合わせ
   ることがほとんどありません。したがって、まったく実績のない方の場合には、
   移植チームとしても判断が付きかねますので、なるべく FreeBSD98-testers ML
   への参加や、移植チームへのパッチ/情報提供で実績を積むといった方法を取
   って頂けると幸いです。

   また、移植チームへの寄付等の相談は、
   <URL:mailto:FreeBSD98-core@jp.freebsd.org> で受け付けています。ハードウ
   ェアメーカからの技術情報の提供の申し出もあると嬉しいです。

   なお、X Window System については、FreeBSD(98) と一緒に配布されることが
   多いのですが、開発は X98 core team という別プロジェクトで行われています。
   未対応のビデオボードのサーバを開発したい等、X 関連の開発の協力の申し出
   は、<URL:mailto:x98@mech.titech.ac.jp> までお願いします。

3. FreeBSD(98) の開発で特に必要とされる作業は何ですか?

   以下のような作業をして頂ける方を特に募集しています。詳細は、移植チーム
   <URL:mailto:FreeBSD98-hackers@jp.freebsd.org> へメールで問い合わせて下
   さい。また、これ以外にもバグレポートや動作テスト等、さまざまな点で協力
   者が必要です。

   ビルド担当者
          FreeBSD(98) をリリースするためには、その膨大なソースコードをコン
          パイルしてバイナリパッケージを作成する必要があります。これをビル
          ドといいますが、当然 CPU が速くメモリや HD の容量が大きいほど作
          業が早く済み、結果として速やかなリリースが可能となります。

   FreeBSD(98)-current 開発者
          4.0-current といわれる、FreeBSD-4.0 となるべく開発されているソー
          スツリーです。3.0-current 時代同様、ダイナミックな変更が入ること
          が予想され、開発には手間がかかります。FreeBSD(98)-current とは何
          ですか?も参照して下さい。

   RELENG_3 ブランチ開発者
          3.x-stable といわれる、次の FreeBSD-3.x となるソースツリーです。
          現在の FreeBSD は、4.0-current と 3.x-stable の 2 本の開発プロジ
          ェクトが並行して走っており、current での NewBus のサポートなどに
          より、その内容の差が次第に大きくなっています。従って、3.x-stable
          のほうに対しても PC-98 対応のコードを維持する作業が別途必要です。

   新規デバイスドライバ開発者
          FreeBSD(98) で対応していない周辺機器が、まだまだたくさんあります。
          これらのデバイスドライバは、その周辺機器を持っている方自身が開発
          作業をして頂けるのが一番です。特に、同じチップを使ったボードのド
          ライバが既にあるといった場合は、そのドライバをベースに、ほんの少
          しの変更で使用可能となることがありますし、そのデバイスが PCI バ
          スの場合は、PC/AT のドライバそのもので動作する可能性が高いです。
          また、NetBSD/pc98 では、FreeBSD(98) よりも多くの周辺機器に対応し
          ていますので、NetBSD/pc98 からドライバを移植するという方法もあり
          ます。

   各種ドキュメント更新担当者
          現在の人手不足の状況では、どうしてもカーネル等のソースコードをい
          じる作業が優先され、ドキュメントの修正は二の次になりがちです。さ
          らに、LINT や ERRATA への PC-98 固有事情のフォローも出来ていませ
          ん。そこで、FreeBSD(98) 付属のドキュメントを、現状にあった内容に
          更新して頂けると幸いです。また、ここは説明不足だとか、もっと別な
          表現をすれば誤解が防げる等といったような意味での修正も必要でしょ
          う。

   FreeBSD(98) 公式 WWW ページ作成担当者
          移植チームでは、FreeBSD(98) 公式 WWW ページを持ちたいと考えてい
          ますが、そのコンテンツ (内容) を作成/保守して下さる方を募集して
          います。最初から完璧な内容である必要はなく、極端な話、最初は各所
          に散らばっている FreeBSD(98) 関連の WWW ページへのリンクを提供す
          るだけでも有意義なのでは?と思います。

4. current や stable を追っかけていないと、開発に協力できないのですか?

   そんなことはありません。既にリリースされているものをベースにしても開発
   作業はできますし、実際そのようにして開発している方もいます。ただし、そ
   の場合は、自分が変更した内容が current や stable に対しても有効かどうか、
   ソースを anonymous FTP 等で取り寄せてチェックして頂けると幸いです。

5. FreeBSD(98)-current とは何ですか?

   FreeBSD(98) 移植チームは、FreeBSD-current ベースの FreeBSD(98) を公開し
   ています。これは、現時点での最新版のソースツリーであり、自力でカーネル
   を含む全システムをコンパイルすることによって入手するものです。決してバ
   グフィックス版ではありません。また、常にその内容が変化しているため、安
   定動作しないことや最悪コンパイルすらできないこともあり得ます。

   FreeBSD(98)-current では、FreeBSD-current で PC/AT 用に行われた変更を、
   PC-98 に適応して同期をとるという作業が行われます。しかし、作業者が使用
   していないデバイスや機能に関しては、仮に作業ミスがあったとしても気が付
   かないことがあります。従って、なるべく多くの方が FreeBSD(98)-current を
   入手し、その作業を分担して頂けると、スムーズな開発が行われることになり
   ます。これが FreeBSD(98)-current を一般に公開している理由です。

   FreeBSD(98)-current は、
   <URL:ftp://bsd.eps.nagoya-u.ac.jp/pub/FreeBSD-PC98-current/> から
   anonymous FTP で入手することが可能です。
   また、sup により変更した部分のみを入手する手段を設けています。current
   ベースの FreeBSD(98) は、カーネルソース (/usr/src/sys) は既にマージされ
   ているため cvsup を使用することが可能です。cvsup.jp.freebsd.org などか
   ら取得してください。その他の部分については、マージされていないため、sup
   を用いて以下の sample file を参考にして取得してください。以下の sample
   には sys が含まれていますが、sys は cvsup で本家のソースツリーのものを
   使用した方が良いと思います。

     sys host=bsd.eps.nagoya-u.ac.jp hostbase=/ftp/pub
     base=/usr/sup/FreeBSD98 prefix=/usr/src98 delete old
     usr.sbin host=bsd.eps.nagoya-u.ac.jp hostbase=/ftp/pub
     base=/usr/sup/FreeBSD98 prefix=/usr/src98 delete old
     sbin host=bsd.eps.nagoya-u.ac.jp hostbase=/ftp/pub
     base=/usr/sup/FreeBSD98 prefix=/usr/src98 delete old
     doc host=bsd.eps.nagoya-u.ac.jp hostbase=/ftp/pub
     base=/usr/sup/FreeBSD98 prefix=/usr/src98 delete old
     share host=bsd.eps.nagoya-u.ac.jp hostbase=/ftp/pub
     base=/usr/sup/FreeBSD98 prefix=/usr/src98 delete old

   これにより、/usr/src98 の下に PC-98 用のソースコードが格納されます。
   prefix を /usr/src にすれば、cvsup などで取得したファイルに上書きされま
   す。いったんシステムが current ベースになれば

     #mount -t union /usr/src98/sbin /usr/sbin
     #mount -t union /usr/src98/usr.sbin /usr/src/usr.sbin
     #ls -R /usr/src/sbin > /dev/null
     #ls -R /usr/src/usr.sbin > /dev/null

   を実行することにより、make world を行うことが可能になります。ただし、
   unionfs は不安定な部分もありますので、unionfs を使用しない場合は、

     #cp -r /usr/src98/* /usr/src

   としてから make world すれば良いです。

   sup および ftp ともに、午前 5 時ごろに最新のものに置き換えられます。従
   って、そのあたりの時間帯に取得することは避けることをお勧めします。また、
   current ベースを使用される場合は、本家の freebsd-current ML を購読され
   ることを強くお勧めします。

6. FreeBSD(98) の開発で困っていることは何ですか?

   以下のものに関する知識をお持ちの方は、是非開発への協力または情報の提供
   をお願いします。

   NEC 55 ボード用ドライバの CAM 対応
          3.0 以降、CAM に対応していない SCSI の物理層ドライバは使用できな
          くなったため、bs ドライバの保守が難しい状況になっています。現在
          は、通常使用には問題ない程度にはなっていますが、初期化やエラー処
          理周りは十分とは言えません。特に、MO や CD-ROM などのリムーバブ
          ルメディアを扱うドライブについて、メディアを挿入していない場合、
          デバイスの認識に失敗するという問題があり、これは INQUIRY か
          READ_CAPACITY でのエラーハンドリングが不完全である可能性が高いで
          す。
          現時点では、開発元の NetBSD/pc98 では既に obsolete となっている
          bs ドライバよりも、ct ドライバを CAM 化して移植したほうが有利と
          の判断で、その方向性で作業が進められています。

   boot1, boot2 の ELF 対応
          boot1 および boot2 が ELF に未対応なため、/boot/loader を経由せ
          ずに ELF な kernel を boot する手段がありません。

   NEWBUS 対応
          PC-98 特有の不連続 I/O ポートをリソースマネージャで管理する方法
          は、ほぼ固まったので、今度は各々のドライバを NEWBUS 化する作業が
          必要です。

   slice 周り
          本家が、mbr を全てのアークテクチャで同一視しているため、PC-98 で
          は問題があります。また、devfs も変です。"options SLICE" がなくな
          ったので、見かけ上、問題がなくなったかのようになりましたが、隠れ
          ただけです。

   mss ドライバ
          認識に失敗したり、大きなサウンドファイルの再生中に途中で止まるな
          ど、複数の障害が報告されていますが、原因はわかっていません。ノー
          ト機の suspend/resume 対応と合わせて luigi's pcm ドライバへ移行
          すべきと思われますが、作業は進んでいません。

   EPSON_BOUNCEDMA
          "options BOUNCE_BUFFERS" が廃止されたので、それに依存していた
          "options EPSON_BOUNCEDMA" が働かなくなってしまいました。この他に
          も、EPSON 機固有のコードは、最近メンテされていないものが多いので、
          全体的な見直しが必要と思われます。

   boot loader と apm
          3.1 から ELF カーネルに対応した新 boot loader となりましたが、こ
          の loader にて、時々カーネルを読み込んだ直後にハングアップするこ
          とがあります。locore.s から呼び出される apm_setup ルーチンから復
          帰しないのが直接の原因のようで、apm ドライバをカーネル conf から
          削除すれば回避できるのですが、復帰しない真の理由を追求する必要が
          あります。

   SMP 対応
          試験的な実装で、RvII26 での動作が確認されました。次はコードのブ
          ラッシュアップをするべきですが、作業に取りかかれていません。

   HYPERMEMORY サポート
          MELCO の HYPERMEMORY のうち、options MAXMEM だけで対応できないタ
          イプのものについては、非公式パッチが存在していますが、3.x での動
          作報告が少ないうえに、現在、取りまとめ役が不在のため、マージ作業
          が行われていません。なお、今の FreeBSD(98) は 3 stage boot にな
          ったので、kernel が動く前にデバイスの機能を活性化させる等といっ
          た小細工が、2.2.x 時代よりも、やりやすくなっています。

   IND-S/RSA-98 対応
          3.1 から採用された新しい sio ドライバには、これらのボードの対応
          コードが含まれていますが、正常に動作しないようです。

   30LINES
          ほとんどメンテナンスされていません。また、X サーバ終了時の障害回
          避という、本来の目的とは異なる用途で使われることが多いです。
          vidcontrol(1) コマンドとの関係など、見直すべき点が多くあります。

   X と syscons の相性 ?
          特定の X サーバにおいて、syscons でのスクリーンセーバが起動され
          る時間になるとフリーズするという報告がありますが、X と
          FreeBSD(98) の両方にまたがっていること、また、その後 syscons が
          大幅に改定されたため、現在でも起こり得るかどうかを含め、検証およ
          び解析が進んでいません。

   boot マネージャ
          現在の boot コードが NEC 純正の固定ディスク起動メニューの仕様に
          依存しているらしく、サードパーティ製の boot マネージャでは boot
          出来ないことがあるのですが、具体的にどこが問題か分からないので、
          改善しようがない状態です。また、現状では、boot マネージャのイン
          ストールのために、どうしても DOS または Windows でのフォーマット
          が必要です。FreeBSD(98) にも、DOS/Windows に依存しない free な
          boot マネージャが欲しいところです。
          現在、98bs という BSD Copyright な boot マネージャが 98testers
          ML で評価中ですが、その性質上、問題が発生した場合には何もできな
          くなるという類のものですので、十分なテストが必要です。また、
          Linux/98 には grub/98 という boot マネージャがあり、これは
          FreeBSD(98) も boot 可能ということですが、まだ完全に固定ディスク
          起動メニューの代わりとするところまでは至ってないようです。

   パーティションエディタ
          PC/AT では、fips というツールまたは市販のパーティションエディタ
          で、既に導入されている DOS や Windows の再インストールなしに、空
          きパーティションを作ることが出来ます。しかし、PC-98 には、市販品
          を含めてもそのようなツールが存在しないので、空きパーティションの
          確保のために、HD のフォーマットと OS の再インストールが必要とな
          ることが多々あります。fips の PC-98 版があれば、このような作業を
          する必要がないことから、FreeBSD(98) 等のインストールに対する敷居
          がより低くなるものと思われます。
----
chi@bd.mbn.or.jp