FreeBSD/i386 4.5-PRERELEASE リリースノート

FreeBSD プロジェクト

$FreeBSD: src/release/doc/ja_JP.eucJP/relnotes/common/new.sgml,v 1.5.2.5 2002/01/03 17:42:22 hrs Exp $

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


Table of Contents
1. はじめに
2. 更新情報
3. 以前の FreeBSD リリース版からのアップグレード

1. はじめに

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

リリースノートが対象としているこの snapshot は, 4-STABLE 開発ブランチの 4.4-RELEASE と, リリースが予定されている 4.5-RELEASE の中間点に対応します. このブランチにおける構築済みのバイナリ snapshot は ftp://stable.FreeBSD.org/pub/FreeBSD/ から入手可能です.


2. 更新情報

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

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


2.1. カーネルの変更点

amdpm(4) ドライバが追加されました. これは AMD 756 チップセットのシステム監視機能へのアクセスを提供します.

CDROM 用のブートストラップユーティリティ cdboot が新しく追加されました. これは El Torito bootable CDROM 規格を完全に実装していない BIOS でも, CDROM からの起動を可能にするためのものです. また, この起動ローダは ``エミュレーションなし'' のモードで起動に対応しているため, 起動可能 CDROM にエミュレーションモード用のフロッピディスクイメージを入れる必要は なくなっています.

新しいカーネルオプション KVA_SPACE が追加されました. これは, カーネルの仮想アドレス空間の大きさを再設定できるようにするためのものです.

loader(8) に新しく bzip2 で圧縮されたカーネルやモジュールをロードする機能が追加されました (ただしこれはオプション機能であり, コンパイル時に有効化する必要があります. また, 標準では無効になっています).

FreeBSD 起動ローダに新しく -p オプションが追加されました. これはカーネル起動時におけるデバイス認識の際に, メッセージが一行出力されるたびにカーネルを一時停止させるものです.

FreeBSD の Linux バイナリ互換機能が emulators/linux_base-7 (RedHat 7.X エミュレーション) の実現に必要なカーネル機能に対応しました.

カーネルの設定パラメータ MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, SGROWSIZ は, すべてローダからも設定することが可能になりました.

カーネル設定パラメータ maxusers0 を指定した場合, 起動時に自動的に適切な値が (搭載メモリ量に応じて 32 から 512 の間で) 設定されるようになりました. すべてのアーキテクチャの GENERIC カーネルにおいて, この 0 が標準値になっています.

pmc ドライバが追加されました. これは NEC PC-98NOTE の電源管理コントローラに対応しています.

カーネルのロードアドレスがシンボルテーブルに格納されるようになり, ハードコードされたさまざまな定数が削除されました. これにより, 異なるアドレスでコンパイルされたカーネルに対しても ps(1) が正しく動作可能になっています.

巨大なプロセス (あるいは非常に多数のプロセス) のコアダンプの際に, 長い間マシンが停止してしまう症状が起こらなくなりました.

カーネルの状態を保持するためにプロセスごとに割り当てられるメモリページの数が 2 から 3 に増加しました. これにより, カーネルスタックのオーバフロー (および, その後ろにあるプロセス固有のデータ構造体の破壊) の発生が起こりにくくなっています.

システムの負荷計算において, 負荷の測定間隔にいくらか揺らぎを持たせるような変更が行なわれました. これは, 定期的に実行されるプロセスとの同期を防ぐためのものです.

デバッグ対応カーネルをモジュールと一緒に (つまり makeoptions DEBUG=-g を指定して) 構築した場合は, 完全を期すためにモジュールの構築もデバッグ対応を有効にして行なわれるようになりました. この影響により, モジュールをデバッグ対応カーネルと一緒に構築・インストールすると 以前よりも大きいディスク空間を占有するようになっています.


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

an(4) ドライバが新しく ``monitor'' モードに対応しました. ancontrol(8)-M オプションを指定することで, このモードに設定することが可能です.

bge(4) ドライバが追加されました. これは 3Com 3c996-T, SysKonnect SK-9D21, SK-9D41 および Dell PowerEdge 2550 サーバの内蔵ギガビットイーサネット NIC などに使われている Broadcom BCM570x ファミリのギガビットイーサネットコントローラ用ドライバで, 送信側における TCP/IP チェックサムの負荷低減機能, ジャンボフレーム, VLAN タグ挿入・削除機能に加え, 割り込み低減機能に対応しています.

de(4) ドライバは従来の受信ユニットに優先度を与えるという方式ではなく, 21143 の送受信ユニット間でラウンドロビンの調停を行なうようになりました. これにより, 高負荷時の転送速度において 10-15% 程度の性能向上が達成されています.

dgm ドライバが FreeBSD -CURRENT の変更を受けて更新されました.

em(4) ドライバが新しく追加されました. これは Intel 82542, 82543, 82544 ギガビット Ethernet コントローラチップに対応します. また, このドライバは送信側・受信側双方におけるチェックサムの負荷低減機能, 82543 および 82544 ベースのアダプタにおける巨大フレーム (jumbo frame) 機能にも対応しています.

faith(4) デバイスがロード・アンロード可能になり, クローニング機能に対応しました.

fxp(4) ドライバが新しく Intel のロード可能マイクロコードに対応しました. これにより受信側の割り込みコーリス機能 (訳注: interrupt coalescing; 割り込みの取りこぼしを防ぐ機能) やパケット結合機能など, NIC が対応している機能を利用できるようになります. この機能は ifconfig(8)link0 オプションを指定することで有効になります.

gx(4) ドライバが新しく追加されました. これは Intel 82542 および 82543 ギガビット Ethernet コントローラチップをベースにした, 光ファイバ, メタル線の両方のタイプの NIC に対応しています. 82542 と 82543 は両方とも VLAN タグ挿入機能に対応しており, 82543 はさらに TCP/IP チェックサムの負荷低減機能を備えています.

sbni ドライバが新しく追加されました. これは ISA および PCI バス版の 2 点間通信インターフェイス (point-to-point communications interface) である Granch SBNI12 シリーズに対応しています.

sis(4) ドライバが VLAN に対応しました.

vlan(4) デバイスがロード・アンロード可能になり, クローニング機能に対応しました.

wx(4) ドライバは公式に保守されないことが決定し, 廃止されました. Intel Pro/1000 ギガビット Ethernet インターフェイスを利用する場合は em(4) もしくは gx(4) ドライバを使ってください ( em(4) ドライバは i386 アーキテクチャでのみ動作します).

xl(4) ドライバが新しく, 送信側・受信側双方における TCP/IP チェックサムの負荷低減機能に対応しました. これは, この機能に対応している 3C905B, 3C905C, 3C980C などの NIC に対して有効です.

xl(4) ドライバにおいて, 統計情報のオーバフロー割り込みの処理に関連するバグが修正されました. これはパケットの送受信速度が中から高程度になった時に, 処理速度が低下する原因となっていたものです.

インターフェイス一つ一つに用意される ifnet 構造体に, ネットワークインターフェイスが対応している機能と, どの機能が有効化されているかを示す部分が追加されました. また ifconfig(8) を使って, これらの情報を表示することが可能になっています.

インターフェイス一つ一つに用意される if_inaddr 構造体が, 線形リストからハッシュテーブルに変更されました. これにより, 多数の別名 IP アドレスを持っているホストの性能が向上しています.

特定のネットワークデバイス (特に dc(4) および sis(4)) においてパケット転送の性能が向上しました. これは不必要なバッファのコピーの削除によるものです.


2.1.3. ネットワークプロトコル

bridge(4) および dummynet(4) に対していくつかバグ修正が行なわれ, ロード可能モジュールとして利用できるようになりました.

ある条件下でスループットが低下するという, TCP NewReno 実装に存在していたバグが修正されました.

sysctl 変数 net.inet.tcp.sendspace および net.inet.tcp.recvspace で制御可能な TCP バッファサイズの標準値が, それぞれ 32K および 64K に増やされました. このバッファサイズの従来の標準値は両方とも 16K でした. ネットワークの混雑を緩和するため, sysctl 変数 net.inet.tcp.local_slowstart_flightsize の標準値は無限大から 4 に変更されています.

TCP 実装において, 送信側で 0 のウィンドウサイズを受けとった場合, 接続が停止状態となってしまう可能性のあるバグが修正されました.

FreeBSD の TCP 実装に, 未処理の受信 SYN セグメントに対するキャッシュが実装されました. 受信される SYN セグメントは TCP の 3-way ハンドシェイクが完了するまでキャッシュ内のエントリに格納され, ハンドシェイクが完了した時点で, 通常の接続用のメモリを割り当てます. また, TCP 初期シーケンス番号 (ISNs) をクッキー (cookies) として用いることで, キャッシュのエントリを削除した後も 対応する ACK の受理を可能にしています. この ``syncache'' および ``syncookies'' と呼ばれる機能は, TCP ベースのサービス妨害攻撃 (Denial of Service Attack) に対する耐性を向上させます. この機能の開発は DARPA と NAI Labs の支援の元に行なわれました.


2.1.4. ディスク・記憶装置

aac(4) ドライバが FreeBSD -CURRENT の変更を受けて更新されました. この更新には, アダプタの発行するコマンドの正しい処理, ディスクデバイスの脱着, クラッシュダンプ機能, CLI 管理に必要な ioctl(2) コマンドの追加が含まれています.

ciss ドライバが新しく追加されました. これは SCSI-3 共通インターフェイス (Common Interface for SCSI-3 Support) を使ったデバイスに対応するものです. 対応デバイスには, Compaq SmartRAID 5* ファミリの RAID コントローラ (5300, 532, 5i) があります.

新しく isp(4) ドライバが追加されました. これは Qlogic 2300, 2312 Optical Fibre Channel PCI カードに対応しています.

ncv, nsp, stg の各 SCSI ドライバが, モジュールとしてロード可能になりました.


2.1.5. ファイルシステム

FFS ディレクトリレイアウト優先度アルゴリズム (the directory layout preference algorithm; dirprefs) が, ディレクトリブロックをディスク上に分散させるのではなく, 関連するディレクトリブロックをなるべくグループ化しようと試みるように変更されました. これにより, FreeBSD Ports ツリーのように大規模なディレクトリ階層をたどる操作の速度が劇的に向上しています. この変更は新規ディレクトリに対しても自動で透過的に作用します.

仮想メモリサブシステムは, 標準で UFS ディレクトリメモリ要求を利用するようになりました (この動作は sysctl 変数 vfs.vmiodirenable で制御することが可能です).

SCSI CDROM からルートファイルシステムをマウントできない原因と なっていたバグが修正されました (ATAPI CDROM はすでに対応済みです).

ハッシュをベースに大規模ディレクトリエントリ検索の最適化を実装した UFS_DIRHASH が, GENERIC カーネルの標準設定で有効化されるようになりました.

ファイルシステムのコードに存在する多数のバグが修正されました. それらはファイルシステム試験ツールによって発見されたもので (主に NFS の利用と関連する) ある条件下で, データの損壊やカーネルパニックを引き起こす可能性を持っていました.


2.1.6. PCCARD 対応状況

FreeBSD CURRENT の pcic(4) ドライバから, たくさんの機能が統合されました. それにはバグ修正, ToPIC ベースのラップトップへの対応の強化, いくつかのコントローラにおける 3.3V カード対応などが含まれます.


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

MP3 プレーヤ Diamond Rio シリーズ用の urio(4) ドライバが新しく追加されました (このドライバのマニュアルページだけはなぜか FreeBSD 4.3-RELEASEは に追加されていました).


2.1.8. 寄贈ソフトウェア

IPFilter が IPv6 に対応しました.


2.1.8.1. isdn4bsd

isdnphone(8) に新しく -k オプションが追加されました. これはキーパッドを使って構内交換機 (PBX) や交換局にメッセージを送るためのものです.

isic(4) ドライバが, 新しく Compaq Microcom 610 ISDN ISA PnP カードに対応しました.


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

FreeBSD 4.4-RELEASE では, バグによるセキュリティホールを避けるために ユーザごとにある ~/.login.conf ファイルは 無効になっていましたが, バグが修正されたため, 現在はこの機能が有効になっています.

UseLogin yes が設定されている場合, ユーザが高い権限で任意のコードを実行できてしまうという OpenSSH にあったセキュリティホールへの対応が行なわれました. ちなみに, この設定項目の標準値は UseLogin no です (セキュリティ勧告 FreeBSD-SA-01:63 参照).


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

arp(8) が, 各 ARP エントリに対応するインターフェイス名を表示するようになりました.

cat(1) が新しく UNIX ドメインソケットの読み出しに対応しました.

compat4x 互換機能の配布に 含まれる libcrypto.so.1libssl.so.1 が, librsaUSA.so および librsaINTL.so ライブラリに依存しないものになりました. この変更により, FreeBSD 4.1-RELEASE 以前の FreeBSD 向けに構築されたバイナリに対する互換性が向上しています.

edquota(8) に新しいオプション -f が追加されました. これは (-p で指定された) quota プロトタイプの適用される範囲を, ある一つのファイルシステムに制限するためのものです.

find(1) のオプション -[acm]time において, さまざまな時間単位が使えるようになりました.

fmt(1) が書き直されました. この書き換えにより, 以前のものに含まれていた多数のバグが修正されています.

ftpd(8) に新しいオプション -o および -O が追加されました. 前者はすべてのユーザに対して, 後者は guest ユーザに対して RETR コマンドを無効にします. -A オプションと適切なファイル許可属性を組み合わせることで, アカウントを持たないユーザからのアップロードを受け付ける, 比較的安全な anonymous FTP サーバを構築することが可能です.

groups(1) および whoami(1) のシェルスクリプトが必要なくなりました. これらの機能は完全に id(1) に統合されています.

ipfw(8) は, 標準で動的なファイアウォールルールを表示しないようになりました. 動的なルールは -d オプションを指定すると表示されます. また, -e オプションは, 無効になった動的なルールを表示します.

ipfw(8) に新しいファイアウォールルール limit が追加されました. これはアドレス・ペアの間のセション数を制限するためのものです.

keyinfo(1) が Perl スクリプトではなく, C プログラムになりました.

libfetch が, FreeBSD CURRENT に含まれているものと同じになりました. これには, コールバック認証機能への対応が含まれています.

libstand が新しく, bzip2 で圧縮されたファイルが含まれるファイルシステムに対応しました.

lpd(8) の制御ファイルに新しく, o という型のプリントファイル動作指定が追加されました. これは MacOS 10.1 で生成した PostScript ファイルを印刷に対応したものです.

netstat(1) に, 統計情報をリセットする新しいオプション -z が追加されました.

netstat(1) に, アドレスを数字で, ポート番号をシンボルで表示する新しいオプション -S が追加されました.

newfs(8) の設定に含まれる 1 グループに対するシリンダ数 (cylinders/group) の標準が, 現在のファイルシステムパラメータに設定可能な最大値に設定されるように なりました. 以前はこの標準値が 16 に固定されており, 現在は -c オプションで値を設定することが可能になっています. この変更には, fsck(8) の性能向上と断片化 (fragmentation) の低減という効果があります.

newfs(8) で新規にファイルシステムを構築する際の ブロックとフラグメント長の標準値が, それぞれ 16384, 2048 バイトに変更されました (従来の標準値は 8192, 1024 バイト). この変更により多少ディスクの利用率が犠牲になるものの, 大抵の場合において性能の向上が期待できます.

newsyslog(8) bzip2(1) を使ってログファイルを圧縮する機能が追加されました.

新しく行番号フィルタプログラム nl(1) が追加されました.

pciconf(8) に新しいオプション -v が追加されました. これは -l と共に指定された場合に, 認識されたデバイスのベンダ/デバイス情報を表示します. 標準のベンダ/デバイス情報データベースは /usr/share/misc/pci_vendors に置かれています.

ping(8) に新しいオプション -A が追加されました. これは, パケットが失われた時にビープ音が鳴るようにするものです.

route(8) で間接経路を変更する際, 変更後の経路が gateway 経路と同じ場合により多くの情報を表示するようになりました.

route(8)net/bits ではない新しい記法 host/bits に対応しました. これは netstat(1) と互換性を高めるためのものです.

route(8) が ``プロキシ専用'' の published ARP エントリを作成できるようになりました.

route(8)add コマンドに, 新しく -ifp 修飾子と -ifa 修飾子 が追加されました.

send-pr(1) に新しいオプション -a が追加されました. これは障害報告の Fix: セクションにファイルを挿入するために使います.

sh(1) において効率を改善するため, test が組み込みコマンドとして実装されました.

sysctl(8) に新しいオプション -e が追加されました. これは変数名と値の区切りを : ではなく = にするもので, sysctl(8) の出力を sysctl(8) に再度入力させるような場合に有用です.

sysinstall(8) に対して, インストール中に KLD をロードする機能が新しく追加されました.

sysinstall(8) で新規作成されるファイルシステムすべて (ただしルートファイルシステムを除く) において, 標準で Soft Updates が有効化されるようになりました.

syslogd(8) に新しく, 利用可能なすべてのアドレスを使うのではなく, 指定アドレスのみに bind する機能が追加されました. 有効にするには -b オプションを使います.

従来 vnconfig(8)-f オプションを指定した場合は 16 デバイスまでしか設定することができませんでしたが, この制限がなくなりました.

wall(1) に新しいオプション -g が追加されました. これは指定されたグループのユーザすべてにメッセージを送ります.


2.3.1. 寄贈ソフトウェア

FreeBSD と一緒に配布されている IPFilter に, ipfs(8) プログラムが追加されました. これは NAT エントリおよびステートフルルールの処理用に作成される状態情報をディスクに保存し, 再起動後に復元することを可能にするものです.

NTP プログラムスイートがバージョン 4.1.0 に更新されました.

OpenSSH が バージョン 2.9 に更新されました. これには新しい 2 つのプログラム sftp(1) ssh-keyscan(1) が含まれています. また, 既存の SSH セションの暗号鍵変更や ssh-agent(1) が新たに DSA 暗号鍵の転送に対応したこと, 実験的な SOCKS4 プロキシ機能といった さまざまな改良が ssh(1) に追加されています.

Note: /etc/ssh/ssh_config の標準設定は Protocol 1,2 のままになっています. FreeBSD -CURRENT の標準設定は Protocol 2,1 です.



tcsh がバージョン 6.11 に更新されました.

smbfs ユーザランドユーティリティのバージョン 1.4.3 が統合されました. smbutil(1) および mount_smbfs(8) はベースシステムに含まれており, net/smbfs の port を使う必要はなくなっています. mount_smbfs(8) は, たとえ LIBMCHAIN および LIBICONV がカーネルに組み込まれていなくとも, 自動的に smbfs モジュールをカーネルにロードすることに注意してください.

タイムゾーンデータベースが tzdata2001d リリースのものに更新されました.


2.3.1.1. CVS

CVS がバージョン 1.11.1p1 に更新されました.

cvs(1) に新しいオプション -T が追加されました. これはリポジトリから砂場 (sandbox) にある CVS/Template ファイルを更新するためのものです.

cvs(1) diff に新しいオプション -j が追加されました. これはブランチタグのリビジョンとの比較を実現します.


2.3.2. Ports/Packages Collection

pkg_create(1) に新しく -b オプションが追加されました. これはローカルにインストールされた package から package ファイルを生成します.


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

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

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

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

Important: もちろん言うまでもないことですが, FreeBSD のアップグレードは, データと設定ファイルを すべて退避させた後に行なうべきです.


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

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

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

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