FreeBSD 13.3-RELEASEリリースノート

# 「はじめに」
この記事は[FreeBSD 13.3-RELEASE Release Notes](https://www.freebsd.org/releases/13.3R/relnotes/)の日本語訳です。翻訳時点では、普段使っている（GhostBSDが依存している）FreeBSDのバージョンが14.0-STABLEのようですし[^excuse]、[13.2](https://qiita.com/koizumistr/items/950fb254456ce9ab084a)や[14.0のリリースノート](https://qiita.com/koizumistr/items/275b31942b434da6a79b)と共通している部分は以前の訳からほぼそのまま持ってきてます[^excuse2]ので、訳の正確さは保証できません。なので、「ふつーはそう訳さねーよ」という指摘は大歓迎です。

[^excuse]: いやぁ、便利ですね、この言い訳。この前は確か、訳しているものが14.0、使っているのが13.2-STABLEだったんですよね。機会があれば今後も使い続けたいと思います。

[^excuse2]: 13.2や14.0で間違っていたら、基本的にその間違いが引き継がれているということです。ですので、13.2や14.0の方も誤記指摘大歓迎です。

また、恒例のお断りですが、この文章の内容は、筆者が所属している会社・団体とは一切関わりがありません。いわゆる「自主的な研究の成果の発表」というものです。

では、以下、翻訳です。
# 要約
FreeBSD 13.3-RELEASEのリリースノートには、13-STABLE開発ラインでFreeBSDの基本システムに加えられた変更の概要が含まれています。このドキュメントには、前回のリリース以降に発行された適用可能なセキュリティ勧告、およびFreeBSDカーネルとユーザーランドへの重要な変更点が記載されています。アップグレードに関するいくつかの簡単な説明もあります。

# はじめに
この文書には、FreeBSD 13.3-RELEASEのリリースノートが含まれています。最近追加、変更、または削除されたFreeBSDの機能について説明しています。また、以前のバージョンのFreeBSDからのアップグレードに関する注意事項も記載しています。

このリリースノートが適用されるリリース配布物は、13-STABLEが作成されて以来、13-STABLE開発ブランチに沿った最新のポイントを表しています。このブランチに沿ったビルド済みのバイナリリリース配布物に関する情報は、 https://www.FreeBSD.org/releases/ で見ることができます。

このFreeBSD 13.3-RELEASEはリリース版配布物です。この配布物は、 https://www.FreeBSD.org/releases/ またはそのミラーサイトにあります。この (あるいは他の)FreeBSDのリリース版配布物を入手するための詳しい情報は、[FreeBSDハンドブック](https://docs.freebsd.org/ja/books/handbook/)の[付録A FreeBSD の入手方法](https://docs.freebsd.org/ja/books/handbook/mirrors/)に記載されています。

すべてのユーザには、FreeBSDをインストールする前にリリースの正誤表を参照することを推奨します。正誤表は、リリースサイクルの後半やリリース後に発見された 「最新の」情報で更新されます。典型的なものとしては、既知のバグやセキュリティ勧告、文書の修正に関する情報などがあります。FreeBSD 13.3-RELEASEの正誤表の最新版はFreeBSDのWebサイトで見ることができます。

この文書では、FreeBSD 13-STABLEにおけるFreeBSD 13.2-RELEASE以降の新機能や変更点のうち、最もユーザが目にしやすいものを説明しています。ここに書かれている変更点のいくつかはFreeBSD 14.0-RELEASEでも利用可能であることに注意してください。

リリースノートの一般的な項目には、13.2-RELEASEの後に発行された最近のセキュリティ勧告、新しいドライバまたはハードウェアのサポート、新しいコマンドまたはオプション、主要なバグ修正、または提供されたソフトウェアのアップグレードが記載されています。また、主要なポート/パッケージまたはリリースエンジニアリングの実践への変更についても記載する場合があります。もちろん、リリース間でFreeBSDに加えられた変更をリリースノートにすべて列挙することはできません。この文書は主に、セキュリティ勧告、ユーザーに見える変更点、主要なアーキテクチャでの改善点に焦点を当てています。

# FreeBSDの以前のリリースからのアップグレード
RELEASEバージョン(およびさまざまなセキュリティブランチのスナップショット)間のバイナリアップグレードは、freebsd-update(8)ユーティリティを使用してサポートされています。FreeBSD ハンドブックの[バイナリアップグレード手順](https://docs.freebsd.org/ja/books/handbook/cutting-edge/#freebsdupdate-upgrade)の詳細と合わせてリリース固有のアップグレード手順、FreeBSD 13.3-RELEASE アップグレード情報を参照してください。

/usr/src/UPDATINGの指示に従って、以前のバージョンからのソースベースのアップグレード(FreeBSDの基本システムをソースコードから再コンパイルしたもの)がサポートされています。

:::note alert
FreeBSDのアップグレードは、**すべて**のデータと構成ファイルをバックアップした後でのみ試みてください。
:::

:::note alert
新しいユーザーランドソフトウェアをインストールした後も、実行中のデーモンは以前のバージョンのままです。freebsd-updateの2回目の起動でユーザレベルのコンポーネントをインストールした後、あるいはinstallworldでソースからアップグレードした後、システムを再起動して、新しいソフトウェアですべてを開始することが必要です。たとえば、古いバージョンのsshdは、新しい/usr/sbin/sshdがインストールされた後、着信接続を正しく処理できません。再起動して新しいsshdデーモンと他のデーモンを開始してください。
:::

# ユーザーランド
この節では、ユーザーランドアプリケーション、提供されたソフトウェア、およびシステム ユーティリティの変更と追加について説明します。

## ユーザーランドの設定の変更点
libtacplus(3) ライブラリが改良され、tacplus.conf(5) が POSIX シェル構文規則に従うようになりました。これにより、共有秘密がシングルクォート、ダブルクォート、バックスラッシュ文字を含んでおり、それらがまだ適切にクォートまたはエスケープされていない場合、TACACS+ 認証に失敗する可能性があります。このライブラリでは、最大 255 までの AV ペアを設定できます。(Klara, Inc. による後援)

setusercontext(3) を利用する login(1) のようなプログラムは、認証情報が優先度の設定を許可している場合に、~/.login_conf ファイルからプロセスの優先度を設定できるようになりました。また、プロセスの優先度が親プロセスから継承されることを示す inherit を login.conf(5) で優先度として指定できるようになりました。同様に、umask 値も inherit として指定できるようになりました。 (Kumacom SAS による後援)

システム管理者に電子メールで送信される、periodic(8) によって報告される設定ファイルおよびセキュリティ出力の変更が、無関係な内容を最小にするため、縮小されたコンテキストを使用するようになりました。毎日の出力を生成するために diff(1) に渡されるオプションは、rc.conf(5) の daily_diff_flags 変数で制御可能です。セキュリティスクリプトのために diff(1) に渡されるオプションは security_status_diff_flags で制御されます。

以前の場所がサポートされなくなったため、leapsecond 情報をダウンロードするためのデフォルトの場所が正規のソースを使用するよう更新されました。

Raspberry Pi システムの arm64 RPI イメージの /etc/rc.conf で、powerd(8) デーモンがデフォルトで有効化され、システムが必要に応じてフルスピードで実行できるようになりました。デフォルト以外のターボ設定をしているユーザーは無効にした方がいいかもしれません。

サービスの umask は、rc.conf(5) で \<service\>_umask 変数を使って指定できるようになりました。\<service\>はサービスの名前です。

## ユーザーランドのアプリケーションの変更点
head(1) および tail(1) プログラムが -q (quiet) および -v (verbose) オプションを一貫してサポートするようになりました。数値引数は、expand_number(3) でサポートされる SI 接尾辞を使用できるようになりました。

LLVM の objdump(1) ユーティリティが利用可能になりました。いくつかの LLVM の objdump オプションは、GNU objdump とは異なる出力形式を持ちます。readelf(1) は ELF ファイルを検査するために利用可能で、GNU objdump は devel/binutils ポートまたはパッケージから利用可能です。

tftpd(8) サーバは、新しい -S オプションを使用することで、chroot 環境にある世界的に書き込み可能ではないファイルへの書き込みを許可するよう設定可能です。

## 提供されたソフトウェア
expat がバージョン 2.6.0 にアップグレードされました。

Kerberos Key Distribution Center の脆弱性を緩和するため、いくつかの Heimdal セキュリティ修正が適用されました。

libfido2 認証トークンライブラリがバージョン 1.13.0 に更新されました。(FreeBSD Foundation による後援)

LLVM と clang コンパイラがバージョン 17.0.6 にアップグレードされました。

nvi (vi(1)) がバージョン 2.2.1 にアップグレードされました。

sendmail がバージョン 8.18.1 にアップグレードされました。このバージョンはデフォルトで、特に行末に関して、より厳格な RFC 準拠を強制します。このため、非準拠の MTA からのメッセージを受信する際に問題が発生する可能性があります。緩和策については https://ftp.sendmail.org/RELEASE_NOTES の最初の 8.18.1 リリースノートをご覧ください。

OpenSSH がバージョン 9.6p1 に更新されました。ssh-keygen(1) はデフォルトで Ed25519 鍵を生成するようになりました。 sshd(8) はサブシステムのコマンドや引数の引用符付けを正確に保持するようになりました。

tzdata がバージョン 2024a にアップグレードされました。

unbound がセキュリティ修正を含むバージョン 1.19.1 にアップグレードされました。

xz がバージョン 5.4.5[^xz] にアップグレードされました。
[^xz]: ということは今話題の[CVE-2024-3094](https://www.jpcert.or.jp/newsflash/2024040101.html)の影響は受けない、と。

zlib(3) ライブラリがバージョン 1.3.1 に更新されました。

# カーネル
この節では、他には分類されないカーネル設定、システムチューニング、およびシステム制御パラメータの変更について説明します。

## 一般的なカーネルの変更点
intro(9) のカーネルプログラミングインタフェースの紹介が完全に書き換えられました。(FreeBSD Foundation による後援)

# デバイスとドライバ
この節では、13.2-RELEASE以降のデバイスとデバイスドライバの変更と追加について説明します。

## デバイスドライバ
複数の PCI MCFG 領域が今回 x86 システム上でサポートされ、0 以外のドメイン (セグメント) に対する PCI config アクセスのサポートを可能にしました。

4 台以上のディスクで作成された Promise RAID1 の graid 実装に関する問題が修正されました。アレイは再起動までしか動作しませんでした。

Intel ワイヤレスインターフェイス用の iwlwifi(4) ドライバが更新され、BE200 までのチップセットをサポートするようになりました。(FreeBSD Foundation による後援) (minipci.biz による後援)

Realtek ワイヤレス PCI インターフェイス用の rtw88(4) ドライバが更新されました。

ネイティブおよび LinuxKPI ベースのワイヤレスドライバに対して、 多くの安定性のための修正が行われました。(FreeBSD Foundationによる後援)

USB イーサネットアダプタ用の smsc(4) ドライバは、それを渡す Raspberry Pi システムの bootargs から MAC アドレスを取得するようになり、そうでない場合には、ハードウェアから MAC アドレスが提供されない場合に、安定した MAC アドレスを生成するために ether_gen_addr(9) の使用にフォールバックするようになりました。

# ストレージ
この節では、ローカルとネットワークの両方で、ファイルシステムとその他のストレージサブシステムの変更と追加について説明します。

## 一般的なストレージ
汎用ファイルシステムコードにおけるvnodeリサイクルの問題のデバッグと解決の過程で、vnode関連統計のsysctlsがvfs.vnodeの下にグループ化され、より見やすくなりました。

## NFSの変更
NFS サーバ（nfsd(8)、nfsuserd(8)、mountd(8)、gssd(8) および rpc.tlsservd(8)）は適切に設定された vnet jail 内で実行できます。vnet jail は、それ自身のファイルシステム上になければならず、 allow.nfsd jail パラメータを設定しなければならず、 enforce_statfs を 0 に設定することはできません。jail(8)、nfsd(8) および mountd(8) を参照してください。

マウント時に Kerberos 認証 (TGT や keytab) なしで Kerberized NFSv4.1/4.2 のマウントを可能にする、新しい syskrb5 マウントオプションが利用可能になりました。mount_nfs(8) を参照してください。

## ZFSの変更
OpenZFS がバージョン 2.1.14 にアップグレードされました。

zfsd(8) デーモンは、あまりにも多くの I/O 遅延イベントを生成するディスクをフォールトするようになりました。(Axcient による後援)

# ネットワーク
この節では、FreeBSDのネットワークに影響を与える変更について説明します。

## 一般的なネットワーク
ソケットリッスンキューのオーバーフローによる syslog メッセージのロギング優先度を、 sysctl kern.ipc.sooverprio で設定できるようになりました。デフォルトは7で、LOG_DEBUGに対応します。値 -1 はロギングを抑止します。listen(2) を参照してください。

netgraph の ng_ipfw(4) モジュールは、もはやクッキーを 16 ビットに切り詰めず、完全な 32 ビットを許容します。

IPv6 RFC 4620 nodeinfo のサポートがデフォルトで無効化されました。(FreeBSD Foundation による後援)

pf フィルタルールは、ホストから開始された接続に対して pf rdr ルールを有効にするために、ローカルに配信されるパケットに対してオプションで有効にできます。これにより、 lo0 に配送されたパケットにマッチするルールの動作を変更できます。この機能を有効にするには、sysctl net.pf.filter_local=1; service pf restart コマンドを使用してください。この機能を有効にする場合、loルールにset skipを追加するなどして、ローカルに配送されるパケットがフィルタリングされないようにするのが最善です。

# ハードウェアのサポート
この節では、物理マシン、ハイパーバイザー、仮想化環境に対する一般的なハードウェアのサポート、およびこの文書の他の節に当てはまらないハードウェアの変更と更新について説明します。

## ハードウェアアーキテクチャのサポート
BeagleBone Black (armv7)はサポートされなくなりました[^bbb]。現在のブートファイル(DTB)[^dtb]では動作しません。
[^bbb]: ええっ？ホントですか？BeagleBone Blackで[こんなこと](https://qiita.com/koizumistr/items/50ade01536ff0a385eed)やろうかと思っていたのに、、、
[^dtb]: ここよく分かっていません。訳した時には現在のブートファイルの名前か形式かと思っていたのですが、もしかしたら“Don’t text back.”の略で、「おい、俺に聞くなよ」ということなのかもです。私は聞きたいのですが、、、

## 仮想化のサポート
Google Virtual NIC (gve(4)) がサポートされました。(Google による後援)

# 将来のFreeBSDリリースに関する一般的な注意事項
FreeBSD 15.0では、armv7以外の32ビットプラットフォームのサポートは予定されていません。armv6、i386、powerpcプラットフォームは非推奨であり、削除される予定です。64ビットシステムでは、古い32ビットバイナリを実行できます。

FreeBSD 15.0およびstable/15では、armv7をTier 2アーキテクチャとしてサポートする予定です。しかし、FreeBSD 16.0ではarmv7は削除されるかもしれません。15.xと16.xの両方におけるarmv7の状況については、15.0のリリース時に改めてお知らせします。

COMPAT_FREEBSD32オプションによる64ビットプラットフォーム上での32ビットバイナリの実行のサポートは、 少なくともstable/15およびstable/16ブランチでは継続されます。cc -m32による個別の32ビットアプリケーションのコンパイルサポートも、少なくともstable/15ブランチでは継続され、適切なヘッダが/usr/includeに、ライブラリが/usr/lib32に含まれます。

FreeBSD 15.0以降のリリースでは、portsは非推奨の32ビットプラットフォームのサポートを含みません。これらの将来のリリースでは、非推奨の32ビットプラットフォーム用のバイナリパッケージやportsからのパッケージのビルドはサポートされません。

FreeBSD stable/14およびそれ以前のブランチでは、32ビットカーネルとworldのサポートは維持されます。portsは、stable/14およびそれ以前のブランチがportsシステムでサポートされている限り、32ビットシステム用のportsやパッケージの構築に関する既存のサポートを維持します。しかし、すべての32ビットプラットフォームはTier-2またはTier-3であり、アップストリームが32ビットプラットフォームを非推奨とするにつれて、個々のportsのサポートは低下していくことが予想されます。

現在のサポートスケジュールでは、stable/14はFreeBSD 14.0-RELEASEのリリースから5年後にEOL(End of Life)を迎えます。stable/14のEOLは、ソースリリース、ビルド済みパッケージ、portsからのアプリケーションのビルドサポートを含む、非推奨の32ビットプラットフォームのサポートの終了を意味します。2023年11月の14.0-RELEASEのリリースにより、非推奨の32ビットプラットフォームのサポートは2028年11月に終了します。

FreeBSD 15.0がリリースされる際には、15.0以降で非推奨とされるプラットフォームの一つ以上のサポートを拡張することで、プロジェクトはこのアプローチを変更する可能性があります。どのような変更も、コミュニティからのフィードバックと、 これらのプラットフォームをサポートするための努力によって進められるでしょう。32ビットプラットフォームからの移行には、FreeBSD 14.0-RELEASEおよびそれ以降のリリース、あるいはstable/14ブランチを使用してください。