# FreeBSD/i386 5.1-RELEASE リリースノート

### FreeBSD プロジェクト

Copyright © 2000, 2001, 2002, 2003 by FreeBSD ドキュメンテーション プロジェクト

$FreeBSD: src/release/doc/ja_JP.eucJP/relnotes/common/new.sgml,v 1.86 2003/05/29 00:10:11 rushani Exp $

この FreeBSD 5.1-RELEASE 用リリースノートには、 5-CURRENT 開発ブランチの FreeBSD ベースシステムに対する最近の 変更点の概要が含まれています。 FreeBSD カーネルおよびユーザーランドにおける変更点、 前のリリース以降に発行されたセキュリティ勧告が書かれています。 また、アップグレードの際の注意点も載せてあります。

# 1. はじめに

この文書は i386 ハードウェアプラットフォーム用 FreeBSD 5.1-RELEASE のリリースノートです。 これは FreeBSD に最近追加、変更、削除された機能について解説したものであり、 FreeBSD の前のバージョンからのアップグレードについても言及しています。

この FreeBSD 5.1-RELEASE 配布物は release 配布物です。 この配布物はあらゆるミラーの ftp://ftp.FreeBSD.org/ で見つけることができます。 この (もしくは他の) FreeBSD の release 配布物を取得する方法 は FreeBSD ハンドブック の 付録 ``FreeBSD を取得する'' を参照してください。

FreeBSD release の 5-CURRENT 系列をはじめて利用するユーザは、まず ``FreeBSD 5.1-RELEASE 初期利用者の手引き'' をご覧ください。 この文書は (FreeBSD 配布ファイルの一部として、 もしくは FreeBSD ウェブサイト上の) リリースノートと同じ場所に置かれており、 FreeBSD 4-STABLE 開発ブランチをベースにしたリリースと比較して、 FreeBSD 5.1-RELEASE を利用する際の利点と欠点について重要な情報が書かれています。

FreeBSD をインストールする前に、必ずそのリリースの errata 文書をお読みください。 errata 文書には、リリース工程の最後やリリース後に判明した ``最新の'' 情報が書かれています。 通常これに含まれているのは、既知のバグ、セキュリティ勧告、 文書の訂正です。FreeBSD 5.1-RELEASE の最新版 errata 文書は、FreeBSD ウェブサイトから入手できます。

# 2. 更新情報

この節では 5.0-RELEASE 以降に新たに追加・変更された ユーザに影響する機能について説明します。 これには他のブランチ (FreeBSD 5.0-RELEASE 以降) へと 最近マージされた機能に加えて、5-CURRENT ブランチ に固有の項目も含まれます。

リリースノートには、 5.0-RELEASE 以降に出されたセキュリティ勧告、 新しいドライバやハードウェア対応、 新しいコマンドやオプション、重要なバグフィックスや寄贈ソフトウェア のアップグレード、 ports/packages やリリースエンジニアリング工程に関する大きな変更点が 書かれています。リリースノートには、リリース間に加えられた FreeBSD の全変更点が書かれているわけではありません。 記載されている情報は、セキュリティ勧告、ユーザに影響のある変更、 既存の構造に対する大きな改良点が中心としたものです。

FreeBSD に加えられた変更点のうち、 スペースの都合上ここに書かれていないものも多数存在します。 それらはたとえば文書の修正や改良、ごく影響の小さいバグの修正、 監査で見つかったセキュリティ上好ましくないスタイルで書かれたコードの修正、 ソースコードの整理などです。

## 2.1. セキュリティ勧告

バージョン 1.11.5 の統合により、CVS にあったリモートから悪用可能なセキュリティ上の弱点が修正されました。 問題の詳細は、セキュリティ勧告 FreeBSD-SA-03:01 をご覧ください。 [MFC 済]

OpenSSL がバージョン 0.9.7 にアップグレードされました。これには、 攻撃者がある条件下で平文にアクセスできる、 OpenSSL へのタイミングベース攻撃への対策が含まれています。 問題の詳細は、セキュリティ勧告 FreeBSD-SA-03:02 をご覧ください。 [MFC 済]

攻撃者からの詐称された TCP 接続を防止できるよう、 ``syncookies'' 機能のセキュリティと性能が改良されました。 問題の詳細は、セキュリティ勧告 FreeBSD-SA-03:03 をご覧ください。 [MFC 済]

sendmail にあった リモートから悪用可能なバッファオーバフロー問題が修正されました。 問題の詳細は、セキュリティ勧告 FreeBSD-SA-03:04 および FreeBSD-SA-03:07 をご覧ください。 [MFC 済]

XDR 実装にあった、リモートからのサービス妨害攻撃が可能になるような 境界チェックのバグが修正されました。 問題の詳細は、セキュリティ勧告 FreeBSD-SA-03:05 をご覧ください。 [MFC 済]

最近公開された OpenSSL の 2 種類のセキュリティ上の弱点が修正されました。 問題の詳細は、セキュリティ勧告 FreeBSD-SA-03:06 をご覧ください。 [MFC 済]

## 2.2. カーネルの変更点

devfs(5) がオプション機能ではなく、必須になりました。 `NODEVFS` オプションは、 指定可能なカーネル設定オプションから削除されています。

ehci(4) ドライバが追加されました。 これは USB 2.0 コントローラで使われている USB Enhanced Host Controller Interface に対応しています。

`/dev/tty` の許可属性の取り扱いにあった、小さなバグが修正されました。 これにより、 su(1) の実行後も ssh(1) が使用できるようになっています。

fstat(2) が、TCP ソケットから読み込めるバイト数として `0` を返してしまうバグが修正されました。

kqueue(2) が、TCP ソケットから読み込めるバイト数として `0` を返してしまうバグが修正されました。 また、`EVFILT_READ` の `NOTE_LOWAT` フラグも修正されています。

Linux エミュレーションモードが IPv6 に対応しました。

madvise(2) が、新しく `MADV_PROTECT` という動作に対応しました。 これは、そのプロセスは非常に重要なもので、 スワップ空間が枯渇してしまった時でも kill してはいけない、ということを仮想メモリシステムに伝えるものです。 その時のプロセスは、スーパユーザが所有するものである必要があります。

(X-10 ホームコントロール製品で使われている) TW-523 電源インタフェース用の tw ドライバが削除されました。 これは現在動作しておらず、5-CURRENT で動作させるには大幅な変更が必要です。 xten および xtend という、 ユーザランドの制御プログラムも削除されています。

SMP における性能向上が期待できる、 新しい汎用のプロセススケジューラがスケジューラフレームワークに追加されました。 カーネルコンフィグファイルには、スケジューラをどれか一つだけ指定する必要があります。 従来のスケジューラを使う場合は `options SCHED_4BSD` を、新しい (まだ試験段階の) スケジューラを使う場合には `options SCHED_ULE` を指定してください。

デバイスのメジャー番号が、デフォルトで動的に割り当てられるようになりました。 この変更により、デバイスドライバに割り当てるメジャー番号のテーブルを、 静的に集中管理する必要性がほとんど (互換性を保つため、従来の静的なメジャー番号のままなっているドライバも二・三残っています) なくなり、デバイスのメジャー番号が足りなくなる可能性も低くなっています。

カーネルスレッド用の簡易的な遅延スイッチ機構が実装されました。 これは、(割り込みハンドラなど) 他のプロセスと関係がない、 細かいコンテキストスイッチによるオーバヘッドを削減するためのものです。 この機能は `options LAZY_SWITCH` を指定すると有効になります。

### 2.2.1. プロセッサ・マザーボードの対応状況

`SMP` カーネルに HyperThreading (HTT) 対応の基礎部分が追加されました。 スケジューラは論理 CPU を、物理 CPU を追加した場合と同じように プロセススケジューリングに使います。 HTT は、資源が足りなくなるいくつかのケースで最善の性能にならないことが あるため、起動時には論理 CPU はデフォルトで停止状態になっています。 有効にするには、`machdep.hlt_logical_cpus` sysctl 変数を使います。また、`machdep.hlt_cpus` sysctl 変数を使うと、アイドルループを使って CPU を停止状態にすることも可能です。 詳しくは smp(4) のマニュアルページをご覧ください。

> Note: 初期の 5.0-CURRENT スナップショットや 4.8-RELEASE などの バージョンの FreeBSD は、HyperThreading 機能を有効にするために カーネルコンフィグ時に `options HTT` を指定していました。現在は、このオプションを指定する必要は なくなっています。

Intel Pentium Pro 以降に搭載されている Physical Address Extensions (PAE) 機能に対応しました。 これは、一つのマシン上で最大 64GB の RAM を使用することが できるようになる機能ですが、一つのプロセス (と FreeBSD カーネル) が使えるメモリ量は従来のままです。 詳しくは、 pae(4) のマニュアルページをご覧ください。 この機能の作業は、DARPA および Network Associates Laboratories の支援を受けて行なわれました。

vpd(4) ドライバが新しく追加されました。 これは IBM ThinkPad シリーズの Vital Product Data 構造体からハードウェア情報を読み出すためのものです。

### 2.2.2. ブートローダの変更

i386 アーキテクチャ用ブートローダのうちの (`boot1` および `boot2`) が `boot` という一つのファイルに統合されました。 これは、 ブートローダを操作したり書き込むプログラムの構造を単純化するための変更です。

(以前、FreeBSD 4.`X` のモジュールが置かれるデフォルトのディレクトリだった) `/modules` ディレクトリが、 デフォルトで `kern.module_path` に含まれなくなりました。 サードパーティ製のモジュールは、 `/boot/modules` に置かれなければならなくなっています。

> Note: FreeBSD 4.`X` 用に設計されたモジュールはパニックを引き起こしやすいため、 利用する場合は十分注意してください。

コードサイズの制限から、 i386 ブートローダから読むことのできるカーネルは 1.5TB 以下のルートファイルシステムにあるものだけになっています。

### 2.2.3. ネットワークインターフェイスの対応状況

axe(4) ネットワークドライバが新しく追加されました。 これは ASIX Electronics AX88172 USB 2.0 チップセットをベースにした USB Ethernet アダプタに対応しています。

cm ドライバが IPX に対応しました。 [MFC 済]

rue(4) ネットワークドライバが追加されました。 これは RealTek RTL8150 USB to Fast Ethernet コントローラチップをベースにした Ethernet アダプタに対応しています。

sbsh(4) ドライバが追加されました。 これは Granch SBNI16 SHDSL モデムに対応しています。 [MFC 済]

802.11 リンク層に対応した wlan モジュールが新しく追加されました。 現在、 wi(4) ドライバ、 an(4) ドライバがこの機能を利用しています。

インタフェースの設定時にカーネルパニック (や他の問題) を引き起こす可能性があった、 xl(4) ドライバのタイミングバグが修正されました。

### 2.2.4. ネットワークプロトコル

ipfw(4) の `skipto` ルールと `log` キーワードが、 以前のように同時に使えるようになりました。 また、 ipfw(4) の `uid` ルールも動作するようになっています。

同一のカーネルで `FAST_IPSEC` と `INET6` を同時に指定して構築することができるようになりました (ただし、両方の機能を同時に使用することはまだできません)。

NewReno を有効にしていると高速リカバリが途中で終了してしまうという、 TCP NewReno のバグが修正されました。 [MFC 済]

TCP が、RFC 3042 で提案されている ``Limited Transmit'' 機構に対応しました。 この機能は、ある特定の条件下における TCP ロスのリカバリ効率を向上させることを目的としたものです。 `net.inet.tcp.rfc3042` sysctl 変数で有効にすることができ、 デフォルトでは無効になっています。 詳細については、 tcp(4) をご覧ください。

TCP が、RFC 3390 に記載されている、 より大きな初期輻輳ウィンドウサイズに対応するように変更されました。 この機能は、短いデータ転送や、広帯域で転送遅延量の大きい接続における スループットを向上させる効果があります。 `net.inet.tcp.rfc3390` sysctl 変数で有効にすることができ、 デフォルトでは無効になっています。 詳細については、 tcp(4) をご覧ください。

IP フラグメントの再組み立てコードが大量のフラグメントパケットを 受け取った時の動作が、より洗練されたものになりました (これは、フラグメントパケットを利用したサービス妨害攻撃への 耐性を高めるための変更です)。 [MFC 済]

`TIME_WAIT` 状態の TCP 接続が、 完全な TCP プロトコル制御ブロック (PCB) ではなく、 より容量の小さい特別な PCB を使うように変更されました。 これにより、`TIME_WAIT` 状態が使う構造体やリソースを、 従来よりも早く解放することが可能になっています。

``特権ポート (privileged ports)'' ( bind(2) するのにスーパユーザ権限が必要な TCP と UDP のポート番号) の範囲が設定できるようになりました。 設定には、 `net.inet.ip.portrange.reservedlow` および `net.inet.ip.portrange.reservedhigh` sysctl 変数を使います。デフォルトは、伝統的な UNIX と同じになっています。 この機能は、スーパユーザ権限を持たないネットワークサーバが、 従来特権が必要だったポートに bind できるようにする目的で追加されました。 詳細は ip(4) をご覧ください。

非ブロッキング RPC コードにあったいくつかのバグが修正されました。 これにより、 amd(8) を使って 5.1-RELEASE のサーバからマウントすることができるようになっています。

7 年間正常に動作していなかった XNS ネットワーク対応が削除されました。

### 2.2.5. ディスク・記憶装置

aac(4) ドライバが、ジャイアントカーネルロックなしに 動作するようになりました。この変更により、SMP システム上の 複数の高負荷 I/O において、速度性能がおよそ 20% 向上しています。

ata(4) ドライバが、現在知られている SiS チップセットすべてに対応しました (詳細はハードウェアノートをご覧ください)。

ata(4) ドライバが Promise SATA150、TX2、TX4 Serial ATA/150 コントローラに対応しました。

ata(4) ドライバがシャットダウン時に デバイスをフラッシュするようになりました。 コンソールにフラッシュに対応していないデバイスから、 フラッシュに失敗したというメッセージが表示されるかも知れませんが、 それはこの変更によるものです。

CAM レイヤが 232 個以上のブロックを持つデバイスに対応しました (1 ブロック 512 バイトとすると、これは 2TB より大きいデバイスに対応したことに相当します)。

> Note: この変更前後でアップグレードする場合は、 pass(4) もしくは xpt(4) デバイスを利用するユーザランドアプリケーションをすべて 再構築しなければならないことに注意してください。 たとえば、ベースシステムに含まれる camcontrol(8)、 port に含まれる `sysutils/cdrtools` や `multimedia/xmms` がそれらに該当します。

cd(4) に数多くの変更が加えられました。 ユーザに影響がある主なものとして、 ATAPI/USB/Firewire CDROM ドライブとの互換性向上があります。

geom(4) がオプション機能ではなく、必須になりました。 `NO_GEOM` オプションは、 指定可能なカーネル設定オプションから削除されています。

iir(4) ドライバが更新されました。 この更新で、インストール時にディスクの検出ができないという問題が解決しています。

IBM (現在は Adaptec) の ServeRAID シリーズに対応した ips ドライバが追加されました。

mly(4) ドライバにあった、 ハングアップするバグが修正されました。

UFS および UFS2 ファイルシステムが、 ボリュームラベルに対応しました。ボリュームラベルは、 ボリュームを同定するために使われる、 デバイスの種類に依存しない文字列です。 ボリュームラベルは newfs(8) もしくは tunefs(8) に `-L` オプションを指定することで設定することができます。 `GEOM_VOL` モジュールを使うと、 `/dev/vol` 以下に現れるボリュームラベルを使ってボリュームにアクセスすることが可能になります。

vinum(4) ボリュームにルートファイルシステムが置けるようになりました。 詳しくは vinum(4) のマニュアルページをご覧ください。

### 2.2.6. ファイルシステム

新しく `DIRECTIO` カーネルオプションが追加されました。 これはバッファキャッシュを経由せずに直接データを読み込んだり、 ユーザ空間のバッファに直接データを書き込むことを可能にします。 この機能を使うには、ファイル記述子に `O_DIRECT` フラグをセットすることと、 読み出し操作時のオフセット・データ長の両方に、 物理メディアセクタ長の整数倍を指定する必要があります。 [MFC 済]

NETNCP および Netware Filesystem 対応 (nwfs) が、正しく動作するようになりました。

smbfs にあった、アンマウントができない、 もしくはアンマウント時にカーネルパニックが発生するというバグが 修正されました。

### 2.2.7. PCCARD 対応

### 2.2.8. マルチメディアへの対応状況

speaker(4) デバイス用の `atspeaker.ko` モジュールと `pcspeaker.ko` モジュールは、 `speaker.ko` という名前に変わりました。

## 2.3. ユーザランドの変更点

adduser(8) が、シェルの特殊文字を含むパスワードを 正しく処理できるようになりました。

従来のディスクラベルユーティリティに代わって、 bsdlabel(8) ユーティリティが導入されました。 これは従来のものと同様、ディスクパーティションにある BSD ラベルのインストールや表示、変更を行なったり、 ブートストラップコードのインストールを行なうことができます。 disklabel ユーティリティと比べて、使われなくなったオプションや パラメータの多くが削除された点が異なります。 bsdlabel(8) には新しく `-m` オプションが追加されており、指定したマシンアーキテクチャに適したレイアウトを 使用できるようになっています。

adduser(8) に、ユーザのデフォルトログイングループを設定する `-g` オプションが追加されました。

`compat4x` 配布物に、FreeBSD 4.7-RELEASE に含まれる `libcrypto.so.2`, `libgmp.so.3`, `libssl.so.2` ライブラリが追加されました。

chgrp(1) および chown(8) は、 `-v` オプションが複数個指定された場合、 所有者/所有グループを変更する時に新旧の uid/gid を表示するようになりました。

config(8) に、 カーネルコンフィグファイルの `device` 指示子の指定を無効にする `nodevice` 指示子が追加されました。 また、`nooption` と `nomakeoption` 指示子も追加されており、 それより前にある `options` および `makeoptions` 指示子をそれぞれ無効にします。

diskinfo(8) ユーティリティが追加されました。 これは、ディスクデバイスの情報の表示と、 ネイティブな性能試験を行なうためのものです。

disklabel ユーティリティが bsdlabel(8) に置き換えられました。 alpha、i386、pc98 プラットフォームでは、disklabel ユーティリティは bsdlabel(8) へのリンクになっています。

dump(8) に、ディスクブロックをキャッシュする `-C` オプションが追加されました。 これは、パスの間のファイルシステム更新を反映しないという欠点がありますが、 ダンプ速度を向上させることが可能です。

dumpfs(8) に、ファイルシステムのパラメータを newfs(8) コマンドの形式で表示する `-m` フラグが追加されました。

elf(5) 実行ファイルフォーマットの情報を表示するユーティリティ elfdump が追加されました。

fetch(1) は fetch(3) の `.netrc` に対応し、さらに、異なる `.netrc` を指定する `-N` オプションが追加されました。

fetch(3) が `.netrc` に対応しました (詳しくは ftp(1) をご覧ください)。

ftpd(8) に、サーバメッセージ中に ftpd(8) のバージョンやホスト名などの固有情報を表示しないようにする `-h` オプションが追加されました。 [MFC 済]

ftpd(8) に、デーモンモードで listen するポート番号を 指定する `-P` が追加されました。 また、デフォルトのデータポート番号は制御ポート番号より 1 少ない値になっており、 特定の固定値は使わなくなりました。 [MFC 済]

ftpd(8) に使われる `/etc/ftpchroot` ファイルの書式が拡張されました。詳しくは、新しく追加された ftpchroot(5) のマニュアルページをご覧ください。 [MFC 済]

ftpd(8) のログインディレクトリのパス名に、 chroot(2) 用のディレクトリと、 chroot 環境でのカレントディレクトリが指定できるようになりました。 指定には、他の FTP デーモンでも使われている `/./` というセパレータを使います。 これは ftpchroot(5) と passwd(5) の両方で指定可能です。 [MFC 済]

fwcontrol(8) に、DV ストリームの送受信用オプション `-R` および `-S` が追加されました。 [MFC 済]

gstat(8) ユーティリティが追加されました。 これは、 geom(4) サブシステムにおけるディスクの稼働状態を表示するものです。

ipfw(8) に、(ファイアウォール機能そのものの有効化・無効化を含む) ipfw(4) におけるさまざまな制御を実現するため、 `enable` コマンド、 `disable` コマンドが追加されました。 これらは、従来の sysctl 変数よりもわかりやすく、 便利な操作手段を提供します。[MFC 済]

jail(8) に、新しく `-i` フラグが追加されました。 これは、新しく作成した jail の識別子を出力します。

既存の jail の中でコマンドを実行する、 jexec(8) ユーティリティが追加されました。

既存の jail を一覧表示する jls(8) ユーティリティが追加されました。

kenv(1) が、ルートファイルシステムのみがマウントされた状態で システムが起動している場合にも利用できるよう、 `/usr/bin` から `/bin` に移されました。

killall(1) に新しく `-j` オプションが追加されました。 これは、ひとつの jail にあるすべてのプロセスを kill します。

ユーザランドから geom(4) サブシステムの一部へのアクセスを提供する libgeom(3) ライブラリが追加されました。

mac_portacl MAC ポリシモジュールが追加されました。 これはユーザとグループに、TCP ポート、UDP ポートへの bind を許可するという単純な ACL 機構です。 最近追加された `net.inet.ip.portrange.reservedhigh` sysctl 変数と組み合わせて使うことを想定しています。

devfs(5) が必須となったため、 必要がなくなった `MAKEDEV` スクリプトは削除されました。

mergemaster(8) に、置き換えられたファイルの内容を保存する `-P` オプションが追加されました。

mixer(8) に、相対値を使ったボリューム調整が実装されました。

FFS スナップショットの作成を簡単に行なうための mksnap_ffs(8) プログラムが追加されました。 これは `operator` グループ に所属するユーザから利用することを想定した SUID-`root` 実行ファイルです。

mount(8) および umount(8) に、 標準の場所にない fstab(5) を指定するための `-F` オプションが追加されました。

mount_nfs(8) に、UDP マウントポイントに対して connect(2) を行なわないようにする `-c` フラグが追加されました。このオプションは、サーバが 標準の NFS ポート番号である 2049 からの要求に応答しない、 あるいはその要求に対してサーバが異なる IP アドレスを 使って応答する (サーバがマルチホーム構成の場合など) 時に使います。 `vfs.nfs.nfs_ip_paranoia` sysctl 変数を `0` にすると、このオプションがデフォルト動作になります。 [MFC 済]

mount_nfs(8) に、`noinet4` と `noinet6` マウントオプションが追加されました。 これは、それぞれ IPv4 と IPv6 による NFS マウントを禁止します。

newfs(8) は、`-O1` オプションを使って UFS1 が指定されていない限り、デフォルトで UFS2 ファイルシステムを作成するようになりました。

newsyslog(8) に、多くの新機能が追加されました。

- エントリの圧縮処理の開始前に、 前回開始した圧縮処理を強制終了させる `W` フラグ (エントリのグループの場合は `G` フラグ) が追加されました。 この機能は、大きいファイルを同時に圧縮する処理でシステムが過負荷に なるのを避けるためのものです。 [MFC 済]

- ローテーションを指定し、 設定ファイルに何も指定しなかった場合に使われる ``デフォルトのローテート動作'' が指定できるようになりました。 [MFC 済]

- ファイルをローテートする時にシグナルを送らないようにする `-s` コマンドラインフラグが追加されました。 [MFC 済]

- ファイルをローテートする時に、シグナルを送る必要がないことを示す `N` 設定ファイルフラグが追加されました。 [MFC 済]

- ファイルをローテートする時に、(プロセス単体ではなく) プロセスグループにシグナルを送ることを指定する `U` 設定ファイルフラグが追加されました。 [MFC 済]

nsdispatch(3) はスレッドセーフになり、 Name Service Switch (NSS) モジュールに対応しました。 NSS モジュールは `libc` に静的に構築したり、 dlopen(3) で動的にロードすることが可能です。 ロード・初期化は設定時 ( nsdispatch(3) が呼ばれ、 nsswitch.conf(5) の読み込み/再読み込みが行なわれた時) に行なわれます。

新たに pam_chroot(8) モジュールが追加されました。 これはユーザに対して、あらかじめ決まったディレクトリか、 ホームディレクトリの下にあるディレクトリのいずれかに chroot(2) 操作を行なうためのものです。

pam_ssh(8) が書き換えられました。 その影響で、各セションは最初のセションで実行されたエージェントに接続しようとするのではなく、 各セションに対して個別に ssh-agent(1) が実行されるようになっています。

ping(8) に、送出パケットの ``Don't Fragment'' ビットをセットする `-D` フラグが追加されました。

ping(8) に、ICMP echo 要求の代わりに、 ICMP マスク要求メッセージやタイムスタンプ要求メッセージを使う `-M` オプションが追加されました。

ping(8) に、送出パケットの Type of Service ビットをセットする `-z` フラグが追加されました。

pw(8) が、`$` 文字で終わるユーザの追加に対応しました。 これは、主に Samba サービスの管理を容易にするための変更です。[MFC 済]

pwd_mkdb(8) で生成される `/etc/pwd.db` および `/etc/spwd.db` パスワードデータベースの構造が、 バイトオーダに依存しない形に変更されました。 前処理されたこれらのパスワードデータベースは、 異なるアーキテクチャ間で移動させて利用することが可能になっています。 古いバイナリとの互換性を保つため、 ファイルのエントリにはバージョン番号が含まれています。

rand(3) の、乱数列が `0` になってしまう可能性があったバグが修正されました (ただし rand(3) は、依然として実用的な用途には適していません)。

rtld(1) が新しく、 共有オブジェクト依存関係の動的マッピングに対応しました。 このオプション機能は特に、 複数の異なるスレッドライブラリを使って実験する時に便利です。 ただし、デフォルトでは構築されません。 詳しくは libmap.conf(5) をご覧ください。 これはオプション機能のひとつで、デフォルトでは無効になっています。

sem_open(3) が、 同じセマフォの複数回オープンを正しく処理できるようになりました。 これにより、 sem_close(3) で呼び出し元のプログラムがクラッシュすることはなくなっています。

srandom(3) の乱数シードアルゴリズムが、 より強いものになりました。

sysinstall(8) は、 ディスクラベルエディタにおいて手動で指定されなかった場合、 新しく作成するファイルシステムのデフォルトレイアウトとして、 UFS2 を選択するようになりました。

> Note: i386 ブートローダの制限のため、ルートファイルシステムは 1.5TB 以下の大きさでなければなりません。

デバイス上のページングとスワップ処理を無効にする swapoff(8) コマンドが追加されました。 関連するコマンド swapctl(8) も、他の BSD にあるような swapon(8) と swapoff(8) へのインタフェースに対応しました。

> Note: swapoff(8) 機能は実験的なものと考えられています。

syslogd(8) は、 syslog.conf(5) ファイル中でホストやプログラムを指定する部分に、 複数のホストやプログラムを指定できるようになりました。

systat(1) に、新しく `-ifstat` ディスプレイモードが追加されました。 これは、システム上の有効かインタフェースを通過するネットワークトラフィックを表示します。

usbhidaction(1) コマンドが追加されました。 これは、USB HID 制御に応じて、設定された動作を行なうためのものです。

uudecode(1) と b64decode(1) に、 先頭フレーム行、もしくは最終フレーム行が欠けた、 壊れたファイルをデコードするための `-r` フラグが追加されました。 [MFC 済]

vmstat(8) で fork 操作の統計を表示する `-f` フラグが再実装されました。

xargs(1) に、ユーティリティを複数並列に実行する `-P` オプションが追加されました。

xargs(1) に、コマンド実行前に子プロセス用に `/dev/tty` を再オープンする `-o` フラグが追加されました。 これは、子プロセスが対話的なアプリケーションの場合に有用です。

KSE を使って POSIX スレッド機能を提供する `libkse` ライブラリがデフォルトでインストールされ、有効化されるようになりました。 このライブラリは現在 M:N スレッド機能に対応しています。 プロセススコープ、システムスコープスレッドの両方を使うことができ、 並列レベルの取得・設定が可能です。 デフォルトでは、並列レベルがシステムの CPU 数に設定されます。 各並列レベルは 1 個の KSE と関連づけられおり、 すべてのプロセススコープスレッドはこれらの KSE の中で動作します。 システムスコープスレッドは、並列レベルに対応する独立した KSE を取得します。 `libkse` はまだ作業中のものであり、 デフォルトでは使われませんが、プログラムをリンクする時に `-pthread` ではなく `-lkse` を指定することで、 `libc_r` の代替品として使うことが可能です。

1:1 スレッドパッケージ (ひとつのアプリケーションにある すべての pthread に対して、ひとつの KSE とスレッドが対応するというもの) が実装されました。 このモデルでは、カーネルがすべてのスレッドスケジューリングを決定し、 すべてのシグナルを配送します。KSE コードのいくつかの部分を使っており、 作業中の M:N スレッドの限定されたものだと考えてよいでしょう。 `libthr` ライブラリは、 この機能のユーザランド部分として実装されたもので、 `libc_r` ライブラリの代替として使うことができます。 ただし、`libthr` は (現時点では) デフォルトで構築されません。

従来から BSD で使われてきた `/etc` にある起動スクリプトが削除され、 NetBSD から移植された `rc.d` システムに置き換えられました (これは ``rcNG'' とも呼ばれています)。 従来あった機能はすべてそのまま残っており、特に `/etc/rc.conf` などのファイル群は、 今後も標準のシステムの起動設定手段として継続して使われます。 `rc.d` システムは FreeBSD 5.0-RELEASE よりデフォルトになっていたため、この変更は、 ほとんどのユーザにとって意識しなければならないものではないでしょう。 `/etc` にあった以下のファイルは削除されましたので、 従来のスタイルのスタートアップスクリプトをカスタマイズしているユーザは 注意してください。 `rc.atm`, `rc.devfs`, `rc.diskless1`, `rc.diskless2`, `rc.i386`, `rc.alpha`, `rc.amd64`, `rc.ia64`, `rc.sparc64`, `rc.isdn`, `rc.network`, `rc.network6`, `rc.pccard`, `rc.serial`, `rc.syscons`, `rc.sysctl`. mergemaster(8), を実行すると、 これらのファイルを異なる場所に移動するかどうか尋ねられます。 詳しくは、 rc.subr(8) をご覧ください。

## 2.4. 寄贈ソフトウェア

ACPI-CA コードが、 20021118 スナップショットから 20030228 スナップショットに更新されました。

Bell Labs 由来の awk が 2003 年 3 月 14 日時点のスナップショットが統合されました。

BIND がバージョン 8.3.4 に更新されました。 [MFC 済]

ベースシステムに bzip2 スイート全体、特に `bzip2recover` がインストールされるようになりました。[MFC 済]

CVS がバージョン 1.11.5 に更新されました。 [MFC 済]

The DRM kernel modules have been updated to a snapshot from the DRI CVS repository, as of 24 April 2003. The `DRM_LINUX` kernel option hsa been removed because the handler is now provided by the Linux compatibility code.

DRM カーネルモジュールが、 DRI CVS リポジトリの 2003 年 4 月 24 日時点のスナップショットに更新されました。 必要なハンドラが Linux 互換機能に追加されたため、 `DRM_LINUX` カーネルオプションは削除されました。

FILE がバージョン 3.41 に更新されました。 [MFC 済]

GCC が 3.2.2 (リリース版) に更新されました。

> Note: GCC は、 `-march=pentium4` オプションを指定すると異常なコードを生成することが判明しています。 この問題を回避するには、 `CPUTYPE=p4` Makefile 変数を (たとえば make.conf(5) などで) 定義して、 GCC の `-march=pentium3` オプションを使ってください。 現在の状況は、将来的に GCC 3.3 を導入することで解決できる見とおしです。

文字列と浮動小数点数を変換する gdtoa ライブラリが統合されました。 ソースは 2003 年 3 月 24 日付けのものです。

groff (および関連ユーティリティ) が、 バージョン 1.18.1 からバージョン 1.19 に更新されました。

IPFilter がバージョン 3.4.31 に更新されました。 [MFC 済]

ISC DHCP クライアントがバージョン 3.0.1RC11 に更新されました。 [MFC 済]

ISC DHCP クライアントには、新しく omshell(1) ユーティリティと dhcpctl(3) ライブラリが含まれるようになりました。 これらは、クライアント実行時の制御を行なうためのものです。

Kerberos IV 対応 (KTH eBones) が削除されました。 この機能を必要としているユーザは、 `security/krb4` の port (もしくは package) から入手することができます。 Kerberos 5 の Kerberos IV 互換モードも削除され、 `k5`プログラム名`` というユーザランドユーティリティは、 `k`プログラム名`` という名前に変更されています。

Kerberos 5 が `buildworld` の過程で、 デフォルトで構築されるようになりました。 現在、`MAKE_KERBEROS5` 変数は使われなくなっており、 ベースシステムの Kerberos 5 を無効にするには、 `NO_KERBEROS` Makefile 変数を定義する必要があります。

libpcap が、 同一のインタフェース上での複数のデータリンクタイプの選択に対応しました。

lukemftpd (デフォルトでは構築・インストールされません) が、2003 年 1 月 22 日のスナップショットに更新されました。

OpenPAM がリリース ``Citronella'' からリリース ``Dianthus'' に更新されました。

OpenSSH がバージョン 3.6.1p1 に更新されました。

OpenSSL がリリース 0.9.7a に更新されました。 このリリースには、AES と crypto(4) デバイス対応が含まれています。

sendmail がバージョン 8.12.9 に更新されました。 [MFC 済]

tcpdump(1) がバージョン 3.7.2 に更新されました。[MFC 済] また、インタフェースで利用可能なデータリンクタイプを一覧表示する `-L` フラグと、 パケットキャプチャ中にどのデータリンクタイプを使うのかを指定する `-y` オプションが追加されました。

texinfo がバージョン 4.2 から 4.5 に更新されました。

timezone データベースが `tzdata2002d` から `tzdata2003a` に更新されました。 [MFC 済]

## 2.5. Ports/Packages Collection インフラストラクチャ

1 行の `pkg-comment` ファイルが、 各 port スケルトンから削除され、その内容が `Makefile` の中に移動しました。 この変更により、 ports ツリーで消費するディスク容量と inode 数が少なくなっています。 [MFC 済]

port 構築における配布ファイルの取得で MD5 チェックサムが一致しなかった場合に、 何回再取得を試みるかを `FETCH_REGET` `Makefile` 変数に指定できるようになりました。 また、取得途中で止めたファイルの再取得にも対応しています。

pkg_create(1) に、それと衝突する package のリストを登録する `-C` オプションが追加されました。 このリストにある package がすでに存在している場合、 ( pkg_add(1) での) インストールは失敗します。 この衝突チェックは、 pkg_add(1) に `-f` フラグを追加することで無効にすることが可能です。

pkg_info(1) は、`-b` フラグの表示の際に `BLOCKSIZE` 環境変数の設定に従うようになりました。

pkg_info(1) に、 `-q` ``quiet'' オプションの動作に加えて、 最初に package 名を表示するという動作を行なう `-Q` オプションが追加されました。

## 2.6. リリースエンジニアリングと統合

FreeBSD が公式に対応している GNOME のリリースが、バージョン 2.2.1 に更新されました。 [MFC 済]

FreeBSD が公式に対応している KDE のリリースが、バージョン 3.1.2 に更新されました。 [MFC 済]

個別の `krb5` 配布物が廃止されました。 Kerberos 5 ライブラリとユーティリティは、 `crypto` 配布物に含まれるようになっています。

sysinstall(8) が、XFree86 の 個々のコンポーネントのインストールに再度対応しました。 この変更により、(ユーザが意識することはありませんが) 配布物のインストールを package として行なうための汎用の仕組みが組み込まれました。

FreeBSD が公式に対応している XFree86 のリリースが、バージョン 4.3.0 に更新されました。 [MFC 済]

FreeBSD 2.`X` から 3.`X`、 FreeBSD 3.`X` から 4.`X` というメジャーバージョン間のアップグレードを行なう機能が削除されました。

## 2.7. ドキュメンテーション

文書セットに ``FreeBSD From Scratch'' と ``The Roadmap for 5-STABLE'' という記事が追加されました。

新しくデンマーク語 (`da_DK.ISO8859-1`) 翻訳プロジェクトが発足しました。

# 3. 前のリリースの FreeBSD からのアップグレード

現存する FreeBSD システムからアップグレードするユーザは ``FreeBSD 5.1-RELEASE 初期利用者のための手引き'' を読むことを 強く 推奨します。 この文書は、通常 `EARLY.TXT` という名前で 配布物に収録されており、 また、他のリリースノートが置かれているところにも一緒に置かれています。 この手引にはアップグレード時に注意を払うべき点に加え、 さらに重要な情報として、 FreeBSD 4.`X` システムを使い続ける場合と FreeBSD 5.`X` へのアップグレードした場合の、 それぞれの利点についてのまとめが書かれています。

> Important: FreeBSD のアップグレードは、もちろん、 すべての データと設定ファイルを バックアップしてからのみ行うべきです。

このファイルの他、リリース関連の文書は ftp://ftp.FreeBSD.org/ からダウンロードできます。

FreeBSD に関するお問い合わせは、<questions@FreeBSD.org> へ質問を投稿する前に解説文書をお読みください。

FreeBSD 5-CURRENT をお使いの方は、ぜひ <current@FreeBSD.org> メーリングリストに参加ください。

この文書の原文に関するお問い合わせは <doc@FreeBSD.org> まで、
日本語訳に関するお問い合わせは、<doc-jp@jp.FreeBSD.org> まで電子メールでお願いします。