%includes; ]> &header;

2000 年問題 (別名, 「千年紀のバグ」) に対する経営側の理解が深まるにつれ, より多くの企業から, ハードウェアやソフトウェアのベンダに対して, 彼らの製品は 2000 年におこる転覆にどのように対処するのか, 公的な所信表明を要求する声が出てきています.

Unix や FreeBSD のような Unix like OS を使用している団体は, 既にその問題の一歩先を歩んでいます. FreeBSD は 2000 年が過ぎてだいぶたった後でも, 正しく時間を維持することができるでしょう.

予備知識

(この節は Linux Y2K compliance page の文章に基づいたものです)

すべての Unix と Unix ライクなオペレーティングシステムと同じように, FreeBSD における時間と日付は, 内部的には, 1970 年 1 月 1 日 (Unix の「紀元年」) からの秒数で表現されています. 現在のところ, この秒数は 32 bit 長の整数として格納されており, 2038 年とちょっとまで行ったところで使い果たされる計算になります. おそらく, その頃には, この宇宙の終わるときまで役に立つ, 64 bit 長の (あるいはそれ以上の長さの) カウンタを使用しているでしょう.

2000 年問題に対応済の OS を使用したとしても, 2000 年問題に対応 していないアプリケーションが正しく動作するわけではありません. 注意してください.

また, OS が現在の日時や日付をコンピュータの CMOS クロックから読み込んでいることにも注意してください. それらのデバイスすべてが 2000 年を正しく扱えるわけではありません. ハードウェアクロックが 1999 年から 2000 年へ正しく移行できること, そして 2000 年を正しくうるう年として扱えることを, 各プラットフォームで個別に確かめた方が良いでしょう.

あなたにできること

FreeBSD は次の世紀に入っても, 正しく時間を維持し続けることができるでしょう. しかし, サードパーティ製のアプリケーションはそうでないかもしれません. 2000 年問題に対しては, 攻撃は最大の防御と言えます. おなじみの来るべき世界の終わりについての物語にただ耳をすましているだけでは, 千年紀のバグを解決することはできません. ただその時が来るのを待っていても同じことです. FreeBSD プロジェクトは, みなさんの組織が, 来たる千年紀に向け しっかりしたシステム管理の原則を適用することをお勧めします.

お使いのシステムがどのように反応するか確認する方法があります. クロックを新年の数分前に合わせ, システムの時間を観察して下さい. システムは年として 1900 ではなく 2000 を表示しなければなりません. そして, もし年の表示が不正確であっても, ハードウェアをアップデートするのに十分な時間があるわけです. また, クロックを先に進めたまま, 情報システムに日常の業務を行わせれば, システムのどの部分が 2000 年問題に弱いのか, 価値ある洞察を得ることができます.

FreeBSD 2000 年問題所信表明

「広範囲にわたる分析と試験の結果, 我々は FreeBSD は 100% 2000 年に適合していると信じるに至りました. 不幸にも何かが見落とされていた場合でも, 我々は問題を可能な限りすみやかに解決できるようにベストを尽くします.」

David Greenman
Principal Architect, The FreeBSD project

修正済の問題

FreeBSD 上では, 以下の 2000 年問題は既に発見され, 修正されています.

misc/1380
yacc, ftpd, make などの複数のプログラムが, 年の表示として 19%d (訳注: C の書式指定文字列を使って, 1900 年代であると決め打ちしている) を返すようにハードコードされていました.
conf/1382
/etc/rc.local 内部の, ``message of the day'' のためにホスト / カーネル ID をビルドする sed スクリプトは, 年が 1999 以降にならないことに依存していました.
misc/3465
/etc/namedb/make-localhost コマンドは, DNS のシリアル番号を YYMMDD の形式で生成しています. 2000 年には, この番号は 1YYMMDD の形式で生成されるでしょう.
gnu/4930< /dt>
groff の tmac マクロは, ある種の日付を自動的に 1900 年代だと解釈するようにハードコードされていました.
bin/9323
touch は, 旧形式で日付を与えた場合, 2 桁の年度指定を正しく扱 えません. 00 から 68 までは, 2000 から 2068 と解釈されます.
xntpd/parse/util/dcfd.c
UNIX における紀元の扱いが間違っているために, うるう年の日数 の計算, DCF77 形式の時間の変換が正しく行われません. このエラーは, 2000 年だけではなく, どの年でも問題となるものでした.
tar/getdate.y
Conver() 関数が 70-99 の 2 桁の年を扱うようにハードコードさ れていました. 現在 2 桁の年数を 1970-2069 まで扱えるように変更されまし た. ただ, 世紀を越える年がうるう年でない場合をサポートしていません.
fetch/http.c
HTTP プロトコルは年度を 2 桁で表す旧形式の日付フォーマットを 含んでいます. 以前のバージョンの fetch は, そのような 2 桁の年度を, す べて 1900 年代と解釈していました. このバージョン以降は RFC 2068 の記述に従い, 2 桁の年度は, 50 年以上先の場合を除き, その世紀の年度と して扱われるようになりました. 旧形式の日付フォーマットを使用する HTTP サーバは, だんだん使われなくなっているため, この不具合が深刻な問題を引 き起こすとはないでしょう.

問題を含むアプリケーション

ports/7681
TkDesk 1.0 はファイルを表示するウィンドウで 19 を埋め込んで使用しています. 年が > 2000 であるファイルは, "191xx" (xx には実際の年の末尾の二桁が入ります) のように表示されます. このバグはバージョン 1.1 では修正されています.
ports/9295
INN 1.7.2 には, 2 つの 2000 年関連の問題があります. nntpget に -f オプションを使用してニュースを受け取る場合の問題と, Expire ヘッダが, 2000 年より先になるように相対指定されたいる場合 の問題です.
ports/9298
Knews には, 2 つの 2000 年関連の問題があります. NNTP NEWGROUP コマンドを発行する際に発生する問題と, knews が 2000 年をうるう年と認識しない問題です.
ports/9300
nntp-t5 は, NEWNEWS コマンドの生成に関する 2000 年問題があり ます.

更なる情報

FreeBSD の 2000 年対応について更なる質問をお持ちであるか, FreeBSD 下で走る 2000 年対応済でないアプリケーションを発見した場合, freebsd-bugs@FreeBSD.ORG まで連絡してください.

&footer;