「はじめに」
この記事はFreeBSD 15.1-RELEASE Release Notesの日本語訳です。翻訳時点では、普段使っている(GhostBSDが依存している)FreeBSDのバージョンが15.0-RELEASEのようですので、訳の正確さは保証できません。なので、「ふつーはそう訳さねーよ」という指摘は大歓迎です。
また、恒例のお断りですが、この文章の内容は、筆者が所属している会社・団体とは一切関わりがありません。いわゆる「自主的な研究の成果の発表」というものです。
では、以下、翻訳です。
要約
FreeBSD 15.1-RELEASE のリリースノートには、15-STABLE 開発ブランチにおけるオペレーティングシステムの変更点の概要が記載されています。この文書では、前回のリリース以降に発行された関連するセキュリティ勧告やエラッタ、およびエコシステムにおける重要な変更点を列挙しています。
はじめに
この文書では、FreeBSD 15.0-RELEASE 以降の変更点について詳しく説明します。
インストール手順については、FreeBSDハンドブックのFreeBSD のインストールの章を参照してください。
アップグレード手順については、FreeBSD 15.1-RELEASE アップグレード手順を参照してください。
サポート対象のハードウェアに関する情報については、FreeBSD 15.1-RELEASE ハードウェア互換性リストを参照してください。
すべての読者の皆様には、インストールまたはアップグレードを行う前に、FreeBSD 15.1-RELEASE エラッタを参照することをお勧めします。このエラッタ文書には、既知のバグ、セキュリティ勧告、ドキュメントの修正など、リリースサイクルの終盤に判明した情報が記載されています。
セキュリティおよびエラッタ
このセクションでは、15.0-RELEASE以降のセキュリティ勧告およびエラッタ通知を一覧表示します。
セキュリティ勧告
| 勧告 | 日付 | 件名 |
|---|---|---|
| FreeBSD-SA-25:09.netinet | 2025年10月22日 | SO_REUSEPORT_LB により、UDP ソケットの connect(2) が正常に動作しなくなる |
| FreeBSD-SA-25:10.unbound | 2025年11月26日 | local-unbound サービスにおけるキャッシュポイズン |
| FreeBSD-SA-25:12.rtsold | 2025年12月16日 | ND6 ルータアドバタイズメントを介したリモートコード実行 |
| FreeBSD-SA-26:01.openssl | 2026年1月27日 | OpenSSL における複数の脆弱性 |
| FreeBSD-SA-26:03.blocklistd | 2026年2月10日 | blocklistd(8) のソケットリーク |
| FreeBSD-SA-26:05.route | 2026年2月24日 | ルーティングソケットを介したローカル DoS および権限昇格の可能性 |
| FreeBSD-SA-26:06.tcp | 2026年3月26日 | TCP: リモートから悪用可能な DoS ベクトル (mbufリーク) |
| FreeBSD-SA-26:07.nvmf | 2026年3月26日 | ヌルポインタ参照によるリモートサービス拒否 |
| FreeBSD-SA-26:08.rpcsec_gss | 2026年3月26日 | RPCSEC_GSSパケットの検証を介したリモートコード実行 |
| FreeBSD-SA-26:09.pf | 2026年3月25日 | pf が特定のルールを黙って無視する |
| FreeBSD-SA-26:10.tty | 2026年4月21日 | TIOCNOTTY ハンドラにおけるカーネルの use-after-free バグ |
| FreeBSD-SA-26:11.amd64 | 2026年4月21日 | pmap_pkru_update_range() における大容量ページの処理の欠落 |
| FreeBSD-SA-26:12.dhclient | 2026年4月29日 | 悪意のある DHCP オプションを介したリモートコード実行 |
| FreeBSD-SA-26:13.exec | 2026年4月29日 | execve() によるローカル特権昇格 |
| FreeBSD-SA-26:14.pf | 2026年4月29日 | pf が細工された SCTP パケットを解析する際にスタックオーバーフローを起こす可能性 |
| FreeBSD-SA-26:15.dhclient | 2026年4月29日 | dhclient における、リモートから引き起こされる可能性のあるヒープの範囲外書き込み |
| FreeBSD-SA-26:16.libnv | 2026年4月29日 | select() ファイル記述子セットのオーバーフローによるスタックオーバーフロー |
| FreeBSD-SA-26:17.libnv | 2026年4月29日 | libnv におけるヒープオーバーフロー |
| FreeBSD-SA-26:18.setcred | 2026年5月20日 | setcred によるスタックバッファオーバーフロー (2) |
| FreeBSD-SA-26:19.file | 2026年5月20日 | ファイル記述子システムコールによるカーネルのuse-after-free |
| FreeBSD-SA-26:20.fusefs | 2026年5月20日 | FUSE_LISTXATTRにおけるヒープオーバーフロー |
| FreeBSD-SA-26:21.ptrace | 2026年5月20日 | ptrace(PT_SC_REMOTE) における検証の欠如 |
| FreeBSD-SA-26:22.libcasper | 2026年5月20日 | select(2) ファイル記述子の設定オーバーフローによるスタックオーバーフロー |
| FreeBSD-SA-26:23.bsdinstall | 2026年5月20日 | インストーラのWi-Fiアクセスポイントスキャンを介したリモートコード実行 |
| FreeBSD-SA-26:24.cap_net | 2026年5月20日 | libcap_net(3) における制限リストの不適切な操作 |
| FreeBSD-SA-26:25.thr | 2026年6月9日 | thr_kill2(2) における権限チェックの欠如 |
| FreeBSD-SA-26:26.ktls | 2026年6月9日 | KTLS 受信パス経由の任意のファイル上書き |
| FreeBSD-SA-26:27.sound | 2026年6月9日 | sound(4) の mmap パスにおける複数の脆弱性 |
| FreeBSD-SA-26:28.capsicum | 2026年6月9日 | sigqueue(2) における機能モードの制限の欠如 |
| FreeBSD-SA-26:29.ip6_multicast | 2026年6月9日 | IPV6_MSFILTER ソケットオプションハンドラにおける Use-after-free の脆弱性 |
| FreeBSD-SA-26:30.linux | 2026年6月9日 | setugid バイナリの Linuxulator による実行における欠陥 |
| FreeBSD-SA-26:31.arm64 | 2026年6月9日 | Arm CPU のエラッタにより、ページテーブルの権限変更がバイパスされる可能性 |
| FreeBSD-SA-26:32.elf | 2026年6月9日 | procctl 経由での setuid 実行ファイルに対する ASLR バイパス (2) |
| FreeBSD-SA-26:33.unbound | 2026年6月9日 | unbound に複数の脆弱性 |
| FreeBSD-SA-26:34.vt | 2026年6月9日 | vt(4) の CONS_HISTORY ioctl における整数オーバーフロー |
| FreeBSD-SA-26:35.openssl | 2026年6月9日 | OpenSSL に複数の脆弱性 |
| FreeBSD-SA-26:36.ldns | 2026年6月9日 | ldns スタブリゾルバにおける応答の検証不備 |
エラッタのお知らせ
| エラッタ | 日付 | 件名 |
|---|---|---|
| FreeBSD-EN-25:19.zfs | 2025年12月16日 | 特権のないユーザーによるカーネル NULL ポインタの参照 |
| FreeBSD-EN-25:20.vmm | 2025年12月16日 | bhyve(8) の PCI パススルーにおけるリグレッション |
| FreeBSD-EN-26:01.devinfo | 2026年1月27日 | devinfo の出力フォーマットにおけるリグレッション |
| FreeBSD-EN-26:02.arm64 | 2026年1月27日 | arm64 の SVE シグナルコンテキストの位置ずれ |
| FreeBSD-EN-26:03.vm | 2026年1月27日 | ページフォールトハンドラがメモリをゼロクリアできない |
| FreeBSD-EN-26:04.arm64 | 2026年2月10日 | arm64 上でプロセスのコアダンプを行うとカーネルパニックが発生する |
| FreeBSD-EN-26:05.vm | 2026年4月21日 | ページフォールトハンドラがメモリをゼロクリアできない |
| FreeBSD-EN-26:06.timerfd | 2026年4月21日 | 周期的な timerfd(2) タイマーが誤った結果を生成する可能性がある |
| FreeBSD-EN-26:07.pkgbase | 2026年4月21日 | 新しいバージョンの libucl では、ベースパッケージのビルドに失敗する |
| FreeBSD-EN-26:08.pf | 2026年4月29日 | 自動生成テーブルにおける重複ルールの検出が不正確 |
| FreeBSD-EN-26:09.tzdata | 2026年4月29日 | タイムゾーンデータベース情報の更新 |
| FreeBSD-EN-26:10.amd64 | 2026年4月29日 | INVLPGB を使用する AMD システムにおける TLB 無効化のバグ |
| FreeBSD-EN-26:11.dhclient | 2026年5月1日 | dhclient(8) のリース検証が厳しすぎる |
| FreeBSD-EN-26:13.freebsd-update | 2026年5月20日 | freebsd-update(8) が生成されたファイルのマージを試みる |
| FreeBSD-EN-26:14.syslogd | 2026年6月9日 | syslogd(8) casper_ttymsg() におけるメモリリーク |
| FreeBSD-EN-26:15.openssl | 2026年6月9日 | OpenSSL を 3.0.20 および 3.5.6 に更新 |
ユーザーランド
この節では、ユーザーランドアプリケーション、コミュニティ提供のソフトウェア、およびシステムユーティリティに対する変更点と追加機能について説明します。
システムのパッケージングに関する変更点
この節の変更点は、FreeBSD 15.0 以降でサポートされている、ベースシステムパッケージ(pkgbase と呼ばれることもあります)を使用してインストールされたシステムにのみ影響します。
OpenPAM は、新しい FreeBSD-pam パッケージに移行しました。FreeBSD-set-minimal または FreeBSD-set-minimal-jail パッケージセットがインストールされているシステムでは、このパッケージが自動的にインストールされるため、ユーザーによる操作は不要です。いずれのミニマルセットもインストールされていないシステムで、login(1) や sshd(8) などで PAM 認証をサポートする必要がある場合は、新しいパッケージをインストールすることが必要です。
zstd(1) ユーティリティを含む Zstandard は、新しい FreeBSD-zstd パッケージに移行しました。FreeBSD-set-minimal または FreeBSD-set-minimal-jail パッケージセットがインストールされているシステムでは、このパッケージが自動的にインストールされるため、ユーザーによる操作は不要です。その他のシステムで Zstandard のサポートが必要な場合は、このパッケージを手動でインストールすることが必要です。
パッケージからインストールされたシステムでは、パッケージデータベースの不整合を防ぐため、installworld および installkernel ターゲットがブロックされるようになりました。ソースベースのアップグレードを実行したいユーザーは、freebsd-base(7) に記載されている手順に従って、まずベースシステムのパッケージの登録を解除することが必要です。
ユーザーランドの設定変更
us.intl.acc.kbd キーボードレイアウトがインストールされ、vt(4) コンソールで使用可能になりました。
Lenovo製ノートPCのキーボードキーマップがインストールされ、vt(4)で利用可能になりました。
リリースイメージにおけるrootユーザーおよび「freebsd」ユーザーのデフォルトシェルが、csh(1)からsh(1)に変更されました。
rc.subr は、rc.conf ディレクティブを介してサービスの監査ユーザーを設定できるようになりました。これにより、管理者はサービスの起動時に監査ユーザー ID を上書きできるようになり、特権のないユーザーが sudo 経由でサービスを再起動する場合など、予期しない監査ログの帰属を防ぐことができます。(Modirum MDPay、Klara, Inc.による後援)
ユーザーランドアプリケーションの変更
find(1) ユーティリティは、拡張属性に基づいてファイルを検索するための -xattr および -xattrname オプションをサポートするようになりました。-xattr オプションは、いずれかの拡張属性を持つファイルに一致し、-xattrname オプションは、特定の属性名(オプションで「user:」や「system:」などの名前空間を接頭辞として付けることも可能)によるフィルタリングを可能にします。(Klara, Inc.による後援)
newfs(8) ユーティリティは、GEOM ジャーナリングとソフトアップデートの同時使用を防止するようになりました。GEOM ジャーナリングが要求された場合、ソフトアップデートは自動的に有効化されず、両方の機能を明示的に要求するとエラーが発生します。
tr(1) ユーティリティは、Unicode モードにおいて CCLASS ([:alpha:]) 文字クラスを正しく処理するようになり、アルファベット文字の大文字・小文字変換処理が修正されました。
diff3(1) ユーティリティのマージモードが GNU diff3 と互換性を持つようになり、他のシステムやツールとの相互運用性が向上しました。
pwd(1) ユーティリティは、POSIX のセマンティクスに従い、デフォルトで -L (論理) オプションを使用するようになりました。論理モードでは、ドットまたはドットドットを含むパスは拒否されます。
bectl(8) に -E フラグが追加され、現在実行中の環境を複製することなく、空のブート環境を作成できるようになりました。これにより、ユーザーは手動でのインストールや設定のために、新しい独立したブート環境を作成できるようになりました。
daemon(8) ユーティリティは、新しいオプションを使用して出力ファイルモードを指定できるようになりました。これにより、root 以外のログ収集者がログファイルにアクセスできるようになり、ログローテーションツールとの互換性が向上しました。
newfs(8) ユーティリティに、ソフトアップデートおよびソフトアップデートジャーナリングを無効にする -u フラグが追加され、UFS2 ファイルシステムのデフォルトのソフトアップデートを無効にする方法が提供されました。(Klara, Inc.、NetApp, Inc.による後援)
zfs(8) の clone コマンドは、新しく作成されたデータセットの自動マウントを防ぐ -u オプションを受け入れるようになりました。これにより、ユーザーはクローンを作成しても直ちにマウントされることなく、スクリプト作成時や、後で使用するためにデータセットを準備する際に役立ちます。
zdb(8) ユーティリティに、-r オプションと組み合わせてオブジェクト ID を直接指定するための -O オプションが追加され、パス名ではなくオブジェクト ID によるファイルのコピーが可能になりました。
監査ポリシーを管理するための setaudit(8) ユーティリティが追加されました。(Modirum MDPay、Klara, Inc.による後援)
ipfs(8) ユーティリティはデフォルトで無効化され、カーネルでのサポートはオプションとなりました。ipfs に依存するユーザーは、カーネル設定で明示的に有効にすることが必要です。
sockstat(1) ユーティリティは、デフォルトで UDP-Lite エンドポイントを表示するようになりました。
dtrace(1) ユーティリティは、arm64 アーキテクチャで ustackdepth 変数をサポートするようになりました。これにより、このアーキテクチャ上の DTrace スクリプトでユーザー空間のスタック深さを照会できるようになりました。
DTrace カーネル診断メッセージでは、より直感的な接頭辞「dtrace」が使用されるようになり、ログ検索の一貫性が向上しました。
bsdinstall スクリプトは、デフォルトで pkgbase のインストールを実行するようになりました。コンポーネントは COMPONENTS 変数で指定されますが、DISTRIBUTIONS が定義されている場合は、従来の distset インストールも引き続き利用可能です。(ConnectWiseによる後援)
cron(8) は、ユーザージョブに対して完全な PAM セッションライフサイクルを実装するようになりました。これにより、PAM モジュールはジョブ実行前に認証情報とセッションを確立できるようになります。PAM 環境変数はジョブプロセスにエクスポートされますが、ユーザークロンタブ変数が優先されます。デフォルトの動作を変更せずにセッションサポートを有効にするため、/etc/pam.d/cron にデフォルトの pam_permit.so セッションルールが追加されました。
提供されたソフトウェア
NSS 3.123.1 に基づいて認証局バンドルが再生成され、新しい信頼済み証明書(OISTE Server Root ECC G1、OISTE Server Root RSA G1、SwissSign RSA TLS Root CA 2022、TrustAsia TLS ECC Root CA、TrustAsia TLS RSA Root CA、Certigna Root CA、 e-Szigno TLS Root CA 2023、Atos TrustedRoot Root CA ECC G2 2020、Atos TrustedRoot Root CA RSA G2 2020)が追加され、いくつかの証明書が削除されました。以前信頼されていたいくつかのCAが「信頼されていない」ステータスに変更され、多数の新しい「信頼されていない」証明書が追加されました。
タイムゾーンコードが 2026b に更新されました。
tzdata が 2026b に更新されました。
OpenSSL がバージョン 3.5.6 に更新されました。
libfido2 が 1.16.0 に更新されました。(FreeBSD Foundationによる後援)
expat がバージョン 2.7.5 に更新されました。
xz(1) がバージョン 5.8.3. 7176f76d2251 に更新されました。
libcbor が 0.13.0. 967186fe0a54 に更新されました。(FreeBSD Foundationによる後援)
tcpdump(1) がバージョン 4.99.6 (6af32a9d37ad) に更新されました。(FreeBSD Foundationによる後援)
libpcap がバージョン 1.10.6 (e0ae00f43186) に更新されました。(FreeBSD Foundationによる後援)
zlib(3) がバージョン 1.3.2 に更新されました。
OpenZFS がバージョン 2.4.2 に更新されました。
USB ベンダーデータベースが 2025.12.13 に更新されました。
PCIベンダーデータベースが2026-02-10版に更新され、pciconf(8)などのツール向けに最新のハードウェア識別情報が提供されるようになりました。
blocklistd(8)がバージョン2026-02-07に更新されました。
Spleen フォントがバージョン 2.2.0 に更新されました。この更新により、高 DPI ディスプレイでのマニュアルページ表示に不可欠であり、これまで欠落していたいくつかの文字(長ダッシュ、短ダッシュ、ハイフン、山括弧、白い四角、ダガー、ダブルダガーなど)が追加されました。また、異なるフォントサイズ間での文字の配置も改善されています。
GoogleTest がバージョン 1.17.0 に更新されました。新しいバージョンでは、ビルドに C++17 が必要になりました。
ncurses(3) がバージョン 6.6 に更新されました。この更新はバージョン 6.5 と ABI 互換です。HTML ドキュメントが削除されました。
nvi(1) がバージョン 2.2.2 に更新されました。
mtree(8) が NetBSD のスナップショット 20260111 に更新されました。
Unicode サポートが Unicode 17.0.0 および CLDR 48 に更新され、4,803 文字と 4 つの新しい文字体系(Sidetic、Tolong Siki、Beria Erfe、Tai Yo)が追加されました。これにより、UTF-8 ロケールのロケール定義、照合順序、通貨、数値の書式設定に影響があります。
bmake(1) がバージョン 20251111 に更新されました。
sqlite3(1) がバージョン 3.50.4 に更新されました。
unbound(8) がバージョン 1.25.1 に更新されました。
ブラックリストサブシステムは、システム全体でブロックリスト (blocklistd(8)) に名称変更されました。rc スクリプト、ファイアウォールルール、および設定オプション内の旧名称は引き続き機能しますが、警告が表示されます。この変更は、アップストリームの用語更新に準じたものです。
bsddialog(1) がバージョン 1.0.5 に更新されました。(FreeBSD Foundationによる後援)
less(1) がバージョン 692 に更新されました。
zstd がバージョン 1.5.7 に更新されました。
MIT krb5 が 1.22.2 に更新されました。
Heimdal (Kerberos) がバージョン 1.22.2 に更新されました。
非推奨のアプリケーション
印刷ユーティリティの lpr スイート(lpr(1)、lpd(8)、lpc(8)、lpq(1)、lprm(1)、lp(1)、pac(8)、lptest(1)、chkprintcap(8))は非推奨となっており、FreeBSD 16.0 より前に削除される可能性があります。ユーザーは、portsコレクションのprint/cupsやsysutils/LPRngなどの代替ツールを使用することを推奨します。
bsdlabel(8)ユーティリティは、FreeBSD 16.0での削除が予定されています。ユーザーは、ディスクのラベル付けにgpart(8)へ移行することが必要です。(FreeBSD Foundationによる後援)
fdisk(8) ユーティリティは、FreeBSD 16.0 で削除される予定です。ユーザーは、ディスクのパーティション分割に gpart(8) または bsdinstall(8) へ移行することが必要です。(FreeBSD Foundationによる後援)
ランタイムライブラリとAPI
posix_spawn(3) インタフェースが、POSIX で必須とされる chdir および fchdir ファイル操作をサポートするようになりました。これにより、プロセスは生成時に作業ディレクトリを変更できるようになりました。
posix_spawnattr_getexecfd_np(3) および posix_spawnattr_setexecfd_np(3) 関数が追加され、posix_spawn においてファイル記述子を実行ファイルとして使用できるようになりました。
pthread_tryjoin_np(3) 関数が追加され、スレッドがブロックすることなく別のスレッドへの参加を試行できるようになりました。
AArch64 上の libc の文字列関数 memcpy(3)、memmove(3)、および memset(3) は、利用可能な場合に MOPS (Memory Operations) ハードウェア命令を使用するようになり、これらの一般的な操作のパフォーマンスが向上しました。(Arm Ltdによる後援)
libc に glibc 互換の tdestroy(3) 関数が追加されました。これにより、二分探索木を破棄するための標準化された方法が提供され、この関数を期待するソフトウェアとの互換性が向上しました。
strdupa(3) および strndupa(3) 関数を追加しました。これらは alloca(3) を使用してスタック上に文字列のコピー用のメモリを割り当てます。これにより、関数の戻り時に自動的に解放される一時的な文字列のコピーにおいて、strdup(3) および strndup(3) の便利な代替手段が提供されます。
ABI を破る変更が行われたため、libzfs および libzpool の SONAME が libzfs7 および libzpool7 に更新され、依存するアプリケーションの再コンパイルが必要となりました。
カーネルメモリアロケータ vmem(9) のユーザーランド版である libuvmem が追加され、ユーザーランドアプリケーション向けに同様のインタフェースが提供されるようになりました。
Cプログラミング言語のC23バージョンに対するサポートが拡張されました。これは今後も進化を続け、FreeBSD 16では完全なサポートが予定されています。新機能には、<stdbit.h>ヘッダー、memalignment(3)関数、_WIDTHマクロやchar8_tを含む<limits.h>および<stdint.h>ヘッダーの更新、その他さまざまな拡張が含まれます。
クラウドサポート
この節では、クラウド環境に対するサポートの変更点について説明します。
Oracle Cloud Infrastructure (OCI) のビルドターゲットおよび関連スクリプトが削除されました。最後の公式 OCI イメージは FreeBSD 15.0-RELEASE です。(SkunkWerks, GmbHによる後援)
パッケージ化されたベースシステムを使用する VM およびクラウドイメージに pkg(7) パッケージがインストールされるようになりました。これにより、ports リポジトリから pkg を手動でインストールすることなく、ベースシステムの更新が可能になります。(Amazonによる後援)
GCE イメージファミリーの名前に TARGET および FS が含まれるようになりました。これにより、アーキテクチャおよびファイルシステムごとにイメージファミリーが一意になることが保証されます。これにより、GCEインスタンスAPIがイメージファミリ名を使用する際、互換性のないイメージが選択されるのを防ぎます。
Graviton (arm64) システムにおける ena(4) デバイスからの I/O 割り込みが、すべて CPU 0 に集中するのではなく、各 CPU に分散されるようになりました。これにより、これらの EC2 インスタンスタイプにおいて、ネットワークパフォーマンスが大幅に向上します。(Amazonによる後援)
クラウドイメージ向けに、firstbootパッケージの自動更新機能が導入されました。初回起動時に、ベースシステムのパッケージが自動的に更新され、システムにパッチが適用されます。(Google Cloudによる後援)
EC2の「small」フレーバーのAMIでは、デフォルトでfirstboot_pkgsが実行されなくなりました。EC2のユーザーデータでfirstboot_pkgs_listを設定してインストールするパッケージのリストを指定するユーザーは、firstboot_pkgs_enable="YES"も設定する必要があります。(Amazonによる後援)
カーネル
この節では、他のカテゴリに分類されないカーネル設定の変更、システムのチューニング、およびシステム制御パラメータについて説明します。
カーネル全般の変更点
32ビットのpowerpcおよびpowerpc64leプラットフォームで、System Dynamic Tracing (SDT) プロバイダが有効になりました。これにより、ユーザーはこれらのアーキテクチャでDTraceプローブを利用できるようになりました。
tunable を通じて起動時に異なる CPU スケジューラを選択できるスケジューラ選択フレームワークが追加されました。これは、将来のスケジューラ実装のための基盤となります。
sched_ule スケジューラがスケジューラインスタンスとして実装されるようになりました。これにより、ユーザーのシステムパフォーマンスやスケジューリング動作に影響が出る可能性があります。
amd64 アーキテクチャの GENERIC カーネル構成に、SCHED_ULE および SCHED_4BSD スケジューラが両方含まれるようになりました。これにより、ユーザーは kern.sched sysctl を通じて起動時にこれらを選択できるようになりました。
MINIMAL カーネル構成に virtio_scsi ドライバが含まれるようになり、qemu/kvm 仮想マシンでの起動が可能になりました。(Klara, Inc.; NetApp, Inc.による後援)
プロセス記述子を待機するための pdwait(2) システムコールが追加され、pdfork(2) で作成されたプロセスに対して wait4(2) の代替手段が提供されました。
pdrfork(2) システムコールが追加され、確定的なリソース継承を備えたプロセス作成のための新しいメカニズムが提供されました。
マルチ CPU Power9 PSeries ゲストの起動中にシステムのハングを引き起こす可能性があった、PowerPC スレッド切り替えコードのレースコンディションが解決されました。
sysctl の hw.ata.rotating および hw.ata.unmapped_io は、FreeBSD 15 ではなく FreeBSD 16 で削除される予定となりました。(FreeBSD Foundationによる後援)
sysctl vfs.zfs.min_auto_ashift およびその他のレガシーな ZFS sysctl は、使用時に警告を出力するようになりました。これは、これらが非推奨であり、削除される予定であることを示しています。ユーザーは、スクリプトや設定を更新し、vfs.zfs.vdev.min_auto_ashift などの新しい sysctl 名を使用するようにしてください。(FreeBSD Foundationによる後援)
Linux 互換レイヤーに、F_DUPFD_QUERY fcntl コマンドのサポートが追加されました。このコマンドは、Linux コンテナ内でファイル記述子の同等性を確認するために kcmp(2) KCMP_FILE と併用されます。
デバイスとドライバ
この節では、15.0-RELEASE以降におけるデバイスおよびデバイスドライバの変更点と追加機能について説明します。
デバイスドライバ
ena(4) ドライバが v2.8.3 に更新されました。これには、ジャンボグラムの受信パスに関するバグ修正が含まれており、ネットワークスループットが 10 倍以上向上する可能性があります。(Amazon, Inc.による後援)
bcm2838_xhci ドライバが、互換性文字列に基づいて Raspberry Pi 400 のハードウェアを正しく識別するようになりました。これにより、当該プラットフォーム上で xhci の適切な初期化と USB 機能(外部ポートおよび内蔵キーボードを含む)が利用可能になりました。
Raspberry Pi 3B および一部の Compute Module ボードに搭載されている bcm2835-virtgpio GPIO コントローラ用のドライバが追加されました。これにより、gpioled(4) 経由で ACT (緑色) LED を制御できるようになりました。
smartpqi ドライバがベンダー版 14.4690.0.2008 - 15.2.0.2008 に更新されました。この更新により、新しいコントローラのサポートが追加され、パススルー ioctl の I/O バッファサイズの上限が 16 ビットから 32 ビットに拡大されました。(Microchip Technology Inc.による後援)
asmc(4) ドライバは、32ビットの Intel ベースの Mac をサポートしなくなりました。これにより、i386 ハードウェア上での使用がサポートされていないことが明確になりました。
mfi(4) ドライバが、富士通 PRIMERGY サーバーで使用されている富士通 RAID コントローラ SAS 6Gbit/s 1GB (D3116) をサポートするようになりました。
ハードウェアパフォーマンスモニタリングカウンタ(hwpmc)のサポートが、追加の Intel CPU モデル(Alder Lake(モデル 6-B7、6-BA、6-BF)、Alder Lake-N、および Emerald Rapids)に追加されました。これらのプロセッサで動作しているユーザーは、pmc(3) および関連ツールを使用してパフォーマンスイベントを収集できるようになりました。Emerald Rapidsのサポートには、Intel perfmonバージョン1.06からインポートされたJSONイベント定義が含まれており、包括的なイベントカバレッジを提供します。(Stormshield社による後援)
hid(4) ドライバでは、「game」グループのメンバーがゲームコントローラのイベントにアクセスできるようになり、libsdl などのライブラリを介して、特権のないユーザーでもコントローラを使用できるようになりました。
iwx(4) ドライバがカーネルのビルド構成に組み込まれ、Intel AX210/AX211/AX411 Wi-Fi 6E および Wi-Fi 7 ワイヤレスネットワークアダプタのサポートが可能になりました。
NVMe ドライバが Table BIR および PBA BIR 向けの BAR5 をサポートするようになりました。これにより、32 ビットの BAR4 レジスタと BAR5 レジスタを別々に使用する NVMe コントローラを搭載した Google Compute Engine C4 マシン上で FreeBSD が動作するようになりました。(Googleによる後援)
ice(4) ドライバが Intel E835-XXV-4 ネットワークアダプタをサポートするようになりました。(Intel Corporationによる後援)
ice(4) ドライバが、100Gbps および 200Gbps リンク上で SPDM セキュリティおよび RDMA 機能を備えた Intel E835 イーサネットアダプタをサポートするようになりました。(Intel Corporationによる後援)
qat(4) ドライバは、既存の qat_4xxx ドライバを使用して、402xx デバイス (ID 0x4944/0x4945) をサポートするようになりました。デバイス固有のファームウェアファイルが追加されました。(Intel Corporationによる後援)
非推奨および削除されたドライバ
hifn(4) ドライバは、FreeBSD 16.0 での削除が予定されているものとしてマークされ、将来の互換性変更に備えるようユーザーに注意が喚起されました。
safe(4) ドライバは、FreeBSD 16.0 での削除が予定されているものとしてマークされ、このドライバが非推奨となり、将来削除されることが示されました。
agp(4) ドライバの非推奨通知が更新され、FreeBSD 15.0 ではなく 16.0 での削除が示されるようになりました。(FreeBSD Foundationによる後援)
fdc(4) ドライバおよびフロッピーユーティリティ (fdcontrol(8)、fdformat(8)、fdread(1)、fdwrite(1)) は非推奨となりました。FreeBSD 16 でのサポート終了が予定されています。(FreeBSD Foundationによる後援)
le(4) ドライバの非推奨通知が更新され、FreeBSD 15.0 以前のバージョンでは削除されなかったことが反映され、引き続きサポートされている状態であることが示されました。(FreeBSD Foundationによる後援)
ストレージ
この節では、ローカルおよびネットワーク上のファイルシステムやその他のストレージサブシステムに対する変更点と追加機能について説明します。
ストレージ全般
mt(1) ユーティリティおよび libmt ライブラリに、LTO-10 および LTO-10P テープの密度コードと仕様に対するサポートが追加されました。LTO-10 テープドライブは、前世代の LTO テープとは下位互換性がありません。(Spectra Logicによる後援)
ZFS
ZFS のスクラブおよびリシルバーの最小所要時間が、数秒から 1 秒未満に短縮されました。これにより、最新のストレージ環境でのトランザクショングループのサイクルが高速化され、高負荷時の書き込みパフォーマンスが向上します。
このコミットでは、ZFS ARCにおける並列エヴィクションのパフォーマンスを向上させるため、新しい調整可能パラメータ「zfs_arc_evict_batches_limit」が導入されました。この変更により、ロック競合が軽減され、特定のワークロードにおいてスループットを大幅に向上させることができます。
zpool(8) の prefetch コマンドが BRT (Block Reference Table) メタデータをサポートするようになり、ブロックのクローン作成操作およびクローンされたブロックの解放時のパフォーマンスが向上しました。-t パラメータはオプションとなり、省略された場合、コマンドは DDT および BRT メタデータの両方をプリフェッチします。
NFS
NFSクライアントは、NFS経由でエクスポートされたmsdosfs(4)のような大文字小文字を区別しないファイルシステムを適切に処理するようになりました。同じファイル名の異なる大文字小文字のバリエーションによる誤ったキャッシュヒットを回避するため、名前キャッシュが修正されました。
NFSv4ディスクレスブートは、名前とIDのマッピングにnfsuserd(8)を使用する構成をサポートするようになりました。カーネルは、起動中のデッドロックを回避するために、マッピングキャッシュに必須のエントリを初期設定します。ユーザーは、loader.conf 内で boot.nfsroot.options="nfsv4" および boot.nfsroot.user_domain="<user.domain>" を設定する必要があります。
インターネットドラフトに基づき、NFSv4.2の拡張機能としてPOSIXドラフトACL用の内部インフラストラクチャを追加しました。これらの変更は、将来のサポートに向けたNFSクライアントおよびサーバーの準備を目的としていますが、現時点ではユーザーに認識されるようなセマンティクスの変更は導入されていません。内部の KAPI の変更により、更新後は nfscommon.ko、nfscl.ko、および nfsd.ko をソースから再構築する必要があることに注意してください。
NFSv4 クライアントおよびサーバーが、RFC8881 では非推奨となっているものの、Windows NFSv4.1 クライアントで使用されるアーカイブ属性 (UF_ARCHIVE) をサポートするようになりました。これにより、Windows NFS クライアントとの相互運用性が向上します。
NFSv4 経由でのディスクレスルートファイルシステムのマウント機能が追加されました。これには、特定のサーバー設定および loader.conf(5) および sysctl.conf(5) におけるクライアント設定が必要です。
ログイン時の iSCSI TargetName の照合が再び大文字小文字を区別しないようになり、RFC 3722 への準拠が回復しました。(ConnectWiseによる後援)
ブートローダーの変更点
この節では、ブートローダー、ブートメニュー、およびその他の起動関連の変更点について説明します。
ブートローダーの変更点
splash(4) カーネル機能に、シャットダウン時のスプラッシュスクリーンが追加されました。ユーザーは、loader.conf(5) 内の shutdown_splash ディレクティブを介して PNG 画像を指定することで、シャットダウン時のスプラッシュ画面をカスタマイズできます。カーネルパニックが発生した後、スプラッシュ画面はデバッガーの出力の上に表示されなくなったため、ddb(4) が無効になっている場合でもパニック情報を確認できるようになりました。(Defensoによる後援)
EFI ブートローダーは、UGA (Universal Graphics Adapter) ではなく GOP (Graphics Output Protocol) を使用する場合にのみ、ファームウェアが提供する Blt 関数を使用するようになりました。これにより、UGA の Blt 関数の動作が不安定だった旧型の MacBook システムとの互換性が向上しました。
ネットワーク
この節では、FreeBSD のネットワーク機能に影響を与える変更点について説明します。
ネットワーク全般
ipfw(8) テーブルにおけるマスク付き IP アドレスの検索機能を追加しました。これにより、連続していないプレフィックスの使用が可能になり、CPU 負荷の低いファイアウォール設定が可能になります。(Yandex LLCによる後援)
ipfw(8) ファイアウォールは、テーブル内でのマスク付き IP アドレスの検索をサポートするようになりました。これにより、非連続なプレフィックスが使用可能となり、ファイアウォールルールの設定がより効率的になります。検索キーやテーブルエントリにおいて重要でないビットをマスクすることで、CPU 負荷の低いファイアウォール設定が可能になります。(Yandex LLCによる後援)
IPv6パケットがdivertソケットに渡されるようになりました。これにより、divertソケットがIPv4のみに制限されていた従来の制限が解除されました。これにより、divertソケットを使用するアプリケーションでIPv6パケットを処理できるようになります。(OPNsense、Klara, Inc.による後援)
jail が独自の ipfilter ルール、プール、および設定を管理できるかどうかを制御するための sysctl/tunable net.inet.ipf.jail_allowed が追加されました。デフォルトでは jail へのアクセスが拒否され、インタフェースの割り当てを介してホストシステムが jail ルールを管理するか、jail 制御用の sysctl を有効にすることが必要です。
FreeBSD 8 以前のバージョン向けの ipfw(8) バージョン 3 互換コードは、時代遅れであり、もはや必要とされないため削除されました。この整理により、非常に古い設定を依然として使用しているシステムに影響が出る可能性がありますが、現在サポートされているリリースにおける機能に変更はありません。(FreeBSD Foundationによる後援)
新しい ifconfig の 'stableaddr' フラグおよび関連する sysctl を通じて、RFC 7217 準拠の安定した IPv6 アドレスの生成機能が追加されました。この機能はデフォルトで無効になっており、既存の動作が維持されます。ifconfig(8) のマニュアルページにドキュメントが追加されました
if_bridge(4)、if_epair(4)、およびその他のインタフェース用に生成される安定したMACアドレスは、実装上の重大な欠陥により、衝突の可能性が高く、一部の生成アドレスが想定されるOUIの範囲外となる問題があったため、15.0以降変更されます。DHCPリースなどの理由で以前のMACアドレスを維持する必要がある場合は、rc.conf(5)内で ifconfig_bridgeN="… ether aa:bb:cc:dd:ee:ff" のように指定するなど、既存のMACアドレスを保持するよう注意を払うことが必要です。
無線ネットワーク
iwlwifi(4) ワイヤレスドライバが、Linux バージョン 7.0 に基づいて更新されました。この更新には、新しい Intel ワイヤレスデバイスをサポートするための変更が含まれています。(FreeBSD Foundationによる後援)
rtw89(4) ワイヤレスドライバが、Linux バージョン 7.0 に基づいて更新され、新しい Realtek チップセットのサポートが追加され、安定性と機能が向上しました。いくつかのチップセットについては、依然として既知の問題があります。(FreeBSD Foundationによる後援)
rtw88(4) ドライバは、Linux バージョン 7.0 に基づいて更新され、Realtek 製ワイヤレスデバイスに対する様々な修正と改善が盛り込まれました。特定のチップセットには既知の問題があります。(FreeBSD Foundationによる後援)
RISC-V システム上で、LinuxKPI ベースのワイヤレスドライバ(特に iwlwifi(4))の初期サポートが有効化されました。このアーキテクチャでは ACPI がまだ完全にはサポートされていませんが、可能な範囲でコンパイルと動作が行えるよう、ドライバのフレームワークが調整されています。なお、ACPI の依存関係が未解決であるため、RISC-V では rtw89(4) ドライバが一時的に利用できません。(FreeBSD Foundationによる後援)
ハードウェアのサポート
この節では、物理マシン、ハイパーバイザー、および仮想化環境に対する一般的なハードウェアのサポートに加え、本書の他のセクションには該当しないハードウェアの変更や更新について説明します。
15.1-RELEASE でサポートされているハードウェアの一覧、およびサポートされている CPU アーキテクチャの完全なリストについては、プラットフォームのページを参照してください。
仮想化のサポート
bhyve(8) ジェイルにおける PCI パススルーへのアクセスを制御するための新しいジェイル設定オプション allow.vmm_ppt が追加されました。この変更により、ジェイル内での PCI パススルー機能の利用には明示的な設定が必要となり、従来の包括的な制限が廃止されました。(FreeBSD Foundation、Klara, Inc.による後援)
virtio GPU ドライバは、リソースアタッチメント要求を分割することで Parallels Desktop に対応するようになり、この仮想化環境でのグラフィックスサポートが可能になりました。(Arm Ltdによる後援)
arm64 における Fine-Grained Trap (FGT) レジスタのサポートが追加され、ハイパーバイザーの仮想化機能が強化されました。(Arm Ltdによる後援)
このコミットにより、ハードウェア機能が搭載されている場合、arm64 ユーザー空間で Memory Operations (MOPS) 命令セットが有効になります。これにより、ユーザーアプリケーションは MOPS 命令を使用して、メモリ操作のパフォーマンスを向上させることができます。(Arm Ltdによる後援)
bhyve(8) リモートフレームバッファに UNIX ドメインソケットのサポートが追加されました。ネットワーク接続のないjail内のbhyveインスタンスで、グラフィカルコンソールが利用可能になりました。(Defenso社による後援)
amd64アーキテクチャが、カーネルとユーザーのアドレス空間を分離するセキュリティ機能であるLASS(Linear Address Space Separation)をサポートするようになりました。この変更は、デバッグや低レベルのシステムプログラミングに影響を与える可能性があります。
amd64アーキテクチャがExtended Destination ID標準をサポートするようになりました。これにより、割り込みのリマッピングを行わずに、IO-APICおよびMSIで最大32768個のAPIC IDをサポートできるようになりました。特に、これによりEC2の「r8i.96xlarge」インスタンスのサポートが追加されました。(Amazonによる後援)
ドキュメント
この節では、ベースシステムに同梱されているマニュアルページ (man(1)) およびその他のドキュメントの変更点について説明します。
マニュアルページ
sh(1) マニュアルページには、FreeBSD の実装に合わせて POSIX 標準の記述を採用した、ジョブ制御に関する詳細なドキュメントが追加されました。
pdfork(2) および pdwait(2) のマニュアルページが追加され、pdrfork および pdwait システムコールに関する説明が記載されました。
renameat2(2) システムコールに関する説明が追加され、拡張された rename 機能に関する情報がユーザーに提供されるようになりました。
write(2)のマニュアルに、書き込み操作の原子性の保証について説明する新しいセクションが追加されました。
librt(3)に含まれる、これまで文書化されていなかったmq_getfd_np(3)関数のマニュアルページが追加されました。これにより、FreeBSD 11以来存在していた関数に関するドキュメントが提供されます。
posix_spawnにおけるプロセス記述子の管理に関する拡張機能を記述した、posix_spawnattr_getprocdescp_np(3) および posix_spawnattr_setprocdescp_np(3) のマニュアルページが追加されました。
posix_spawnattr_getexecfd_np(3) のマニュアルページを追加しました。
pthread_join(3) のマニュアルページを更新し、pthread_tryjoin_np(3) 関数を記載しました。これにより、ユーザーはスレッドの結合を行うためのノンブロッキングな代替手段を利用できるようになります。
dtrace_vfs(4) (VFS アクティビティ)、dtrace_pid(4) (ユーザーレベルでのプロセス追跡)、dtrace_priv(4) (特権チェック)、dtrace_callout_execute(4) (コールアウトハンドラの実行) など、いくつかの DTrace プロバイダのマニュアルが追加されました。
GEOM ZERO クラスとその機能を説明する geom_zero(4) マニュアルページが追加されました。
2つの新しいsysctl、tx_reclaim_ticksおよびtx_reclaim_thresh (iflib(4)) に関するドキュメントが追加されました。これらのsysctlは、ネットワークドライバの送信動作に影響を与えます。(Netflixによる後援)
nfsv4(4) のマニュアルページに、NFSv4 ルートファイルシステムの設定に関する記述が追加され、この機能を利用したいユーザー向けのガイダンスが提供されるようになりました。
ベースシステムに nlsysevent(4) の新しいマニュアルページが追加されました。
仮想マシンのクローン作成やスナップショットの復元が検出された際に、カーネルのエントロピープールを再初期化する VM Generation ID Counter ドライバに関する vmgenc(4) マニュアルページが追加されました。
vt(4)のマニュアルには、スクロールバックサイズの拡大に関する例と、コンソールフォントの変換、サポート、使用方法について解説する節が追加されました。
pf.conf(5)のマニュアルページには、BNF文法にnat-toおよびrdr-toが追加され、ユーザー向けの構文が明確化されました。1c7c2027f2d1。(Rubicon Communications, LLC ("Netgate")による後援)
resolver(5)のマニュアルページに、res_init(3)によって解析されるものの、これまで文書化されていなかったedns0、inet6、insecure1、insecure2、no-check-names、およびrotateオプションに関する記述が追加されました。
d(7) に、strchr、strjoin、strrchr、strstr、strtok、strlen、substr といったいくつかの文字列関数のドキュメントが追加されました。
標準のグループ名を説明する新しいマニュアルページ groups(7) が追加されました。
ports(7) のマニュアルページが大幅に改善されました。「FILES」セクションは、より分かりやすくするために拡張され、3つの表に再構成されました。また、個々のポートファイルに関する簡潔な説明が追加されました。さらに、DEFAULT_VERSIONS変数に関するドキュメントが追加され、ポートオプションのデフォルトバージョンの設定に関する情報がユーザーに提供されるようになりました。
tuning(7) のマニュアルページに、カーネルスケジューラの調整可能なパラメータに関する記述が追加され、利用可能なスケジューラ設定オプションに関する情報がユーザーに提供されるようになりました。
非推奨となったブラックリストユーティリティ(blacklistctl(8)、blacklistd(8)、blacklistd.conf(5)、libblacklist(3))のマニュアルページが追加され、それらの非推奨化および使用上の注意点について記載されました。これにより、非推奨となったブラックリストツール(現在は blocklist に名称変更されています)に関する最新のドキュメントがユーザーに提供されます。
cron(8) のマニュアルページが更新され、システムの crontab 形式が明確化されました。
ifconfig(8) のマニュアルページの書式が修正され、可読性が向上しました。
jail(8) のマニュアルページに、パッケージベースおよびディストリビューションセットからの 2 つの jail 作成方法が記載されるようになりました。
shutdown(8) のマニュアルページに、shutdown コマンドでサポートされている追加の時間形式が記載され、ユーザーにとってより分かりやすくなりました。
デッドファイルシステムに関する deadfs(9) のマニュアルページが追加されました。