FreeBSD 5.0-RELEASE pc98 Release Notes FreeBSD プロジェクト Copyright (c) 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 ベースシステムに対する最近の 変更点の概要が含まれています。 カーネルとユーザーランド双方の変更点が列挙されているのに加え、 前のリ リース以降に発行されたセキュリティ勧告のうちあてはまる ものも含まれて います。 また、アップグレードの際の注意点も載せてあります。 _________________________________________________________________ Table of Contents 1. はじめに 2. 更新情報 2.1. カーネルの変更点 2.1.1. プロセッサ・マザーボードの対応状況 2.1.2. ブートローダの変更 2.1.3. ネットワークインターフェイスの対応状況 2.1.4. ネットワークプロトコル 2.1.5. ディスク・記憶装置 2.1.6. ファイルシステム 2.1.7. PCCARD 対応 2.1.8. マルチメディアへの対応状況 2.1.9. 寄贈ソフトウェア 2.2. セキュリティ関連の修正 2.3. ユーザランドの変更点 2.3.1. 寄贈ソフトウェア 2.3.2. Ports/Packages Collection インフラストラクチャ 2.4. リリースエンジニアリングと統合 2.5. ドキュメンテーション 3. 前のリリースの FreeBSD からのアップグレード _________________________________________________________________ 1. はじめに この文書は NEC PC-98x1 ハードウェアプラットフォームの 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. カーネルの変更点 a.out(5) 形式の実行ファイルの利用するには、 カーネルコンフィグファイル に COMPAT_AOUT オプションをつけるか、 aout.ko カーネルモジュールを ロ ードしなければならなくなりました。 acct(2) は、アカウンティングファイルを 追記モードでオープンするように 変更されました。 これは accton(8) のアカウンティング機能を、 追記専用 ファイルに対して使えるようにするための変更です。[MFC 済] 複数の Netgraph モジュール (ng_bluetooth(4) 参照) という形で、 Bluetooth デバイスに暫定対応しました。 Bluetooth アダプタに対応する 2 つのモジュールが提供されています。 ng_bt3c(4) ドライバは 3Com/HP Bluetooth PCCARD アダプタに対応し、 ng_ubt(4) は、いくつかの USB Bluetooth アダプタに対応するものです。 Note: FreeBSD の Bluetooth 対応は、 現在も作業が続けられている機能 の一つです。 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) と似ていますが、 後者は実権限を使うのに対して、 前者は実効権限を使います。 FireWire デバイスへに対する 初期的な対応が追加されました (詳細は firewire(4) をご覧ください)。[MFC 済] 各 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 が すでに使われなくなっているために削除さ れました。 PECOFF (Win32 実行ファイルフォーマット) に対応しました。 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 済] Belkin F5U103 USB-シリアル変換アダプタ (およびその互換製品) に対応する ubsa ドライバが追加されました。 USB モデムや USB シリアルデバイスなどを tty のように見えるようにする ucom(4) ドライバが追加されました。 また、uftdi(4)、uplcom(4)、 uvscom(4) ドライバはそれぞれ、FTDI シリアルアダプタ、 Prolific PL-2303 シリアルアダプタ、SUNTAC Slipper U VS-10U に対応しています。 [MFC 済] セキュリティを向上させるため、UCONSOLE カーネル設定オプションが削除さ れました。 起動時に ISA デバイスの有効化・無効化・設定を行なうカーネル設定機能 UserConfig が削除されました。その機能は /boot/device.hints にあるカー ネルヒントファイルに置き換えられています。 USER_LDT カーネルオプションが標準設定で有効化されるようになりました。 Handspring Visors を USB 経由で接続できるようにするための uvisor(4) ド ライバが追加されました。[MFC 済] VESA S3 リニアフレームバッファドライバが追加されました。 カーネルのクラッシュダンプ機構が、 新しいプラットフォームへの対応、 コ ードのロジックの整頓を受けて改良されました。 この改良の成果の一つとし て、 カーネルダンプのディスク上のフォーマットが変更され、 バイトオーダ 依存性がなくなりました。 極めて大きいスワップ領域 (67 GB 以上) でも、システムがパニックしなくな りました。 リンカセット (訳注: ELF カーネル構築時に必要な情報の一つ) を生成する必 要がなくなりました。 必要のなくなった gensetdefs(8) は削除されています。 カーネル構築時に config(8) の ENV 指示子を用いることで、(調整可能な) カーネル環境変数を設定することができるようになりました。 新しく、idle 時にページをゼロで初期化する機能が追加されました。 これは vm.idlezero_enable sysctl 変数を使って有効化できます。 FreeBSD のカーネルスケジューラに KSEs (Kernel-Scheduled Entities) 機能 が追加されました。 これは、スケジューラアクティベーションと同様、 1 つ のプロセスから複数のスレッドの実行を可能にするものです。 現時点のカー ネルは、スレッド対応に必要な変更の多くが施され、 スケジューラは各プロ セスで複数のスレッドをスケジュールすることが できるのですが、スレッド を複数の CPU 上で同時に実行することはできません。 詳細は kse(2) をご覧 ください。 Note: KSE は、現在も作業が続けられている機能の一つです。 カーネルは複数の低レベルコンソールデバイスをサポートします。 異なった コンソールを操作するには、新しい conscontrol(8) ユーティリティを使いま す。 カーネルメモリアロケータは Solaris で使われているのと同じように スラ ブ(slab)メモリアロケータとなりました。 これは CPU の数が増えるに従い線 形に近い性能を示す SMP 対応の メモリアロケータです。 また、メモリフラ グメンテーションも少なくなります。 _________________________________________________________________ 2.1.1. プロセッサ・マザーボードの対応状況 BSD/OS 5.0 由来のコードが組み入れられ SMP 対応部分が大きく書き直されま した。 SMPng (``SMP Next Generation'') の主な特徴の一つに、 マルチプロ セッサの利用効率を大きく損なうスピンロックを使わずに カーネル内で複数 のプロセスを実行することができる、 ということがあげられます。 また割り 込みハンドラは、 割り込みのロックアウトを低減するために それぞれコンテ キストを持つようになりました。 GENERIC カーネルから 80386 プロセッサ対応が削除されました。 このコード は他の IA32 プロセッサのパフォーマンスを大きく損なう原因となっているた めです。 80386 プロセッサに対応するための I386_CPU カーネルオプション を 他の IA32 プロセッサに対応するためのオプションと 同時に指定すること はできなくなりました。 これにより実行時のプロセッサタイプチェックが削 除され、 80386 における性能が多少向上しています。 80386 上で動作可能な カスタムカーネルを構築するには、 カーネルコンフィグレーションファイル に I386_CPU とだけ書いてあるように変更する必要があります。 カーネルオプション CPU_DISABLE_CMPXCHG が追加されました。 このオプショ ンを有効にすると、 VMWare 上のクライアント OS の性能が劇的に向上します。 Note: このオプションは SMP 機能と共存できません。 _________________________________________________________________ 2.1.2. ブートローダの変更 操作しやすくするため、カーネルとカーネルモジュールは /boot/kernel ディ レクトリに移動しました。 ブートローダには、 この変更を可能な限り意識し ないで済むような更新がなされています。 ブートローダが UFS1 および UFS2 ファイルシステムの両方からカーネルをロ ードできるようになりました。 _________________________________________________________________ 2.1.3. ネットワークインターフェイスの対応状況 dc(4) ドライバは、Xircom 3201 と Conexant LANfinity RS7112 チップベー スの NIC に対応しました。 DEC ``Tulip'' PCI Fast Ethernet コントローラベースの LAN Media Corp WAN アダプタに対応した、 lmc ドライバが追加されました。 rp(4) ドライバがバージョン 3.02 に更新され、 モジュールとして構築でき るようになりました。[MFC 済] 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 ノードタイプが追加されました。 これは一つの双方向パケ ットフローを 二つの単方向パケットフローに分割します。 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 コントローラに対 応しました。 ata(4) ドライバが pc98 プラットフォームに対応しました。 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、デュアルバスカードが含まれます。 matcd(4) ドライバは、 ライセンス上の問題でソースが修正できないため、削 除されました。 現在この問題に取り組んでおり、FreeBSD の将来のリリース で 再度このドライバが登場するかも知れません。 [MFC 済] メモリディスクデバイス 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) におけるユーザとグループの区切り文字に . を使うことができなく なりました。 これは . 文字を含むユーザ名に対応するためです。 を 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) はターゲットデバイスとして、特定のデバイスや ディレクトリだけ ではなく、グロブマッチングパターンも受け付ける ようになりました。 fdisk(8) は、 コマンドラインに何も指定されていなければデバイスを検索せ ずに、 ルートデバイスからデフォルトデバイス名を解決するようになりまし た。 フロッピーディスクからデータを読み出すためのプログラム 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 を使うようになりました。 rpc.lockd(8) が NetBSD から import されました。 このデーモンは クライ アント側の 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 済] を SUSv2/POSIX 規格に適合させるため、 struct selinfo お よび関連する関数が に移動しました。 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 を使ってイメージから 起動するために必要となるものです。 Transport Independent RPC (TI-RPC) が import されました。 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 が import されました。 ベースシステムにおける 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 に配置し、 そのスタートアップスクリプトの起動順を、 起 動時に動的に決定するというものです。 smbfs ユーザランド ユーティリティのバージョン 1.4.5 が統合されました。 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) で圧縮されるようになりました (そ のため、拡張子は .gz ではなく .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 に関するお問い合わせは、 へ質問を投稿す る前に解説文書をお読みください。 この文書の原文に関するお問い合わせは まで、 日本語訳に関するお問い合わせは、 まで電子メール でお願いします。