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

### FreeBSD プロジェクト

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

$FreeBSD: src/release/doc/ja_JP.eucJP/relnotes/common/new.sgml,v 1.5.2.25 2002/06/23 19:03:57 hrs Exp $

この FreeBSD 4.6-RELEASE リリースノートには、 FreeBSD 4.5-RELEASE のリリース以降に FreeBSD ベースシステムに対して加えられた変更点がまとめられています。 変更点はカーネル、ユーザランドにおけるものだけでなく、 前回のリリース以降に発行され、 ベースシステムに影響のあるセキュリティ勧告も含まれています。 また、アップグレードの際の注意点についても簡単に説明しています。

# 1. はじめに

この文書は IA-32 アーキテクチャ版 FreeBSD 4.6-RELEASE のリリースノートです。 これには 4.5-RELEASE 以降に追加 (変更) された新機能および、前のバージョンの FreeBSD からアップグレードする場合におけるいくつかの注意点か書かれています。

この FreeBSD 4.6-RELEASE は release 版であり、 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases および各ミラーサイトで公開されています。 FreeBSD の release 版 (またはそれ以外) の入手法については FreeBSD ハンドブックの ``FreeBSD を入手するには''をご覧ください。

# 2. 更新情報

この節では 4.5-RELEASE 以降に新たに追加・変更された ユーザに影響する機能について説明します。 リリースノートの項目には通常、新しいドライバや新しいハードウェアへの対応、 新しいコマンドや新しいオプションの導入、 大規模なバグ修正、寄贈ソフトウェアのアップグレードが含まれており、 それに加えて 4.5-RELEASE 以降に発行され、 ベースシステムに影響のあるセキュリティ勧告も記載されています。

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

puc(4) (PCI ``ユニバーサル'' コミュニケーション) ドライバが追加されました。 これは PCI ベースのシリアルポートを sio(4) ドライバへ接続することを可能にします。

ローダから変更可能な変数 `dumpdev` が新たに追加されました。これはカーネルダンプデバイスを設定するものです。 これにより、カーネル初期化の最後の段階 (システムがシングルユーザモードに入る前) で発生した panic のクラッシュダンプを取得することが可能です。

snp(4) ドライバは静的にカーネルに組み込む必要はなくなり、 モジュールとしてコンパイルできるようになりました。

Sony 製のいくつかのラップトップ機が搭載する ジョグダイアルへアクセスするための spic(4) ドライバが追加されました。 また、 moused(8) にも このデバイスへの対応が追加されています。

VIA SMBus 電源管理コントローラ用の viapm(4) ドライバが追加されました。

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

カーネルオプションに `CPU_ATHLON_SSE_HACK` が追加されました。 これは BIOS 側で最近の Athlon CPU にある SSE 機能を有効にする処理が行なわれていない場合にも、 SSE 機能を有効化しようと試みるものです。

いくつかのシステムでは、 BIOS が PCI デバイスの I/O ポートやメモリを動作可能に設定しないため、 利用することができません。 カーネルオプション `PCI_ENABLE_IO_MODES` は それらのデバイスを利用できるようにするために、 FreeBSD がそれらを強制的に有効化するようにします。

### 2.1.2. 起動ローダ関連

`boot2` に、 キーボード操作によって boot が中断されることを防ぐ `-n` オプションが追加されました。

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

an(4) ドライバが ``Home'' WEP 暗号鍵に加えて 新しく Cisco LEAP にも対応しました。 Linux Aironet ユーティリティは現在、 エミュレーション環境下での動作に対応しています。

ARCNET token ベースのネットワークに対する汎用的なサポートが追加されました。

cm ドライバが新しく追加されました。 これは SMC COM90cx6 ARCNET ネットワークアダプタに対応しています。

dc(4) ドライバが VLAN に対応しました。

`GENERIC` カーネルにおける Intel Gigabit Ethernet カード対応は、 wx(4) ドライバではなく em(4) ドライバが使われるようになりました。 wx(4) ドライバは FreeBSD 4.5-RELEASE 以降、保守されていません。

my ドライバが追加されました。 これは Myson Fast Ethernet アダプタおよび Gigabit Ethernet アダプタをサポートするものです。

wi(4) ドライバが Prism II および Prism 2.5 ベースの NIC に対応しました。 また、104/128 ビット WEP 暗号化が Prism カードで動作するようになりました。

wi(4) ドライバが bsd-airtools に対応しました。

xe ドライバがモジュールとして構築できるようになりました。

ネットワーク攻撃や過負荷に対するシステムの耐性を強化するため、 いくつかのネットワークデバイスに準ポーリングモードが実装されました。 このポーリングを有効にするには、 カーネルコンフィグレーションファイルに 次のオプションを追加する必要があります。

        options DEVICE_POLLING
        options HZ=1000 # 必須ではないが、これも付けることを強く推奨

これに加えて sysctl 変数 `kern.polling.enable` を設定すると、ポーリングモードを有効にすることができます。 この時、`kern.polling.user_frac` sysctl 変数は ユーザランド用に予約された CPU 時間の割合を百分率で示します。 ポーリングに対応したデバイスは、現時点で dc(4)、 fxp(4)、 rl(4)、 sis(4) です。 詳細については polling(4) のマニュアルページを参照してください。

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

bridge(4) が複数の完全に独立したブリッジクラスタに対応し、 ブリッジの動的な追加・削除に対する安定性が向上しました。 また、VLAN にも完全に対応しています。

IPsec の IPv4 処理において、 上り SPD チェックが無視されるというバグが修正されました。

ng_eiface netgraph モジュールが新たに追加されました。 Netgraph フックへイーサネットフレームを配送する イーサネットインターフェースとして振舞います。

ng_etf(4) netgraph ノードが新たに追加されました。 これは、異なるフック間のイーサネットパケットを ethertype に応じてフィルタする機能を実現します。

tcp(4) syncache 実装に存在していた、 カーネルパニックを引き起こす可能性のあるバグが修正されました。

TCP 実装は、IP 層のブロードキャストアドレス宛のパケットを 正しく破棄するようになりました。

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

ahc(4) ドライバが 2002 年 4 月 29 日時点の FreeBSD -CURRENT と同期しました。

ata(4) ドライバが 2002 年 5 月 18 日時点の FreeBSD -CURRENT と同期しました。

> Important: ATA タグ付きキューイングを有効にして試験していたユーザ数人から、 問題が生じるという報告がありました。 典型的な症状は起動時に読み込みがタイムアウトしてしまい、 ルートファイルシステムのマウントに失敗するというものです。 これらはマザーボードの ATA コントローラに接続されている ディスクがタグ付きキューイングに対応している場合にのみ現れます。 この機能は特定の ATA ハードディスクのみが対応しているもので、 利用するには `/boot/loader.conf` で `hw.ata.tags="1"` として明示的に有効にする 必要があるため、多くのユーザには影響はないでしょう。

ata(4) ドライバが、 atacontrol(8) を使った ATA RAID の生成、削除、クエリ、再構築に対応しました。

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

新しいカーネルやソフトウェアのインストールといった、 ファイルシステムに負荷のかかる作業を行った直後に システムをシャットダウンした場合、 ファイルシステムを破壊する可能性がある soft updates のバグが修正されました。

### 2.1.7. PCCARD 対応状況

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

ufm ドライバが追加されました。 これは D-Link DSB-R100 USB Radio に対応しています。

via82c686 サウンドドライバが VIA VT8233 に対応しました。

ich サウンドドライバが SiS 7012 チップセットに対応しました。

pcm(4) ドライバが 2002 年 4 月 22 日時点の FreeBSD -CURRENT と同期しました。

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

#### 2.1.9.1. IPFilter

IPFilter が 3.4.27 に更新されました。

#### 2.1.9.2. isdn4bsd

ifpi2(4) ドライバが追加されました。 これは AVM Fritz!Card PCI version 2 コントローラに対応しています。

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

OpenSSH の多重化に関するコードにおいて ``一つ違い (off-by-one)'' バグが修正されました。 このバグは認証されたリモートユーザが sshd(8) に任意のコードをスーパユーザ権限で実行したり、 悪意のある SSH サーバがクライアントユーザの権限で (クライアントユーザの) システム上の任意のコードを実行することが可能です。 詳細はセキュリティ勧告 FreeBSD-SA-02:13 をご覧ください。

zlib には、 メモリを複数回解放するように仕向けることが可能な プログラミング上の誤りが存在します。 FreeBSD が採用している malloc(3)/ free(3) ルーチンは この誤りによるセキュリティ上の弱点はありませんが、 アプリケーションが特殊な細工が施された不正な圧縮データブロックを 受け取った場合、この仕組みを悪用して 機能を正常に働かなくさせたり異常終了させることが可能です。 なお、この zlib のバグは修正済みです。 この問題の回避方法および解決策はセキュリティ勧告 FreeBSD-SA-02:18 をご覧ください。

TCP SYN cache (``syncache'') と SYN cookie (``syncookie'') の実装にあった、 正規の TCP/IP トラフィックによりマシンを クラッシュさせる可能性のあるバグが修正されました。 この問題の回避方法やパッチはセキュリティ勧告 FreeBSD-SA-02:20 をご覧ください。

リモートの攻撃者にターゲットのマシン上のメモリを 枯渇させる可能性のある経路表のメモリリークが修正されました。 回避方法やパッチはセキュリティ勧告 FreeBSD-SA-02:21 をご覧ください。

システムクラッシュを起こす可能性のある memory-mapped I/O のバグが修正されました。 詳細と解決策はセキュリティ勧告 FreeBSD-SA-02:22 をご覧ください。

標準入出力ファイル記述子を操作することによって、 SUID されたプログラムを悪用して不正にファイルを 読み書きすることが可能なセキュリティホールが修正されました。 この問題に関する解決策はセキュリティ勧告 FreeBSD-SA-02:23 をご覧ください。

k5su(8) は (su(1) のように) 権限を行使するユーザが `wheel` グループに 所属していることを必要としないため、予想に反した挙動を示す可能性があります。 このような状況を回避するために、 k5su(8) はデフォルトで (事実上、上記の機能を無効化するために) SUID せずにインストールされるようになりました。 詳細はセキュリティ勧告 FreeBSD-SA-02:24 をご覧ください。

bzip2(1) ユーティリティに、 事前に警告することなく既存のファイルを上書きしたり、 許可属性の競合状態により意図しないユーザにファイルのアクセスを許す といった複数の弱点が発見されました。 この問題は新しい bzip2 の import により修正されました。 詳細はセキュリティ勧告 FreeBSD-SA-02:25 をご覧ください。

TCP SYN cache (``syncache'') の実装において accept filter ( accept_filter(9) 参照) が使用されていた時に リモートの攻撃者がサービス妨害を実現できる可能性のあるバグが修正されました。 より詳しい情報は FreeBSD-SA-02:26 を参照してください。

rc(8) においてシェルのグロブ演算子が不適切な使われ方をしていたため、 `/tmp/.X11-unix` が存在せず、システムを再起動可能な場合、 ユーザが任意のファイルの中身を消すことができるようになっていました。 このバグは修正されています (セキュリティ勧告 FreeBSD-SA-02:27 を参照)。

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

atacontrol(8) が追加されました。 これは ata(4) ドライバの各種制御を可能にします。

cdcontrol(1) が、 ATAPI CDROM ドライブの最大速度を設定する `speed` コマンドに対応しました。

ctags(1) が、ソースファイルに (C++ スタイルの) `//` コメントが使用されている場合でも 壊れたタグファイルを生成しなくなりました。

dump(8) は、進行状況をプロセスタイトルに出力するようになりました。 これは自動化したバックアップを監視する際に有用です。

`/etc/rc.firewall` と `/etc/rc.firewall6` は、 `firewall_type` 変数にルールファイルが設定された場合と 存在しないファイアウォールの種類が指定された場合に ハードコーディングされたルールを追加しなくなりました (この変更の目的は、サイトのファイアウォールポリシが 仮定していることに、影響を与えないようにするためです)。 また、ファイアウォールタイプに `closed` が設定されている場合、 rc.firewall(8) のマニュアルページに記述どおりに動作するようになりました。

ローカルでのカスタマイズや保守の手間を軽減するため、 `/etc/security` の機能が periodic(8) フレームワークにおけるスクリプト群に移動されました。 現在、これらのスクリプトは `/etc/periodic/security/` に置かれています。

ifconfig(8) の `ether` アドレスファミリが より一般的な `link` ファミリに変更されました (`ether` は後方互換性のためにまだ利用できます)。

fsdb(8) が 特定の inode によって割り当てられたブロック一覧を表示するための `blocks` コマンドに対応しました。

ispppcontrol(8) が削除され、 その機能が spppcontrol(8) に統合されました。

k5su(8) がデフォルトで `root` に SUID されたバイナリとしてインストールされなくなりました。 この機能が必要なユーザは、手動で k5su(8) の実行ファイルの許可属性を変更するか、 ソースからのアップグレードの前に `ENABLE_SUID_K5SU=yes` を `/etc/make.conf` に加えてください。

ldd(1) が実行ファイルに加え、 共有ライブラリに対しても使用できるようになりました。

last(1) が `-y` フラグに対応しました。 これは、セッションの開始時刻に年の表示を含めるようにします。

`libstand` が 複数の物理メディアをまたがって分割された 大きなカーネルやモジュール群をロードできるようになりました。

`libusb` の名前が `libusbhid` に変更されました。 これは NetBSD の命名規則に従ったものです。

lpd(8) が `-p` フラグと同じ意味を持ち、よりわかりやすい `-s` フラグを認識するようになりました (これらのフラグは lpd(8) が ネットワーク経由のプリントジョブ用ソケットを開かないようにします)。

lpd(8) に、 新たに `rc` printcap オプションが実装されました。 この bool オプションがリモートホストのプリントキューに指定されると、 `lpr -#`n`` によるユーザ要求に対して、必要な回数分繰り返してデータファイルが lpd(8) により転送されます。

ls(1) が `-h` フラグを受け付けるようになりました。 `-l` フラグと組み合わせると、 ファイルに単位 (訳注: B, KB, MB など) をつけて 3 以下の桁数でファイルサイズを出力させることができます。

m4(1) が、cpp(1) で利用するための `#line` 指示子を出力するように指示する `-s` フラグを受け付けるようになりました。

mergemaster(8) が新たに次の 2 つのフラグに対応しました。 `-p` フラグは ``pre-`buildworld`'' モードを有効にします。 これは、 `buildworld` および `installworld` の システムアップグレードステップを成功させるために不可欠なファイル群を比較するものです。 `-C` フラグは mergemaster(8) がうまく動作した後、 `/etc/rc.conf` で指定されているオプションと `/etc/defaults/rc.conf` で 定義されているデフォルトのオプションを比較します。

ngctl(8) が新しく `write` コマンドに対応しました。 これは指定したフックにデータパケットを送ります。

patch(1) に、標準入力ではなく、 ファイルからパッチを読み込むことを指定する `-i` コマンドラインフラグが追加されました。

pam_ssh(8) モジュールが追加されました。 これは、SSH のパスフレーズと暗号鍵対を使った認証の利用を実現します。 また、このモジュールは ssh-agent(1) を起動することでセッション管理も行ないます。

pr(1) が、端末への出力を一時停止するよう指示する `-f`、`-p` フラグに対応しました。

ps(1) の `-W` オプション (指定したスワップデバイスから情報を抽出する) が削除されました。 このオプションは少し前から使えなくなっていたものです。

reboot(8) は次の起動時のカーネルを指定するための `-k` オプションを受け付けるようになりました。

sshd(8) は S/Key を有効化していないユーザに対して 偽の S/Key チャレンジを出力しないようになりました。 以前の動作は、比較的新しいいくつかの SSH クライアントが FreeBSD システムに接続した時に、ユーザを混乱させる無意味な one-time-password のプロンプトを出力していました。

未完成ですが、 sysinstall(8) が (複数の CD による配布のような) 複数のボリュームを利用するインストールにおいて、正しいボリュームから package を拾い出す機能に対応しました。

tftp(1) と tftpd(8) が IPv6 に対応しました。

USB Human Interface Device を操作するための usbhidctl(1) ユーティリティ追加されました。

uuencode(1) と uudecode(1) に、 出力ファイルを指定する `-o` オプションが追加されました。 uuencode(1) は `-m` フラグを指定すると base64 エンコーディングを行なうようになりました。 また、 uudecode(1) は自動的に base64 ファイルをデコードするようになっています。

watch(8) に`-f` オプションが追加されました。 これは、利用する snp(4) デバイスを指定します。

`*.EUC` 形式の locale 名が `*.euc??` 形式へ改名されました。 たとえば、`ja_JP.EUC` は `ja_JP.eucJP` になります。 これは FreeBSD CURRENT、X11R6 および、他のたくさんの UNIX のバージョンとの locale 名との互換性を向上するものです。

locale 対応が FreeBSD -CURRENT のコードと同期しました。 この変更により strftime(3) の改良、 locale 定義の改訂、 多くのベースシステムプログラムの地域化が改良されており、 さらに `LC_NUMERIC`、 `LC_MONETARY` および `LC_MESSAGES` カテゴリに対応しています。

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

BIND が 8.3.2-T1B に更新されました。

bzip2 が 1.0.2 に更新されました。

Heimdal Kerberos が 0.4e に更新されました。

ISC DHCP クライアントが to 3.0.1RC8 に更新されました

texinfo が 4.1 に更新されました

timezone database が `tzdata2002c` リリースに更新されました。

#### 2.3.1.1. Sendmail

sendmail が 8.12.3 に更新されました。 sendmail(8) は `root` に set-user-ID されたバイナリとしてインストールされなくなりました (現在は smmsp に set-group-ID されています)。 詳細は `/usr/src/contrib/sendmail/RELEASE_NOTES` と `/etc/mail/README` をご覧ください。

この sendmail の更新にともない、 複数の sendmail デーモン (外へ出ていくメールを扱うために必要なもの) は `sendmail_enable` 変数が `NO` に設定されている場合にも、 rc(8) によって起動されるようになりました。 sendmail を完全に無効化するには、 `sendmail_enable` を `NONE` に設定しなければなりません。 また、別の MTA を利用するシステムでは `mta_start_script` 変数を用いて異なる起動スクリプトを指定することが可能です (詳細は rc.sendmail(8) をご覧ください)。

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

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

### 2.3.2. Ports/Packages Collection

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

        XFREE86_VERSION=3

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

XFree86 4.2.0 は sysinstall(8) が対応する X Window System のデフォルトのバージョンになりました。 sysinstall(8) は XFree86 を標準のバイナリパッケージセットとしてインストールするため、 pkg_info(1) のような通常の package ユーティリティを使って それらのコンポーネントを調べたり操作することが可能です。

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

以前の FreeBSD リリース版からのアップグレードを行なうには、 主に次の 3 つの方法があります。

- sysinstall(8) のバイナリアップグレード機能を使う方法。 おそらくこの方法が最も時間のかからない方法なのですが、 これは FreeBSD のインストール時に 特別なコンパイルオプションを指定していないことを前提としています。

- FreeBSD を完全に再インストールする方法。 技術的にはアップグレード手段の一つとは言えませんし、 `/etc` の内容を手動で退避・復元したりする必要があるなど、 大抵の場合はバイナリアップグレード機能を使うより手間がかかります。 しかし、ディスクのパーティション分割を変更したい (とか、 変更しなければならない) 場合などには便利な方法でしょう。

- `/usr/src` のソースコードから構築する方法。 この手段は非常に柔軟な対応が可能ですが、 ディスク空間と時間、そして専門的なノウハウを必要とします。 また、非常に古いバージョンの FreeBSD からのアップグレードは問題が発生することが多いため、 そのような場合にはバイナリアップグレード、 もしくは完全な再インストールを行なった方が効果的でしょう。

なるべくアップグレードを始める前に詳細について `INSTALL.TXT` をご覧ください。 ソースからアップグレードする場合は `/usr/src/UPDATING` にも目を通す必要があります。

最後になりますが、FreeBSD の -STABLE もしくは -CURRENT ブランチを追いかけるために用意された手段の一つをとりたいと考えているなら、 FreeBSD ハンドブックの ``-CURRENT vs. -STABLE'' の節をご覧になるようお願いします。

> Important: もちろん言うまでもないことですが、 FreeBSD のアップグレードは、データと設定ファイルを すべて バックアップした後に行なうべきです。

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

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

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

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