# FreeBSD/alpha 5.0-RELEASE Release Notes

### FreeBSD プロジェクト

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

$FreeBSD: src/release/doc/ja_JP.eucJP/relnotes/common/new.sgml,v 1.65.2.3 2003/01/14 17:38:19 hrs Exp $

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

# 1. はじめに

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

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

# 2. 更新情報

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

リリースノート項目の多くは、新しいドライバやハードウェア対応、 新しいコマンドやオプション、重要なバグフィックスや寄贈ソフトウェア のアップグレードなどについてのものです。 4.6-RELEASE 以降に出されたセキュリティ勧告のうち、 リリースに影響するものについても掲載しています。

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

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

acct(2) は、アカウンティングファイルを 追記モードでオープンするように変更されました。 これは accton(8) のアカウンティング機能を、 追記専用ファイルに対して使えるようにするための変更です。[MFC 済]

OpenBSD 由来の新しいカーネル暗号化フレームワークが 統合されました (詳細は crypto(4) と crypto(9) をご覧ください)。 これは、ソフトウェアで実装された暗号アルゴリズムと ハードウェアで実装された暗号アルゴリズムの両方を、 カーネルから共通の方法で利用できるインターフェースを提供し、 ユーザアプリケーションから暗号化ハードウェアへアクセスできるように するためのものです。 ハードウェア用デバイスドライバとして、 hifn ベースのカードに対応した hifn(4) ドライバと Broadcom ベースのカードに対応した ubsec(4) ドライバが 追加されています。[MFC 済]

ddb(4) に新たなコマンド `show pcpu` が追加されました。 これは各 CPU の情報を表示します。

`devctl` デバイスが追加されました。 これにより、ユーザランドプログラムは いつデバイスがデバイスツリー上で用意されて利用可能になるかを 知ることができます。 この機能は主に devd(8) ユーティリティで利用されます。

devfs(5) の大部分が書き直されました。 これは `/dev` ディレクトリ内のエントリを自動的に構築し、 デバイスの接続をより適応的に行なうことを可能にします。 devfs(5) は標準で有効化されていますが、 `NODEVFS` カーネルオプションを使うことで無効化できます。 また、管理者は ``rule'' サブシステムを用いて 新しいデバイスノードがユーザランドからアクセスできるようになる前に、 そのデバイスノードの特性を設定することが可能です。 静的なノード (たとえば `/dev/speaker`)、 動的なノード (`/dev/bpf*` やリムーバブルデバイスの一部) の両方に対応しています。 devfs(5) のマウントは、 各マウントごとに異なるルールセットを設定することができます。 これにより、jail 環境などに対して異なるポリシを適用することが可能です。 ルールとルールセットの操作には、 devfs(8) ユーティリティを使います。

PCI Xr ベースのカード、ISA Xem Digiboard カードに対応した digi ドライバが新たに追加されました。 新たに追加された digictl(8) プログラムは (主に) PC/Xem のような外部ポートモジュールを持つカードを 再初期化するためのものです。digi ドライバの追加にともない、 古い dgm ドライバは削除されました。

eaccess(2) システムコールが追加されました。 access(2) と似ていますが、後者は実権限を使うのに対して、 前者は実効権限を使います。

各 jail(2) 環境は各々の securelevel で動作することがで きるようになりました。

jail(2) 用の設定可能な sysctl 変数 が `jail.*` から `security.*` へと移動しました。 他のセキュリティ関連の sysctl 変数は `kern.security.*` から `security.*` へと移動しました。

カーネル環境変数が kenv(2) システムコールを使って 動的に変更することができるようになりました。

labpc(4) ドライバは古くなったため削除されました。

ローダとカーネルリンカは、 KLD のある各ディレクトリに存在する `linker.hints` というファイルから モジュール名およびバージョンと KLD ファイル名の対応を調べるようになりました。 新しく追加されたユーティリティ kldxref(8) は、 これらのファイルを生成するために使用します。

Low-Watermark Mandatory Access Control 用 セキュリティ機構 lomac(4) がカーネルモジュールとして 追加されました。 これは管理者からの追加の設定を必要としない、 従来の UID ベースのセキュリティ機構に加えて使うことのできる セキュリティ機構です。 この機能は DARPA と NAI Labs がスポンサーになっています。

FreeBSD に TrustedBSD の MAC (Mandatory Access Control, 強制アクセス制御) フレームワークが追加されました。 これはシステムのセキュリティポリシの機能性を向上させるもので、 カーネルのコンパイル時、システム起動時、システム実行中のいつでも ロード・リンク可能なカーネルモジュールとして実装されています。 TrustedBSD MAC はさまざまなイベントに対応するモジュールと、 ラベル領域のように共通して利用できるセキュリティポリシサービスを提供します。 今回のリリースには、固定およびフローティングラベルの Biba 完全性モデルや区画付きマルチレベルセキュリティ (MLS) に加え、 ファイルシステムファイアウォールなどの数多くの改良型 UNIX セキュリティモデルを実現するためのポリシモジュールのサンプルが 数多く収録されています。 この機能は、ローカルおよびベンダの セキュリティ拡張の開発や保守を容易にするものです。 この拡張サービスは、カーネルコンフィグファイルに `options MAC` を追加することにより有効にできます。

> Note: MAC フレームワークは、 今回のリリースにおいて実験的な機能の一つと考えられています。 デフォルトでは有効にされていません。

mutex(9) にプロファイルのためのコードが追加されました。 これはカーネルコンフィグファイルに `MUTEX_PROFILING` を加えることにより有効になり、sysctl 変数 `debug.mutex.prof.*` の設定が有効になります。

カーネルオプション `P1003_1B` が すでに使われなくなっているために削除されました。

random(4) デバイスが Yarrow アルゴリズムを使うように書き直されました。 このアルゴリズムはコンソールデバイス、 イーサネット、PPP ネットワークインターフェイス、 大容量記憶デバイスといった、 さまざまな割り込み要因からエントロピを収集します。 random(4) デバイスから得られるエントロピは シャットダウン時刻実行時だけでなく、 定期的に `/var/db/entropy` に保存されるようになっています。 また `/dev/random` のセマンティクスが変更され、 エントロピが生成する前でブロックするのではなく、 疑似乱数データストリームを生成するようになりました。 これは `/dev/urandom` と完全に同じ動作です。

カーネルオプション `options REGRESSION` が新たに追加されました。これは動作検証やレグレションテスト時に有用な インターフェイスや機能を提供します。

`RLIMIT_VMEM` 機能が追加されました。 これは、あるプロセスに対して、 mmap(2) 空間を含む、全仮想メモリ空間の大きさに制限を設けるものです。 制限は login.conf(5) に追加された `vmemoryuse` 変数によって設定することができます。 [MFC 済]

sendfile(2) システムコールにおいて、 送信ファイルサイズの計算でヘッダサイズを 正しく含めていなかったというバグが修正されました。[MFC 済]

syscons(4) ドライバがキーボード操作によるペーストに対応しました。 標準では Shift-Insert に設定されています。

USB オーディオデバイス用の uaudio ドライバが追加されました。[MFC 済]

USB モデムや USB シリアルデバイスなどを tty のように見えるようにする ucom(4) ドライバが追加されました。 また、 uftdi(4)、 uplcom(4)、 uvscom(4) ドライバはそれぞれ、FTDI シリアルアダプタ、 Prolific PL-2303 シリアルアダプタ、SUNTAC Slipper U VS-10U に対応しています。 [MFC 済]

セキュリティを向上させるため、`UCONSOLE` カーネル設定オプションが削除されました。

`USER_LDT` カーネルオプションが標準設定で有効化されるようになりました。

Handspring Visors を USB 経由で接続できるようにするための uvisor(4) ドライバが追加されました。[MFC 済]

VESA S3 リニアフレームバッファドライバが追加されました。

カーネルのクラッシュダンプ機構が、 新しいプラットフォームへの対応、 コードのロジックの整頓を受けて改良されました。 この改良の成果の一つとして、 カーネルダンプのディスク上のフォーマットが変更され、 バイトオーダ依存性がなくなりました。

極めて大きいスワップ領域 (67 GB 以上) でも、システムがパニックしなくなりました。

Linux 互換機能が thread に対応しました。

リンカセット (訳注: ELF カーネル構築時に必要な情報の一つ) を生成する必要がなくなりました。 必要のなくなった gensetdefs(8) は削除されています。

カーネル構築時に config(8) の `ENV` 指示子を用いることで、(調整可能な) カーネル環境変数を設定することができるようになりました。

新しく、idle 時にページをゼロで初期化する機能が追加されました。 これは `vm.idlezero_enable` sysctl 変数を使って有効化できます。

FreeBSD のカーネルスケジューラに KSEs (Kernel-Scheduled Entities) 機能が追加されました。 これは、スケジューラアクティベーションと同様、 1 つのプロセスから複数のスレッドの実行を可能にするものです。 現時点のカーネルは、スレッド対応に必要な変更の多くが施され、 スケジューラは各プロセスで複数のスレッドをスケジュールすることが できるのですが、スレッドを複数の CPU 上で同時に実行することはできません。 詳細は kse(2) をご覧ください。

> Note: KSE は、現在も作業が続けられている機能の一つです。

カーネルは複数の低レベルコンソールデバイスに対応しています。 異なったコンソールを操作するには、新しい conscontrol(8) ユーティリティを使います。

コンソールドライバは TGA ベースのディスプレイ アダプタに対応しました。

カーネルメモリアロケータは Solaris で使われているのと同じように スラブ(slab)メモリアロケータとなりました。 これは CPU の数が増えるに従い線形に近い性能を示す SMP 対応の メモリアロケータです。 また、メモリフラグメンテーションも少なくなります。

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

BSD/OS 5.0 由来のコードが組み入れられ SMP 対応部分が大きく書き直されました。 SMPng (``SMP Next Generation'') の主な特徴の一つに、 マルチプロセッサの利用効率を大きく損なうスピンロックを使わずに カーネル内で複数のプロセスを実行することができる、 ということがあげられます。 また割り込みハンドラは、 割り込みのロックアウトを低減するために それぞれコンテキストを持つようになりました。

API UP1100 マザーボードにおける動作が確認されました。

API CS20 1U high server における動作が確認されました。

AlphaServer 2100A (``Lynx'') に対応しました。

旧世代の Alpha CPU (EV4 および EV5) が 新世代の Alpha CPU の命令をエミュレートできるようにするコードが カーネルに追加されました。 これにより、EV4 および EV5 上で Adobe Acrobat 4 のようなバイナリ配布のみのプログラムが利用できるようになります。

1.44MB フロッピーディスクにインストール用 カーネルを収めるため、ハードウェアへの対応がいくつか削除されました。 削除されたのは Multia、NoName、PC64、EB64、Aspen Alpine、sa (SCSI テープ)、amr、 パラレルポート、vx (3c590、3c595)、pcn (AMD Am79C97x PCI 10/100)、 sf (Adaptec AIC-6915)、sis (SiS 900/SiS 7016)、ste (Sundance ST201 (D-Link DFE-550TX))、wb (Winbond W89C840F) です。

TurboChannel ベースの Alpha マシンでは動作しなくなりました。

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

操作しやすくするため、カーネルとカーネルモジュールは `/boot/kernel` ディレクトリに移動しました。 ブートローダには、 この変更を可能な限り意識しないで済むような更新がなされています。

ブートローダが UFS1 および UFS2 ファイルシステムの両方からカーネルをロードできるようになりました。

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

dc(4) ドライバは、Xircom 3201 と Conexant LANfinity RS7112 チップベースの NIC に対応しました。

ed(4) ドライバに対応しました。

DEC ``Tulip'' PCI Fast Ethernet コントローラベースの LAN Media Corp WAN アダプタに対応した、 lmc ドライバが追加されました。

stf(4) デバイスがクローニングに対応しました。

tx(4) ドライバがマルチキャストフィルタリングに完全対応しました。

ネットワークデバイスが特殊ファイルとして `/dev/net` 以下に 自動的に作成されるようになりました。 これらのデバイスに対しては、(プロトコルやルーティング以外の) インターフェイスハードウェア ioctl が使用できます。 また、`SIOCGIFCONF` ioctl は `/dev/network` 特殊ファイルに対して使用することが可能です。

ネットワークスタックに ``ゼロコピー'' 機能が追加されました。 これはネットワークスループットにおけるボトルネックの主要因の一つである、 カーネルとユーザランド間のデータコピーを抑制します。 送信側のコードはほぼすべてのネットワークアダプタで動作すると思われますが、 受信側のコードは、ネットワークアダプタの MTU が、 メモリページサイズ 1 つ分の大きさ (たとえばギガビットイーサネット上の jumbo フレーム) 以上に設定できる必要があります。 詳細は zero_copy(9) をご覧ください。

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

IPsec 実装でハードウェア暗号化アクセラレータに対応した カーネル crypto(4) フレームワークが使えるようになりました。 有効にするには、`FAST_IPSEC` カーネルオプションを指定します。

> Note: `FAST_IPSEC` オプションと `IPSEC` オプションを同時に指定することはできません。

> Note: 現時点では、`FAST_IPSEC` オプションは IPv6 または `INET6` オプションと共存できません。

gre(4) ドライバが追加されました。 これは IP パケットを GRE (RFC 1701) や minimal IP encapsulation for Mobile IP (RFC 2004) を利用してカプセル化を行います。 [MFC 済]

ICMP ECHO および TSTAMP 応答速度に制限が加えられるようになりました。 open 状態のポート、open 状態にないポートに対して送信されるパケットに よって生成される TCP RST は独立したカウンタを用いて制限されており、 各々異なる種類の速度制限キューとして分けられています。

フォワードされたパケットに対して ICMP Source Quench メッセージを生成しなくなりました。 これは sysctl 変数 `net.inet.ip.sendsourcequench` を使って、従来の動作に戻すことが可能です。

IP マルチキャストが VLAN デバイス上で動作するようになりました。 また、VLAN コードにあったいくつかのバグも修正されています。

ipfw(4) が再実装されました。 (新しいバージョンは ``IPFW2'' と呼ばれています)。 ipfw(4) は、 カーネル内で bpf(4) 命令に似た可変長ルール表現を使っています。 ipfw(8) に、マッチフィールド連結子 `or` が新しく追加されていますが、 ( ipfw(8) に記載されている) 外部に見える部分の動作のほとんどは変更されていません。 [MFC 済]

ng_device(4) netgraph ノードが新たに追加されました。 これは `/dev` に、 ネットワークグラフへのエントリポイントとして利用できる デバイスエントリを作成するものです。

gif(4) で動作する netgraph ノード ng_gif(4) および ng_gif_demux(4) が新しく追加されました。

IP の入力処理を行なうコードに入る前のキューに格納された IP パケットに対応する netgraph ノード ng_ip_input(4) が新しく追加されました。

新しい netgraph ノードタイプ ng_l2tp(4) が追加されました。 これは RFC 2661 に記載されている L2TP プロトコルのカプセル化レイヤを実装したものです。 [MFC 済]

新しく ng_split ノードタイプが追加されました。 これは一つの双方向パケットフローを 二つの単方向パケットフローに分割します。

SLIP が `mfsroot` フロッピイメージから削除されました。

TCP、UDP で使われるエフェメラルポート (ephemeral port) の範囲が 1024-5000 から 49152-65535 に変更されました。 これにより並列に出ていくことのできる接続/ストリームの数が増加します。

tcp(4) プロトコルの再送タイマが `net.inet.tcp.rexmit_min` と `net.inet.tcp.rexmit_slop` の、 2 つの sysctl 変数で操作できるようになりました。 デフォルトは従来の 1 秒から (Linux のデフォルト値と同じ) 200 ミリ秒に減らされています。 これは、対話的な接続における応答遅延の改善や、 無線のようにパケットロスのある高速回線における、 タイムアウトからの復帰時間の短縮をねらったものです。

tcp(4) プロトコルに、 送信側のウィンドウのサイズを動的に制限して、 帯域を最大化し、ラウンドトリップタイムを最小にするための 機能が追加されました。この機能は、 sysctl 変数 `net.inet.tcp.inflight_enable` を使って有効化することが可能です。[MFC 済]

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

ata(4) ドライバ (および burncd(8)) に DVD+RW メディアへの書き込み機能が追加されました。

ata(4) ドライバが、 CAM レイヤと CAM ドライバ ( cd(4), da(4), st(4), pass(4)) を経由して、ATA デバイスを SCSI デバイスとしてアクセスできるようにする機能に対応しました。 この機能を有効にするには、 カーネルコンフィグファイルに `device atapicam` を追加する必要があります。 詳細は atapicam(4) をご覧ください。

ata(4) ドライバが新しく Sil 0680 と VIA 8233/8235 コントローラに対応しました。 [MFC 済]

ata(4) ドライバが新しく Acard ATP850, ATP860, ATP865 コントローラに対応しました。

cd(4) ドライバが、 acd(4) ドライバが CDROM のアクセス速度を設定するのに使用している `CDRIOCREADSPEED`, `CDRIOCWRITESPEED` ioctl に対応しました。

targ(4) ドライバが書き直されました。また、 ダイレクトアクセスデバイスをエミュレートする新しいユーザモードプログラムが `/usr/share/examples/scsi_target` に追加されました。

fdc(4) フロッピーディスクコントローラドライバに 多くの機能強化が行なわれました。一般的な設定における密度の選択は 自動化され、ドライバはさまざまなサブデバイスの密度設定 に柔軟に対応できるようになりました。

geom(4) ディスク I/O 要求変換フレームワークが追加されました。 これは、カーネルの上位からのデバイスドライバに対する I/O 要求に、 さまざまな操作を加えられるように設計された、 拡張可能なフレームワークです。

> Note: GEOM を有効にしたカーネルは ``互換スライス'' に対応していません。 (i386 と pc98 のみが対応していた) この機能は、 (たとえば `/dev/ad0a` のように) ユーザが MBR スライスを指定していない場合に、 カーネルが自動的に先頭にある有効な FreeBSD スライスを探し出して、 そのディスクパーティションにアクセスすることができるというものです。 GEOM が有効になっているカーネル (デフォルトで有効) で MBR スライス中のパーティションを参照するには、 完全なパーティション名 (たとえば `/dev/ad0s1a`) を指定する必要があります。 この変更はごく限られたユーザにしか影響をおよぼさないでしょう。

GEOM ベースのディスク暗号化モジュール (GEOM Based Disk Encryption) が追加されました。 これは、四個の暗号保護層と 最大で四個設定できる変更可能なパスフレーズを利用して、 ``非動作中のディスク (cold disk)'' に対するアクセスを排除します。 より詳細な情報は gbde(4) のマニュアルページをご覧ください。 このモジュールの操作および管理用に、 gbde(8) ユーザランドユーティリティが提供されています。 この機能はデフォルトでは有効にされていません。利用するには カーネルコンフィグファイルに `options GEOM_BDE` を追加してください。

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

isp(4) ドライバはファイバチャネルのトポロジ変更を 積極的に検出するように変更されました。

isp(4) ドライバが Qlogic SCSI カードのターゲットモードに対応しました。 これには Ultra2、Ultra3、デュアルバスカードが含まれます。

メモリディスクデバイス md(4) に vn(4) の機能が統合されました。 md(4) デバイスは mdconfig(8) で設定できるようになり、 vn(4) は削除されています。 また、メモリファイルシステム (MFS) も削除されました。

mpt ドライバが新しく追加されました。 これは、LSI Logic Fusion/MP アーキテクチャ ファイバチャネルコントローラに対応しています。[MFC 済]

NetBSD 由来の RAIDframe ディスクドライバが統合されました。 このドライバは、ソフトウェアによる RAID 0, 1, 4, 5 機能や、 (訳注: 循環スペア RAID 5 やインターリーブデクラスタリングなどの) その他の RAID 機能を提供します。 詳細は raid(4) ドライバのマニュアルページをご覧ください。 raidctl(8) ユーティリティは ディスクアレイの設定や設定解除に利用されます。 この機能はデフォルトでは無効にされており、 有効にするにはカーネルコンフィグファイルに `device raidframe` を追加する必要があります。

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

sa(4) エラー処理にあったいくつかの問題点が修正されました。 これには ``テープドライブが mt(1) `stat` に追随せずにまわってしまう'' という問題も含まれています。

`SCSI_DELAY` 設定パラメータが、 `kern.cam.scsi_delay` sysctl 変数を利用して 起動時および実行時に変更できるようになりました。

Tekram TRM-S1040 SCSI チップセットが搭載された SCSI アダプタに対応する trm ドライバが追加されました。 [MFC 済]

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

FreeBSD カーネルが新たに名前付き拡張属性 (named extended attributes) に対応しました。 これはカーネルおよび高い権限を持つユーザランドプロセスが、 ファイルとディレクトリに 属性情報をタグ付けすることを可能にするものです。 拡張属性は TrustedBSD プロジェクトに対応するために追加されたもので、 特に ACL、ケーパビリティ情報、必須アクセス制御ラベルが含まれています (詳細は `/usr/src/sys/ufs/ufs/README.extattr` 参照)。

FFS にファイルシステムのスナップショット機能が追加されました。 詳細は `/usr/src/sys/ufs/ffs/README.snapshot` にあります。

statfs(2) および df(1) は Soft Updates 利用時に commit されて解放されたファイルとブロック数を記録するようになりました。

kernfs(5) は廃止され、削除されました。

クライアント側における NFS ロックが実装されました。

カーネル内で複雑に混ざりあっていた NFS のコードが、 保守と将来的な開発を容易にするためにクライアント側と サーバ側に分離されました。

ファイルシステムにアクセス制御リスト (ACLs) が導入されました。 ACL はファイルやディレクトリに対して、 より粒度の細かく自由度の高いアクセス制御を可能にするもので、 TrustedBSD プロジェクトから統合されたものです。 詳細は `/usr/src/sys/ufs/ufs/README.acls` をご覧ください。

一貫性を維持するため、 fdesc、fifo、null、msdos、portal、umap、union の各ファイルシステムはそれぞれ fdescfs、fifofs、msdosfs、nullfs、portalfs、umapfs、 unionfs という名前に変更され、 モジュールや mount_* プログラムなども名前が変更されました。 また、 fstab(5) 内にある `msdos` ファイルシステムのエントリが変更なしに動作できるよう、 互換性を維持するための ``措置'' が mount(8) に加えられています。

疑似ファイルシステム pseudofs が新たに追加されました。 linprocfs(5) と procfs(5) は pseudofs を利用するように変更されています。

`/etc/fstab` に記されている ネットワークファイルシステム (NFS や smbfs ファイルシステム など) がスタートアップの初期化時にきちんとマウントされる ようになりました。 これらのマウントはネットワークが初期化された後まで遅延 されます。

UDF (Universal Disk Format) の読みとりに対応しました。 UDF はパケットライトで書かれた CD-RW やほとんどの DVD-Video ディスク製品で使われています。 UDF のディスクをマウントするには mount_udf(8) コマンドを使います。

UFS2 ファイルシステム対応の基本部分が追加されました。 UFS2 の主な新機能は次のとおりです。

- 64-bit プロックポインタに対応するため、 inode が 256 バイトに拡張。

- ファイルの作成時刻のフィールドの追加。

- ネイティブな拡張属性の実装。 これにより、1 つの inode に格納できる属性領域のサイズの最大が、 ファイルシステムのブロックサイズの 2 倍まで拡張されています。 この領域はアクセス制御リスト (ACL) と MAC ラベルでの利用を目的としていますが、 システムの拡張やユーザアプリケーションで 利用することもできます。

UFS2 は newfs(8) にオプションを指定するか、 sysinstall(8) のパーティション設定画面で選択すことができますが、 デフォルトのディスクフォーマットは UFS1 です。 64 ビットのプラットフォームでは、UFS2 ルートファイルシステムから起動することができます。

この節で説明している新機能に対応するため、 UFS1 スーパブロックのフォーマットが少し変更されました。 この変更は、FreeBSD 4.7-RELEASE より古いシステムから、 FreeBSD 5.0-RELEASE かそれ以降のシステムで作成した ローカルの UFS1 ファイルシステムを mount(8) もしくは fsck(8) しようとした場合に、互換性の問題を生じるかもしれません。 FreeBSD 4.7-RELEASE とそれ以降のシステムとは、 完全な互換性があります。これは通常、 複数のバージョンの FreeBSD をインストールしたデュアルブートマシンで問題となります。

### 2.1.7. PCCARD 対応

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

ハードウェア音量制御機能を持つサウンドカード用の新しい API が追加されました。

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

ブートローダで使用されている Forth Inspired Command Language (FICL) が バージョン 3.02 に更新されました。

自動設定および電源管理の規格で業界標準となっている ACPI (Advanced Configuration and Power Interface) に新しく対応しました。 ACPI の機能は Intel ACPI Component Architecture プロジェクトから提供されているもので、 ACPI CA 20021118 スナップショットに更新されています。 旧来の APM 標準を用いるアプリケーション向けの後方互換性 も提供されました。

#### 2.1.9.1. IPFilter

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

#### 2.1.9.3. KAME

## 2.2. セキュリティ関連の修正

不正な NFS パケットによって悪用される可能性がある、 tcpdump(1) のバッファオーバフロー問題が修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:29 をご覧ください。[MFC 済]

高い権限を放棄したプロセスに対して、 ktrace(1) を使った追跡 (trace) 操作ができないようになりました。 これにより、そのプロセスが権限を放棄する前に得たセキュリティ上重要な 情報の漏洩を防ぐことができます。この問題の詳細は、 セキュリティ勧告 FreeBSD-SA-02:30 をご覧ください。[MFC 済]

任意のファイルの許可属性を変更するのに使用可能な、 pppd(8) にあった競合状態が修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:32 をご覧ください。[MFC 済]

ベースシステムの OpenSSL が新しいバージョンにアップグレードされ、 OpenSSL に存在していた複数のバッファオーバフロー問題が修正されました。 この問題の詳細は、 セキュリティ勧告 FreeBSD-SA-02:33 をご覧ください。[MFC 済]

XDR デコーダにあったヒープバッファオーバフローが修正されました。 この問題の詳細は、 セキュリティ勧告 FreeBSD-SA-02:34 をご覧ください。[MFC 済]

ローカルユーザが FFS ファイルシステム上の任意のブロックを読み書きできるというバグが修正されました。 この問題の詳細は、セキュリティ勧告 FreeBSD-SA-02:35 をご覧ください。[MFC 済]

NFS サーバのコードに含まれていた、 リモートからのサービス妨害攻撃を可能にするバグが修正されました。 この問題の詳細は、セキュリティ勧告 FreeBSD-SA-02:36 をご覧ください。[MFC 済]

kqueue(2) 機構を使うことで、 ローカルユーザがシステムパニックを引き起こすことができる可能性のあるバグが修正されました。 この問題の詳細は、セキュリティ勧告 FreeBSD-SA-02:37 をご覧ください。[MFC 済]

カーネルメモリの大きな部分を返してしまうという、 いくつかのシステムコールにあった境界チェックのバグが修正されました。 この問題の詳細は、 FreeBSD-SA-02:38 をご覧ください。[MFC 済]

`libkvm` を使っているアプリケーションから セキュリティ上重要な記述子が漏洩する可能性があるバグが修正されました この問題の詳細は FreeBSD-SA-02:39 をご覧ください。[MFC 済]

kadmind(8) および k5admin にあったバッファオーバフロー問題が修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:40 をご覧ください。 [MFC 済]

smrsh(8) にあった、 実行可能なプログラムの制限をユーザから無効にすることができるという プログラム上の誤りが修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:41 をご覧ください。 [MFC 済]

DNS リゾルバ ( resolver(3)) にあった、 アプリケーションを動作不能にする可能性のあるバッファオーバフロー問題が修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:42 をご覧ください。 [MFC 済]

BIND における複数のセキュリティ上の弱点が修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:43 をご覧ください。 [MFC 済]

fpathconf(2) システムコールにあった、 ローカルユーザからシステムをクラッシュさせたり、 高い権限を不正に取得するために利用可能な、 ファイル記述子の漏洩問題が修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:44 をご覧ください。 [MFC 済]

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

コンパイラツールチェーンから、 a.out(5) 形式の実行ファイルを作成する機能が削除されました。

adduser(8) および rmuser(8) が、 Perl スクリプトから sh(1) スクリプトに変更されました。

arp(8) は FDDI や ATM インターフェイスに対して `[fddi]` や `[atm]` タグを表示するようになりました。

FORTRAN キャリッジ制御文字を解釈する asa(1) ユーティリティが追加されました。

at(1) に新しく、リモートジョブを削除する `-r` と、時間を POSIX 時間フォーマットで指定するための `-t` オプションに対応しました。

at(1) に ジョブを削除する `-r` オプションと POSIX 時刻フォーマットで時間を指定する `-t` オプションが 追加されました。

システムの awk(1) が BWK awk になりました。

basename(1) に `-a` フラグと `-s` フラグが追加され、複数のファイルに対して basename(3) 関数を実行できるようになりました。

biff(1) に、新しい引数 `b` が追加されました。 これは、新しいメール到着時の ``ベル通知'' を有効にします (`biff y` のように、端末には表示されません)。 [MFC 済]

biff(1) が 標準入力、標準出力、標準エラー出力の順に 起動された端末のファイル記述子を利用するようになりました。 これにより、シェルのリダイレクト機能 (`biff n < /dev/ttyp1`) を利用し、他の端末へ通知を切替えることができます。

burncd(8) が新しくディスクアトワンス (Disk At Once; DAO) モードに対応しました。 オプション `-d` でこのモードを選ぶことが可能です。[MFC 済]

burncd(8) は VCD や SVCD に書き込めるように なりました。[MFC 済]

burncd(8) が、 `-s` オプションの値に `max` を指定すると、 そのドライブの最大書き込み速度を設定するようになりました。 [MFC 済]

bzgrep(1)、 bzegrep(1)、 bzfgrep(1) が追加され、 bzip2(1) で圧縮されたファイルを grep(1) することができるようになりました。

calendar(1) に新しく、 週末を特別扱いせず `-A` と同じ機能を実現する `-W` オプションと、 ``金曜日'' (訳注:「週末」の前日を表す曜日) を変更する `-F` オプションが追加されました。

catman(1) が Perl スクリプトから C プログラムに変更されました。

cdcontrol(1) が CDROM ドライブの最大速度を設定する `speed` コマンドに対応しました (速度に `max` と指定することで、 ドライブの最大速度と同じ値に設定することも可能)。 [MFC 済]

`libc` に、FreeBSD ベースシステムのユーティリティが FreeBSD 4 互換モードと ``規格準拠'' モード (デフォルト) の どちらで動作するのかを指定するライブラリ関数 check_utility_compat(3) が追加されました。 設定は malloc(3) と同様、 環境変数かシンボリックリンクで行ないます。

chflags(1) が `/usr/bin` から `/bin` に移動しました。

chmod(1) に新しいオプション `-h` が追加されました。 これはシンボリックリンクの許可属性の変更に対応するものです。

chmod(1) に `-v` オプションが複数回指定した場合、 ファイルのモードを変更するときに、 新旧のモードを表示するようになりました。

chown(8) におけるユーザとグループの区切り文字に `.` を使うことができなくなりました。 これは `.` 文字を含むユーザ名に対応するためです。

`<sys/param.h>` を include する場合、 `CSMG_*` マクロを使う必要がなくなりました。

FreeBSD 4-STABLE との互換性を提供する `compat4x` 配布物が追加されました。

cp(1) に (非標準の) `-n` オプションが追加されました。 これは、ファイルを上書きする際の確認に対して、 自動的に ``no'' を回答するものです。[MFC 済]

コンテキストを判断してファイルの分割を行なう csplit(1) ユーティリティが新たに追加されました。

ctags(1) がデフォルトで typedef, struct, union, enum 宣言のタグを生成するようになりました (デフォルトで `-t` オプションが追加されます)。 新しく追加された `-T` オプションを利用すると、 従来どおりの動作になります。

daemon(3) へのコマンドラインインターフェイスを提供する daemon(8) プログラムが新しく追加されました。 daemon(8) は自身を制御端末から切り離し、 コマンドラインで指定されたプログラムを実行します。 これは任意のプログラムをデーモンとして実行させることを可能にします。 [MFC 済]

devd(8) ユーティリティが追加されました。 これは、デバイスがデバイスツリー上に現われ利用可能になった際に 任意のコマンドを実行することのできるユーザランドデーモンです。 このプログラムは pccardd(8) のいくつかの機能の汎用化したものです。

> Note: devd(8) は、現在も作業が続けられている機能の一つです。

devinfo(8) というデバイスツリーとリソース使用状況を 表示する簡単なツールが追加されました。

diskpart(8) は廃止され、削除されました。

dump(8) に、使用中の UFS および UFS2 ファイルシステムを 安全にダンプする `-L` オプションが追加されました。 一貫性のあるダンプイメージを取得するため、 dump(8) はファイルシステムのスナップショットを作成し、 そのスナップショットに対してダンプを実行します。 ダンプの作成が完了すると、スナップショットは削除されます。

dump(8) にダンプサイズの予測を出力し終了するだけの `-S` オプションが追加されました。[MFC 済]

expr(1) が POSIX.2-1992 (および POSIX.1-2001) 準拠しました。 ただし、いくつかのプログラムは expr(1) の古い歴史的な動作に依存しており、 引数をコマンドラインオプションと誤って解釈しないようにするための 指定を適切に行ないません (大きなものに、GNU プログラムの多くが使っている `devel/libtool` の port/package があります)。 check_utility_compat(3) で説明されている互換モードを有効にすると、 expr(1) を従来と同じ動作にすることが可能です。

fbtab(5) はターゲットデバイスとして、特定のデバイスや ディレクトリだけではなく、グロブマッチングパターンも受け付ける ようになりました。

フロッピーディスクからデータを読み出すためのプログラム fdread(1) が新たに追加されました。 これは fdwrite(1) と対になるもので、 異常のあるメディアからデータを取り出す手段を提供し、 複雑な手順で dd(1) を実行しなくて済むようにする目的で設計されています。

finger(1) が `.pubkey` ファイルに対応しました。[MFC 済]

finger(1) に、 GECOS 情報の表示をユーザのフルネームのみに制限する `-g` フラグが追加されました。[MFC 済]

finger(1) に、リモートの問い合わせに使うアドレスファミリを指定する `-4` フラグと `-6` フラグが追加されました。[MFC 済]

fold(1) に、 指定バイト位置で改行する `-b` フラグ、 単語境界で改行する `-s` フラグが追加されました。 [MFC 済]

fsck(8) が、 フォアグラウンドチェック (`-F`) およびバックグラウンドチェック (`-B`) に対応しました。 fsck(8) は従来、ファイルシステムをマウントする前に実行され、 実行終了時点でチェックがすべて完了していましたが、 バックグラウンドチェックが利用できる場合、 fsck(8) は 2 回実行されます。 最初の実行は従来と同様の時点、 つまりファイルシステムがマウントされる前に、 バックグラウンドチェックが不可能なすべてのファイルシステムに対して `-F` オプションフラグが指定された形で実行されます。 そしてもう一度、システムがマルチユーザモードに移行してから バックグラウンドチェックが可能なすべてのファイルシステムに対して `-B` オプションフラグが指定された形で実行されます。 バックグラウンドチェックはフォアグラウンドチェックと 異なり非同期で実行されるため、 チェック中に他のシステム動作も並行して処理することが可能です。 この機能を起動時に有効化するかどうかは、 rc.conf(5) の `background_fsck` オプションで制御できます。

fsck_ffs(8) が、`-B` オプションでマウントされている FFS ファイルシステムに対する、 バックグラウンドでのファイルシステムチェックに対応しました (これらのファイルシステムで Soft Updates 機能が有効化されている必要があります)。 また `-F` オプションフラグは、 指定されたファイルシステムをフォアグラウンドで チェックする必要があるかどうかを指定します。

ftpd(8) に、新しく `-m` オプションが追加されました。 これは、ファイルシステム上の許可属性に従い、 ゲストユーザも既存のファイルを変更できるようにするものです。 これは特に、ゲストユーザがアップロードする際の途中再送 (resume) を可能にします。[MFC 済]

ftpd(8) に、新しく `-M` オプションが追加されました。 これは、ゲストユーザがディレクトリを作成できないようにします。 [MFC 済]

ftpd(8) に新しいオプション `-o` および `-O` が追加されました。 `-o` はすべてのユーザ、 `-O` はゲストユーザに対して `RETR` コマンドを無効化します。 これと `-A` オプション、 および適切なファイル許可属性を組み合わせることで、 比較的安全なアップロード用 anonymous FTP サーバを構築することが可能です。[MFC 済]

ftpd(8) に、新しく `-W` オプションが追加されました。 これは、FTP セションのログを wtmp(5) に記録しないようにします。 [MFC 済]

FireWire サブシステムをユーザから操作・制御するための fwcontrol(8) ユーティリティが追加されました。

getconf(1) ユーティリティが追加されました。 これは POSIX、X/Open パスの値、 あるいはシステム設定変数の値を出力します。 [MFC 済]

gifconfig(8) が削除され、 その機能は ifconfig(8) の `tunnel` と `deletetunnel` コマンドに統合されました。

gprof(1) に現在動作しているカーネルから動的にシンボル 参照を解決するための `-K` オプションが追加 されました。 この変更により、KLD モジュールが適切にコンパイルされていれば、 プロファイルすることができるようになりました。

単にエミュレーションカーネルモジュールをロードするだけの機能を持つ ibcs2(8)、 linux(8)、osf1(8);、svr4(8) スクリプトが削除されました。現在のカーネルモジュールシステムは、 それらを必要に応じて自動的に、依存関係を満たすようロードします。

ifconfig(8) に、インターフェイスを プロミスキャス (promiscuous) モードにする機能が追加されました。 これは、新しく追加された `promisc` フラグを使います。 [MFC 済]

ifconfig(8) に、パケットの送出を遮断する `monitor` フラグが追加されました。 この機能は、他ネットワークへ影響をおよぼさずに、 そのネットワークのトラフィックを監視するのに役立ちます。

デフォルトでは、 inetd(8) は起動時に rc(8) から起動しなくなりました。 しかし、 sysinstall(8) を使ったバイナリインストールの際には、 inetd(8) を有効にするかどうかの選択ができるようになっています。 また、 inetd(8) は `/etc/rc.conf` に次の行を加えることでも有効にすることが可能です。

        inetd_enable="YES"

inetd(8) に、同一の IP アドレスからの同時アクセス数の最大値を 各サービスに対して設定する機能が追加されました。[MFC 済]

ipfw(8) フィルタルールは、IPv4 precedence フィールド の値にマッチできるようになりました。

kbdmap(1) と vidfont(1) が Perl スクリプトから C プログラムに変更されました。

kenv(1) がカーネル環境変数の設定・削除に対応しました。

kget(8) ユーティリティが削除されました (これは UserConfig 専用のユーティリティであり、 FreeBSD 5.0-RELEASE には UserConfig がありません)。

killall(1) が、`-z` フラグが指定されない場合にゾンビプロセスを kill しようとしなくなりました。

ユーザランドから ktr トレースバッファをダンプする ktrdump(8) ユーティリティが追加されました。

ldd(1) に、各ロードされたオブジェクトが必要とする すべてのオブジェクトのリストを表示する `-a` フラグが追加されました。

`libc` が標準でスレッドセーフになりました。 `libc_r` にはスレッド関数のみが含まれています。

`libstand` は UFS ファイルシステム中 のファイルの中身を上書きすることができるようになりました (ファイルシステムが dirty もしくは inconsistent かもしれない ので、ファイルを大きくしたり削ったりすることはできません)。

`libgmp` が `libmp` で置き換えられました。

`libposix1e` の関数が `libc` に統合されました。

lock(1) に、現在使用している端末がロックされている時に VTY の切替えを無効にする `-v` フラグが追加されました。 これにより、ひとつの端末からコンソール全体を ロックすることができるようになります。[MFC 済]

lpc(8) に改良が加えられました。 `lpc clean` は多少安全な動作をするように変更され、 新しく導入された `lpc tclean` コマンドにより、 `lpc clean` コマンドで削除されるファイルをチェックすることができます。 `lpc topq` が再実装され、 移動するジョブを (ジョブ番号の範囲やホスト名などを使って) より柔軟に指定できるようになりました。 また、印刷キューの最後にジョブを移動する `lpc bottomq` コマンドと、 プリンタの状態メッセージを設定できる `lpc setstatus` コマンドが追加されました。[MFC 済]

The ls(1) にリストを一行で表示する `-m` フラグ、 ディレクトリ名の後ろに `/` を付加する `-p` フラグ、 ファイル名を行方向にソートして表示する `-x` フラグが追加されました。 [MFC 済]

makewhatis(1) が Perl スクリプトから C プログラムに変更されました。

``catpage'' (繰り返し表示されるためにあらかじめ フォーマットされキャッシュされたマニュアルページ) の生成に 関連する弱点を減らすために、 man(1) は `man` に SUID された状態で インストールされなくなりました。 その結果、 man(1) は一般ユーザの代わりにシステムの catpage を作成することはできなくなりました。 ユーザが catpage を保持しているディレクトリに対して書き込み権限 を持っている場合 (例えばユーザ自身の manpage) や、 実行しているユーザが `root` の場合には、 catpage を作成することができます。

新しいコマンド mdmfs(8) が追加されました。 これは mdconfig(8) コマンド、 disklabel(8) コマンド、 newfs(8) コマンド、 mount(8) コマンドに関連するラッパで、 廃止された mount_mfs(8) コマンドのオプションが利用できます。

mesg(1) が SUSv3 に適合しました。 他のものと同様に、 標準入力、標準出力、標準エラー出力の順に 起動された端末のファイル記述子を利用するようになりました。 これにより、シェルのリダイレクト機能 (`mesg n < /dev/ttyp1`) を利用し、他の端末への書き込みアクセスを制御することができます。

mountd(8) と nfsd(8) が `/sbin` から `/usr/sbin` に移動しました。

mv(1) に、 (非標準の) `-n` オプションが追加されました。 これは、ファイルを上書きする際の確認に対して、 自動的に ``no'' を回答するものです。[MFC 済]

最近のハードディスクでは有効に働かない古い機能の多くが、 newfs(8) から削除されました。 `-O`、`-d`、 `-k`、`-l`、`-n`、 `-p`、`-r`、`-t`、 および `-x` フラグがそれに該当します。

newfs(8) に UFS1 ファイルシステム、UFS2 ファイルシステムの作成を選択する `-O` フラグが追加されました。

現在のグループを新しいグループに切り替える newgrp(1) ユーティリティが追加されました。

newsyslog(8) がデフォルトで ログファイルの圧縮に bzip2(1) を使うようになりました (`/etc/newsyslog.conf` には、 gzip(1) を利用する従来の動作を指定することも可能です)。

次回の起動で使用するカーネルと起動フラグを指定するための nextboot(8) ユーティリティが追加されました。この機能は FreeBSD 2.2 に初めて登場していたものです。

NFS が IPv6 に対応しました。

nice(1) に、実行するユーティリティの ``nice 値'' を指定する `-n` オプションが追加されました。[MFC 済]

nsswitch 機能が NetBSD からマージされました。 nsswitch.conf(5) ファイルを作成することで、 passwd(5) や group(5) といったさまざまなデータベースを、 通常のテキストファイル、NIS、Hesiod を経由して検索するように FreeBSD を設定することが可能です。 `/etc/nsswitch.conf` ファイルが存在しない場合は、 システム起動時に `/etc/hosts.conf` から自動生成されます。また、古いバイナリでは `/etc/hosts.conf` が使われる可能性があるので、 このファイルが存在しない場合はシステム起動時に `/etc/nsswitch.conf` を使って自動生成されます。

od(1) に、 入力アドレスの起点を指定する `-A` オプション、 ダンプするバイト数を指定する `-N` オプション、 ダンプを何バイトスキップするか指定する `-j` オプション、 符号付きの 10 進数で出力する `-s` オプション、 出力形式を指定する `-t` オプションが追加されました。 [MFC 済]

PAM のアカウント管理、セション管理に対応しました。

PAM の設定は 単一のファイル `/etc/pam.conf` ファイル ではなく、`/etc/pam.d/` 内の ファイルで行われるようになりました。 `/etc/pam.d/README` に詳細があります。

エコーサービスを提供する pam_echo(8) モジュールが追加されました。

pam_exec(8) モジュールが追加されました。 これはプログラムの実行サービスを提供します。

pam_ftp(8) モジュールが追加されました。 これは anonymous FTP ユーザの認証を可能にするものです。

ftpusers(5) ファイルをチェックする pam_ftpusers(8) モジュールが追加されました。

Kerberos 5 認証と su(1) に対して `$HOME/.k5login` を使った認可 (authorization) を行なう pam_ksu(8) モジュールが追加されました。

ログインセションを utmp(5)、 wtmp(5)、 lastlog(5) データベースに記録する pam_lastlog(8) モジュールが追加されました。

`/etc/login.access` をチェックする pam_login_access(8) モジュールが追加されました。

nologin(5) を利用してログインを拒否する pam_nologin(8) モジュールが追加されました。

opie(4) を使った認証制御を可能にする pam_opie(8)、 pam_opieaccess(8) モジュールが追加されました。 [MFC 済]

パスワードの変更の際に入力されたパスワードの品質をチェックする pam_passwdqc(8) モジュールが追加されました。

rhosts(5) 認証に対応した pam_rhosts(8) モジュールが追加されました。

スーパーユーザのみが認証に利用できる pam_rootok(8) モジュールが追加されました。

ttys(5) に書かれている TTY の ``security'' を チェックする pam_securetty(8) モジュールが追加されました。

ユーザの自己認証を可能にする pam_self(8) モジュールが追加されました。

あるグループ (デフォルトは `wheel`) に 所属しているかどうかでの認証を可能にする pam_wheel(8) モジュールが追加されました。

パス名の妥当性や他の POSIX システムとの移植性をチェックする pathchk(1) ユーティリティが追加されました。[MFC 済]

ping(8) に、応答を一回受け取った後に終了する `-o` フラグが追加されました。

prefix(8) が削除され、 その機能は ifconfig(8) の `eui64` コマンドに統合されました。

pselect(3) ライブラリ関数 (POSIX.1 で導入された select(2) を若干強力にしたもの) が追加されました。

pwd(1) に、論理カレントディレクトリを表示する `-L` フラグが追加されました。[MFC 済]

quota(1) に NFS ファイルシステムのクォータチェックを抑制する `-l` フラグが追加されました。

rand(3) の疑似乱数生成器実装に対して、 結果の乱雑さをより向上させるための改良が加えられました。

rcmd(3) はリモート実行のために rsh(1) の代わりに 実行するプログラムを `RSH` 環境変数で 指定できるようになりました。 そのため、 dump(8) のようなプログラムも通信手段として ssh(1) を使うことができるようになりました。

rdist(1) がベースシステムから削除され、 FreeBSD Ports Collection の `net/44bsd-rdist` として用意されるようになりました。

renice(8) コマンドに、 プロセスの優先度に対する増分を指定する `-n` オプションが追加されました。[MFC 済]

portmap(8) が rpcbind(8) に置き換えられました。

rpcgen(1) は、 `/usr/libexec/cpp` ではなく (NetBSD のように) `/usr/bin/cpp` を使うようになりました。

NetBSD 由来の rpc.lockd(8) が統合されました。 このデーモンは クライアント側の NFS ロックを提供するためのものです。

rtld(1) は `LD_TRACE_LOADED_OBJECTS_ALL` 環境変数が定義されていた場合、ロードされる各オブジェクトの 名前を表示するようになりました。

sed(1) に、指定ファイルそのものを編集する `-i` オプションが追加されました。[MFC 済]

ファイルシステムの Access Control Lists を管理するコマンド setfacl(1) および getfacl(1) が追加されました。

他のビルトインコマンドと比べてそれほど価値があるとは 思えないため、 sh(1) はもはや `printf` をビルトインコマンドとして実装しません (もちろんこの機能は printf(1) 外部コマンドとして 利用可能です)。

sh(1) に、出力のリダイレクトで既存の通常ファイルを 上書きする操作を禁止する `-C` オプションと、 未定義の変数を展開しようとした時にエラーを発生させる `-u` オプションが追加されました。[MFC 済]

sh(1) 内蔵の `cd` コマンドに、 論理モードを指定する `-L` フラグと 物理モードを指定する `-P` フラグがそれぞれ追加されました。 デフォルトは論理モードです。 このデフォルトは、`physical` という sh(1) オプションで 変更できます。[MFC 済]

sh(1) 内蔵の `jobs` コマンドに、 PID のみを表示する `-s` フラグと 出力に PID を含める `-l` フラグが追加されました。 [MFC 済]

sh(1) にシェルの行編集機能のキーバインドを変更する `bind` 内蔵コマンドが追加されました。

sh(1) 内蔵の `export` および `readonly` コマンドに、 ``portable'' フォーマットで出力する `-p` フラグが追加されました。[MFC 済]

sh(1) は ``command` & && `command``, `&& `command``, や `|| `command``. のような構文を 拒否するようになりました。[MFC 済]

spkrtest(8) が Perl スクリプトから sh(1) スクリプトに変更されました。

split(1) に、分割ファイルの接尾子に使用する文字数を指定する `-a` オプションが追加されました。[MFC 済]

`<sys/select.h>` を SUSv2/POSIX 規格に適合させるため、 `struct selinfo` および関連する関数が `<sys/selinfo.h>` に移動しました。

su(1) が認証に PAM を使うようになりました。

sysctl(8) に 変数の説明を出力する `-d` フラグが追加されました。

sysinstall(8) に新しいダイアログ表示関数が導入され、 より直観的なものになりました。 [MFC 済]

sysinstall(8) のデフォルトのルートパーティションのサイズが、 i386 版と pc98 版が 100MB、Alpha 版が 120MB にそれぞれ変更されました。

インストール手順を単純化するため、 sysinstall(8) が `/usr/sbin` に移動しました。 sysinstall(8) のマニュアルページも、 他のユーティリティと同様の方法でインストールされるようになっています。

sysinstall(8) は新規インストールの際にデフォルトで procfs(5) をマウントしなくなりました。 この変更はセキュリティの向上をねらったものですが、 procfs(5) を手動で、あるいは fstab(5) ファイルに指定することでマウントすることは可能です。

端末のタブストップを設定する tabs(1) ユーティリティが追加されました。

termcap(5) データベースは、 XFree86 由来の `xterm` 端末タイプを使うようになりました。 これにより xterm(1) はデフォルトでカラー表示が可能になり、 環境変数 `TERM` に `xterm-color` を設定するという回避策はもう必要なくなりました。 `xterm-color` 端末タイプを利用していると、 アプリケーションから (害はありませんが) 警告が出るかも知れません。

tftpd(8) が RFC 2349 (TFTP Timeout Interval and Transfer Size Options) に対応しました。 この機能は (HP i2000 Itanium サーバが採用している) EFI ブートマネージャのようなファームウェアが TFTP を使ってイメージから起動するために必要となるものです。

timed(8) が Alpha 上で動作するように なりました。

Transport Independent RPC (TI-RPC) が統合されました。

tip(1) が OpenBSD 由来のものに更新されました。 cu(1) の代用品として動作することができます。

top(1) が、 tty の持つ最大の表示幅を利用するようになりました。

touch(1) に新しいオプション `-h` が追加されました。 これはコマンドの作用をシンボリックリンクのリンク先ではなく、 リンクそのものに対して行なうことを指定するものです。

tr(1) が、一部の等価クラス (equivalence class, 対応しているロケールのみ) に対応しました。 [MFC 済]

tr(1) に第一引数で指定された文字の補集合を表す `-C` フラグが追加されました。

tunefs(8) に、UFS ファイルシステムの `FS_ACLS` 管理フラグおよび `FS_MULTILABEL` 管理フラグの有効化・無効化を指定する `-a` フラグと `-l` フラグがそれぞれ追加されました。

ipfw(8) と類似した ugidfw(8) ユーティリティが追加されました。 これは `mac_bsdextended` MAC (Mandatory Access Control) ポリシのルールセットを管理するためのものです。

cu(1) と rmail(8) を除いて、 UUCP は ベースシステムから削除されました。 現在は Ports Collection の `net/freebsd-uucp` にあります。

unexpand(1) に、 expand(1) と同じようにタブ位置を指定する `-t` オプションが追加されました。[MFC 済]

usbdevs(8) に、各デバイスに対応するデバイスドライバ を表示する `-d` フラグが追加されました。

uuencode(1) と uudecode(1) の base64 変換機能が、 それぞれ b64encode(1) と b64decode(1) という名前で実行することで自動的に有効になるようになりました。 (訳注: b64encode(1) は uuencode(1) の、 b64decode(1) は uudecode(1) のハードリンクです)。 [MFC 済]

uuidgen(1) ユーティリティが追加されました。 これは新しく導入された uuidgen(2) システムコールを利用して OSF/DCE 1.1 version 1 UUID と互換性のある Universally Unique Identifier を一つ (ないしそれ以上) 生成します。

vidcontrol(1) に、VTY の切替えを無効にする `-S` フラグが追加されました。[MFC 済]

vinum(8) のストライプサイズの既定値が 256KB から 279KB に変更されました。 これは各ストライプに対してスーパブロックを均等に割り振るためです。

wc(1) がバイトではなく文字をカウントする `-m` フラグに対応しました。

whereis(1) が Perl スクリプトから C プログラムに変更されました。 locate(1) の起動を抑制する `-x` フラグ、 出力行の先頭に現れるクエリ名の表示を抑制する `-q` フラグが追加されました。

whereis(1) に、 検索対象のファイルタイプに一致する最初のものだけでなく、 マッチするものすべてを表示する `-a` フラグが追加されました。

Perl スクリプトだった which(1) が C プログラムに変更されました。

who(1) に数多くのオプションが追加されました。 `-H` はカラムヘッダを出力し、 `-T` は mesg(1) の設定を表示します。 `-m` は `am i` と等価であり、 `-u` はアイドル時間の表示、 `-q` はログイン名を列で表示します。[MFC 済]

wicontrol(8) に `hostap` モードのステーションの一覧を表示する `-l` フラグと 利用可能なアクセスポイントの一覧を表示する `-L` フラグが追加されました。

wicontrol(8) now supports a `-l` to list the stations associated in `hostap` mode and a `-L` to list available access points.

xargs(1) に新しいオプション `-I` `replstr` が追加されました。 これは標準入力から読み込まれたデータをコマンドライン引数の最後ではなく、 指定した点に挿入するように制御するためのものです (FreeBSD 独自の `-J` オプションと同様の機能です)。 [MFC 済]

xargs(1) に、入力を指定行数ごとに区切り、 それを引数にして入力がなくなるまで複数回コマンドを呼び出すという `-L` オプションが追加されました。[MFC 済]

C ライブラリ中のさまざまなルーチンが ``ワイド'' 文字に対応しました。 この対応は wctype(3) のような文字クラス関数、 getwc(3) のようなワイド文字入出力関数、 wprintf(3), wscanf(3) のような書式入出力関数にわたります。 multibyte(3) 文字への変換関数にも対応しています。

多くのユーティリティとライブラリが改良され、 Single UNIX Specification (SUSv3) および IEEE Std 1003.1-2001 (``POSIX.1'') との適合性が向上しました。 個々のユーティリティにおいて追加された機能は リリースノートに記載されています。 個々のユーティリティやライブラリ関数の標準への適合性は そのマニュアルページに記載されています。

ベースシステムから BSD に伝統的に含まれていた数々のゲームが削除されました。 これには adventure(6), arithmetic(6), atc(6), backgammon(6), battlestar(6), bs(6), canfield(6), cribbage(6), fish(6), hack(6), hangman(6), larn(6), mille(6), phantasia(6), piano(6), pig(6), quiz(6), rain(6), robots(6), rogue(6), sail(6), snake(6), trek(6), wargames(6), worm(6), worms(6), wump(6) が含まれます。 各ゲームへのアクセスを制限するのに利用されていた dm(8) は必要がなくなったため、削除されました。 fortune(6) のように ``ユーティリティともみなせる'' ゲームは残されています。

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

am-utils がバージョン 6.0.7 に更新されました。

Bell Labs の awk ( ``BWK awk'' や ``The One True AWK'' として知られています ) の 2002 年 11 月 29 日時点のスナップショットが統合されました。 `awk`、`nawk` としてインストールされます。

BIND が `NOADDITIONAL` オプションで構築されるようになりました。 これは良くある設定ミスに対して、 named(8) により一貫性の高い動作をさせるためのものです。 [MFC 済]

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

Binutils が 2002/10/27 の 2.13.2 プレリリーススナップショットに 更新されました。

file がバージョン 3.39 に更新されました。

gcc が、 gcc 3.2.1 のリリースバージョンに更新されました。

> Warninggcc 3.2.1 の C++ ABI は、 以前のバージョンのものと互換性がありません。

gcc(1) が `GCC_OPTIONS` 環境変数に対応しました。 この変数には GCC のデフォルトオプションを指定します。 [MFC 済]

gdb がバージョン 5.2.1 に更新されました。

gperf がバージョン 2.7.2 に更新されました。

groff および関連ユーティリティが更新され、 FSF バージョン 1.18.1 になりました。

Heimdal Kerberos がバージョン 0.5.1 に更新されました。 [MFC 済]

ISC DHCP クライアントがバージョン 3.0.1RC9 に更新されました。

more(1) コマンドが less(1) に置き換えられました、 ただし `more` というコマンド名はそのまま使用 できます。[MFC 済] less のバージョン 371 が統合されました。

ベースシステムにおける XML を使用するユーティリティの利便性を向上するために、 `libbsdxml` という名前の XML 処理ライブラリが追加されました。 このライブラリの大部分は基本的に expat 1.95.5 を統合したものですが、 Ports Collection を利用してインストールした expat と衝突するのを避けるために 異なる名前でインストールされています。

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

libreadline がバージョン 4.2 に更新されました。

libz が 1.1.4 に 更新されました。

lint は NetBSD lint(1) の 2002 年 7 月 19 日時点のスナップショットに更新されました。

FreeBSD の ftp(1) プログラムが lukemftp 1.6 beta 2 (NetBSD 由来の FTP クライアント) に置き換えられました。 これにより、より自動化された動作や、標準への準拠、転送レート制御、 カスタマイズ可能なコマンドラインプロンプトなどが 提供されます。 いくつかの環境変数やコマンドライン引数が変更となっています。

OpenBSD から 2002 年 4 月 26 日時点の m4(1) が統合されました。[MFC 済]

ncurses がバージョン 5.2-20020615 に更新されました。

OpenPAM (``Citronella'' リリース) が Linux-PAM に代わって 統合されました。

OPIE ワンタイムパスワードスイートがバージョン 2.4 に更新されました。 [MFC 済] これは S/Key の機能を完全に置き換えるものです。[MFC 済]

Perl が FreeBSD のベースシステムから削除されました。 なお、Perl は FreeBSD Ports Collection から、 package としてインストールするか、もしくは sysinstall(8) のメニューから Perl distribution を選択することでインストールすることができます。 Perl のベースシステムから削除の削除は、 今後のアップグレードと保守を容易にすることを目的としています。 ベースシステムの Perl 依存性を減らすため、 多くのユーティリティがシェルスクリプトや C プログラムで書き直されました (書き直されたユーティリティは、リリースノート中に記載されています)。

> Note: Perl の削除作業は、まだ完了していません。

> Note: sysinstall(8) の配布物のほとんどには、 新しい Perl 配布物が含まれています。 そのため、Perl がベースシステムとは独立して更新されるという点を除いて、 この変更をユーザが意識することはほとんどないでしょう。

GNU ptx が ベースシステムから削除されました。 ペースシステムでは利用されておらず、 更新や保守がされていないことが理由です。 この機能が必要なユーザは `textproc/textutils` カテゴリから 当該ユーティリティをインストールしてください。

NetBSD から `rc.d` フレームワークが導入されました。 これは、従来のシステムのスタートアップ部分を ``task 指向'' のスクリプト群として細かく分割して `/etc/rc.d` に配置し、 そのスタートアップスクリプトの起動順を、 起動時に動的に決定するというものです。

GNU sort が GNU textutils 2.0.21 に含まれるものに更新されました。

NetBSD 由来の (2002 年 6 月 5 日時点の) stat(1) コマンドが導入されました。

GNU tar が バージョン 1.13.25 に更新されました。 [MFC 済]

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

csh(1) シェルが tcsh(1) に置き換えられました。 ただし `csh` というコマンド名はそのまま使用できます。 tcsh はバージョン 6.12 に更新されました。 [MFC 済]

tcp_wrappers の寄贈版 は tcpd(8) ヘルパーデーモンを含むようになりました。 標準的な FreeBSD インストールでは ( inetd(8) がすでに この機能を統合しているため) これは必ずしも必要というわけでは ありませんが、xinetd のような inetd(8) を置き換えるアプリケーションには有用です。[MFC 済]

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

top がバージョン 3.5b12 に更新されました。[MFC 済]

traceroute が LBL (Lawrence Berkeley National Laboratory) の バージョン 1.4a12 に更新されました。

タイムゾーンデータベースが `tzdata2002d` リリースに更新されました。

#### 2.3.1.1. CVS

cvs が、バージョン 1.11.2.1 の 2002 年 12 月 1 日時点のスナップショットに更新されました。

#### 2.3.1.2. CVSup

#### 2.3.1.3. KAME

#### 2.3.1.4. OpenSSH

OpenSSH が 3.4p1 に更新されました。 [MFC 済] 主な変更点は以下のとおりです。

- `*2` は廃止されました (たとえば `~/.ssh/known_hosts` は `~/.ssh/known_hosts2` の中身を 含めることができます)。

- ssh-keygen(1) はいくつかの商用 SSH 実装 と鍵を交換するために、SECSH 公開鍵ファイルフォーマット を使って鍵を import/export することができるようになりました。

- ssh-add(1) は三つのデフォルト鍵すべてを追加するように なりました。

- ssh-keygen(1) は特定の鍵形式をデフォルトとは しないようになりました。`-t` オプション で明示的に指定する必要があります。

- プログラムのバグや将来的に発見される可能性のある セキュリティ上の弱点の影響を小さくするために、 特権を持たないプロセスを使うという ``特権分離 (privilege separation)'' 機能が追加されました。

- 整数変数のオーバフローによって権限の不正な獲得が 可能になるというセキュリティホールなど、 いくつかのバグが修正されました。

#### 2.3.1.5. OpenSSL

OpenSSL がバージョン 0.9.6g に更新されました。[MFC 済]

#### 2.3.1.6. sendmail

sendmail がバージョン 8.9.3 からバージョン 8.12.6 に更新されました。 これには重要な変更点として、 sendmail(8) は set-user-ID `root` バイナリとして インストールされなくなったこと (set-group-ID `smmsp` されます)、 標準のファイル配置の変更 (`/usr/src/contrib/sendmail/cf/README` 参照)、 newaliases(1) の実行が `root` および信頼できるユーザに制限されたこと、 STARTTLS 暗号化に対応したこと、 標準設定で MSA ポート (587) が有効化されたことが含まれています。 詳細については `/usr/src/contrib/sendmail/RELEASE_NOTES` をご覧ください。 [MFC 済]

rc(8) のデフォルトでは、外から来る SMTP 接続を処理する sendmail を起動しなくなりました。 ただし、バイナリインストールの場合は sysinstall(8) で選択したセキュリティプロファイルに応じてデフォルトが異なります。 この機能は、次の行を手動で `/etc/rc.conf` に 追加することでも有効にできます。

        sendmail_enable="YES"

`/etc/mail/Makefile` から構築される sendmail の alias ファイル、 map データベースの許可属性は、 ファイルロックに対するローカルからのサービス妨害攻撃を防ぐために デフォルトが 0640 になりました。 これは `make.conf` の `SENDMAIL_MAP_PERMS` という新しいオプションの設定で 変更することが可能です。[MFC 済]

sendmail の統計ファイル (`/var/log/sendmail.st`) の許可属性が ファイルロックに対するローカルからのサービス妨害攻撃を防ぐために 0644 から 0640 へ変更されました。[MFC 済]

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

Perl と FreeBSD Ports Collection の統合を強化するために BSDPAN というモジュール集が追加されました。

しばらくの間 FreeBSD 5.0-CURRENT (および 4.X リリースのいくつか) には インストール済み package と依存物を更新する pkg_update(1) ユーティリティが含まれていましたが、 pkg_update(1) は削除されました。 代わりに、この機能を含んだ高機能なツール `sysutils/portupgrade` の port を使うことができます。

ある期間、FreeBSD 5.0-CURRENT (および、いくつかの 4.X-RELEASE) には インストール済みの package とその依存関係を更新する pkg_update(1) ユーティリティが含まれていましたが、 このユーティリティは削除されました。 代わりに、より高機能な `sysutils/portupgrade` port が提供されています。

pkg_version(1) が Perl スクリプトから C プログラムに変更されました。誤解の多い `-c` オプションは削除されています。 `sysutils/portupgrade` の port が、同様のより安全な機能を提供しています。

Ports Collection において、(訳注: 各 port が) 依存する X Window System のデフォルトのバージョンが XFree86 4.2.1 に変更されました。 XFree86 3.3.6 に戻すには、 `/etc/make.conf` に次の行を加えてください。 [MFC 済]

        XFREE86_VERSION=3

`emulators/linux_base` の port でインストールされるライブラリ (Linux エミュレーションに必要) が更新されました。 現在は Red Hat Linux 7.1 に含まれるものに対応しています。[MFC 済]

Ports Collection で生成される package (FTP サイトに置かれているものも同様) が、 gzip(1) ではなく bzip2(1) で圧縮されるようになりました (そのため、拡張子は `.tgz` ではなく `.tbz` になっています)。 package 関連ツールも、この新しい形式に対応するために更新されています。

Ports Collection では、FreeBSD 5-CURRENT 用の新しいインデクスファイル (`/usr/ports/INDEX-5`) を使うようになりました。 この新しいインデクスは、 ( `lang/perl5` のように) FreeBSD 4-STABLE には存在せず、FreeBSD 5-CURRENT に存在する依存性を処理できるようにすることを目的としています。 このファイルの導入後も、各 package 用のインデクスファイルは、 `INDEX` と呼ばれています。

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

インストール / リカバリ統合ディスクの作成を容易にするため、 `bin` 配布物の名前が `base` に変更されました。

FreeBSD 5-CURRENT ホスト上での FreeBSD 4-STABLE の make release、 および FreeBSD 4-STABLE ホスト上での FreeBSD 5-CURRENT の make release ができるようになりました。 クロスアーキテクチャのリリース構築 (ホストと異なるアーキテクチャのリリースを構築すること) も可能になっています。 詳しくは release(7) をご覧ください。[MFC 済]

フロッピーリリースの三枚目に `drivers.flp` イメージが追加されました。 このイメージには `kern.flp` の中にあるカーネルや `mfsroot.flp` イメージに入りきらない ドライバなどの動的ロード可能なモジュールが含まれています。

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

(ライセンス上の問題で以前までは含まれていなかった) 多くの 4.4 BSD Programmer's Supplementary Documents が `/usr/share/doc/psd` に復帰しました。 該当する文書は次のとおりです。

- The UNIX Time-Sharing System (`01.cacm`)

- UNIX Implementation (`02.implement`)

- The UNIX I/O System (`03.iosys`)

- UNIX Programming -- Second Edition (`04.uprog`)

- The C Programming Language -- Reference Manual (`06.Clang`)

- Yacc: Yet Another Compiler-Compiler (`15.yacc`)

- Lex -- A Lexical Analyzer Generator (`16.lex`)

- The M4 Macro Processor (`17.m4`)

同様に、4.4 BSD User's Supplementary Documents のいくつかが `/usr/share/doc/usd` に復帰しました。 該当する文書は次のとおりです。

- NROFF/TROFF User's Manual (`21.troff`)

- A TROFF Tutorial (`22.trofftut`)

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

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

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

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

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

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