FreeBSD 13.2-RELEASEリリースノート

# 「はじめに」
この記事は[FreeBSD 13.2-RELEASE Release Notes](https://www.freebsd.org/releases/13.2R/relnotes/)の日本語訳です。想像以上に知らない単語の羅列だったので、訳の正確さは保証できません。なので、「ふつーはそう訳さねーよ」という指摘は大歓迎です。

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

では、以下、翻訳です。

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

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

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

このFreeBSD 13.2-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.2-RELEASEの正誤表の最新版はFreeBSDのWebサイトで見ることができます。

この文書では、FreeBSD 13.1-RELEASE以降の新機能や変更点のうち、最もユーザが目にしやすいものを説明しています。一般に、ここに書かれている変更は、特に"MERGED"機能と書かれていない限り、13-STABLEブランチに固有のものです。

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

# FreeBSDの以前のリリースからのアップグレード
RELEASEバージョン(およびさまざまなセキュリティブランチのスナップショット)間のバイナリアップグレードは、freebsd-update(8)ユーティリティを使用してサポートされています。バイナリアップグレードの手順は、変更されていないユーザーランドユーティリティと、公式のFreeBSDリリースの一部として配布されている変更されていないGENERICカーネルを更新します。freebsd-update(8)ユーティリティでは、アップグレードするホストをインターネットに接続していることが必要です。

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

PowerPCアーキテクチャのユーザは、カーネルとworldのインストールに成功した後、kldxref /boot/kernelを手動で実行することが必要です。

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

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

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

## ユーザーランドの設定の変更点
growfs(7)起動スクリプトは、可能であればルートファイルシステムを拡張しながら、スワップパーティションを追加するようになり、以前に存在しなかった場合は、スワップパーティションを追加するようになりました。これは主に、rawイメージを使用してSDカードにインストールする場合に便利です。新しいrc.conf(5)変数であるgrowfs_swap_sizeが追加され、必要に応じて追加を制御できます。詳細については、growfs(7)を参照してください。

zfskeys起動スクリプトは、ZFSに保存されている鍵の自動読み込みをサポートしています。（Klara Inc. 後援）

新しいRCスクリプトzpoolreguidが追加されました。これは新しいGUIDを1つ以上のzpoolに割り当てます。データセットを共有するときの仮想化環境に有用です。

/etc/hostidファイルがなく、ハードウェアからの有効なUUIDがない場合、起動スクリプトhostidはランダム(バージョン 4)UUIDを生成するようになりました。また、/etc/machine-idファイルがない場合、hostid_saveスクリプトは、ホストIDのコンパクトバージョン(ハイフンのないもの)を/etc/machine-idに保存します。このファイルは、GLibなどのライブラリで使用されます。

rc.conf(5)変数のdefaultrouter_fibNおよびipv6_defaultrouter_fibNを使用して、プライマリ以外のFIBのデフォルトルートを追加できるようになりました。 (ScaleEngine Inc. 後援)

## ユーザーランドのアプリケーションの変更点
bhyve(8)ユーティリティは、virtio-inputデバイスエミュレーションをサポートするようになりました。これは、キーボード/マウス入力イベントをゲストに入力するために使用されます。コマンドライン構文は次のとおりです: -s <slot>,virtio-input,/dev/input/eventX。

kdump(1)ユーティリティが、Linuxシステムコールのデコードをサポートするようになりました。

killall(1) ユーティリティは、制御端末がpts(4)のプロセスに対して、-t pts/N という構文でシグナルを送れるようになりました。

nproc(1)ユーティリティが追加されました。これは同名のLinuxプログラムと互換性があります。

timeout(1)ユーティリティは/usr/binから/binに移動されました。

pciconf(8)ユーティリティにACS拡張機能のデコードのサポートが追加されました。(Chelsio Communications 後援)

procstat(1)ユーティリティは、新しく追加されたadvlockコマンドを使用して、ファイルの勧告ロックに関する情報を出力できるようになりました。

pwd_mkdb(8)ユーティリティは、コメントを/etc/master.passwdから/etc/passwdにコピーしなくなりました。

ppp(8)のMSSクランプが改善されました。

メトリック名の衝突による Prometheus サーバの混乱を避けるため、prometheus_sysctl_exporter(8)のメトリックエイリアシングが変更されました。tcp_log_bucket UMAゾーンの名前をtcp_log_id_bucketに変更し、一貫性を持たせるためtcp_log_nodeをtcp_log_id_nodeに変更しました。説明に"(LEGACY)"を含む sysctl変数はもはやエクスポートされません。これらは他のものに置き換えられたZFS sysctlによって使用されており、その多くは同じ Prometheusメトリック名へのエイリアスです(vfs.zfs.arc_maxとvfs.zfs.arc.max など)。

uuidgen(1)ユーティリティに、ランダムなUUID（バージョン 4）を生成する新しいオプション -r が追加されました。

inetd(8)によって呼び出されると、ctlstat -P はPrometheusへの取り込みに適した出力を生成するようになりました。ctlstat(8)を参照してください。 (Axcient 後援)

## 提供されたソフトウェア
Gavin Howardのbcが、バージョン 6.2.4 にアップグレードされました。

expat(libbsdxml)が、バージョン 2.5.0 にアップグレードされました。

fileが、バージョン 5.43 にアップグレードされました。

lessが、バージョン 608 にアップグレードされました。

libarchiveが、バージョン 3.6.2 にアップグレードされ、多くの信頼性が修正されました。リリースノートは https://github.com/libarchive/libarchive/releases で入手できます。

libeditが、バージョン 2022-04-11 にアップグレードされました。

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

サポートされているLLVMサニタイザがpowerpc64およびその亜種で有効になりました。

mandocが、バージョン 1.14.6 にアップグレードされました。

OpenSSHが、バージョン 9.2p1 にアップグレードされました。

OpenSSLが、バージョン 1.1.1t にアップグレードされました。

sendmailが、バージョン 8.17.1 にアップグレードされました。

sqlite3が、バージョン 3.40.1 にアップグレードされました。

tzcodeが、バージョン 2022g にアップグレードされ、タイムゾーン変更の検出が改善され、信頼性が修正されました。

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

unboundが、バージョン 1.17.1 にアップグレードされました。

xzが、バージョン 5.4.1 にアップグレードされました。

xz-embeddedが、3f438e15109229bb14ab45f285f4bff5412a9542 にアップグレードされました。

zlibが、バージョン 1.2.13 にアップグレードされました。

## ランタイムライブラリとAPI
libmdにSHA-512/224のサポートが追加されました。（Klara, Inc. 後援）

Linux形式のシステムコールトレースがsysdecode(3)およびkdump(1)でサポートされるようになりました。

ネイティブpthreadライブラリ関数は、Linuxセマンティクスをサポートできるようになりました。

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

## 一般的なカーネルの変更点
bhyve(8)ハイパーバイザとカーネルモジュールvmm(4)は、ゲストで 16 を超えるvCPUをサポートするようになりました。デフォルトでは、bhyveは各ゲストがホスト上の物理CPUの数と同じ数のvCPUを作成することを許可します。この制限は、ローダーチューナブルhw.vmm.maxcpuによって調整できます。

アドレス空間配置ランダム化（Address Space Layout Randomization、ASLR）は、64ビット実行可能ファイルに対してデフォルトで有効になっています。セグメンテーションフォールトなどでアプリケーションが予期せぬ失敗をした場合、必要に応じて無効にできます。一度限りの起動に対して無効にするには、proccontrol(1)コマンドを使用します: proccontrol -m aslr -s disable command。バイナリのすべての起動に対してASLRを無効にするには、elfctl(1)コマンドを使用します: elfctl -e +noaslr file。問題があれば、問題報告システム https://bugs.freebsd.org で、または freebsd-stable@FreeBSD.org メーリングリストに投稿して報告してください。(Stormshield 後援)

Intel Alder Lake(第12世代) およびおそらくRaptor Lake(第13世代) ハイブリッドCPUでの明らかなハードウェアページ無効化の問題に対する回避策が実装されました。このバグは、UFSおよびMSDOSFSでのファイルシステムの破損、およびおそらくその他のメモリの破損につながる可能性があります。低速のコア(Eコア)は、回避策を使用して低速のページ無効化方法を自動的に使用します。(FreeBSD Foundation 後援)

新しいカーネル設定ノブ、SPLIT_KERNEL_DEBUGは、カーネルとモジュールのデバッグデータを別々のスタンドアロンファイルに分割することを制御するために利用可能です。これは、WITHOUT_KERNEL_SYMBOLS オプションと相互作用し、13.0-RELEASEおよび13.1-RELEASEとは異なる動作をしますが、以前のリリースと同様に、デバッグデータのインストールのみを制御するようになりました。デフォルトは WITH_KERNEL_SYMBOLS と WITH_SPLIT_KERNEL_DEBUG で、デバッグデータのないカーネルとモジュールは /boot に、スタンドアロンデバッグファイルは /usr/lib/debug にインストールされます(13.0-RELEASE 以前のリリースではデフォルトでそうなっていました)。WITHOUT_KERNEL_SYMBOLSとWITH_SPLIT_KERNEL_DEBUGを使用すると、スタンドアロンデバッグファイルは生成されますが、13.0-RELEASE以前のリリースでWITHOUT_KERNEL_SYMBOLSを使用していたときと同様に、インストールされません。最後に、WITHOUT_KERNEL_SYMBOLS と WITHOUT_SPLIT_KERNEL_DEBUG を使用すると、WITHOUT_KERNEL_SYMBOLS を使用した 13.1-RELEASE と同様に /boot にデバッグ情報が組み込まれたカーネルとモジュールがインストールされます。(FreeBSD Foundation 後援)

PowerPCでは、pseriesのradix pmapがISA 3.0でサポートされています。これにより、POWER9インスタンスでは、pmapを管理するために必要なハイパーコールの数が減り、pseriesが大幅に速くなるはずです。

arm64上のLinuxプロセスでptrace(2)がサポートされるようになりました。

安定版ブランチのABI互換性を促進するために、CPUアフィニティシステムコールは、カーネルが使用するよりも小さいCPUセットに対してより寛容になりました。これにより、カーネルセットのサイズであるMAXCPUの増加が容易になります。

64ビットのlinux(4) ABIサポートが追加され、シグナル配信全体でCPU浮動小数点の状態を保存できるようになりました。

vDSO(仮想動的共有オブジェクト)のサポートは、linux(4) ABIでほぼ完了しました。

arm64 linux(4) ABIの状態は、amd64 linux(4) ABIと同等になりました。

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

## デバイスドライバ
em(4)ドライバは、新しいチップ 82580 および i350 で利用可能な全範囲の受信バッファサイズを正しくサポートするようになりました。

ena(4)ドライバが、バージョン 2.6.2 にアップグレードされました。(Amazon, Inc. 後援)

Intel Alder Lake CPUの基本サポートがhwpmc(4)に実装されました。

ice(4)ドライバがバージョン 1.37.7-k に更新されました。

irdma(4) RDMAドライバが Intel E810 イーサネットコントローラー用に導入され、RoCEv2 と iWARP プロトコルの両方をPFごとにサポートし、RoCEv2 がデフォルトになり、バージョン 1.1.5-k にアップグレードされました。42bad04a2156 (Intel Corporation 後援)

DPAA2(第2世代のデータパスアクセラレーションアーキテクチャ - 一部のNXP SoCに見られるハードウェアレベルのネットワークアーキテクチャ) の初期サポートが利用可能になりました。DPAA2オブジェクトを抽象化レイヤーとして提供するNXP提供のファームウェアを実行し、dpniネットワークインタフェースを提供します。(むき出しの熱意 :) および Traverse Technologies 後援)

Intel ワイヤレスインタフェース用の iwlwifi(4) ドライバが更新されました。(FreeBSD Foundation 後援)

複数の Realtek ワイヤレスPCIインタフェースをサポートするために、rtw88(4) ドライバが追加されました。現在、802.11 a/b/g に制限されています。詳細については、https://wiki.freebsd.org/WiFi/Rtw88 を参照してください。

Linuxデバイスドライバをサポートするために、KPIに多くの追加と改善が行なわれました。(FreeBSD Foundation 後援)

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

## NFSの変更点
NFSサーバがハングする問題が修正されました。この問題は、TCPでのSACK処理のバグが原因でした。

## UFSの変更点
ジャーナル化されたソフト更新を実行しているときに、UFSファイルシステムでスナップショットを作成できるようになりました。したがって、ジャーナル化されたソフト更新を実行しているライブファイルシステムでバックグラウンドダンプを実行できるようになりました。バックグラウンドダンプは、dump(8)に-Lフラグを指定することで要求されます。(以前のリリースでは、UFSスナップショットはジャーナリングされたソフト更新と互換性がありませんでした。) (FreeBSD Foundation 後援)

# ブートローダーの変更点
この節では、ブートローダー、ブートメニュー、およびその他のブート関連の変更について説明します。

## ブートローダーの変更点
loader.conf(5)変数 teken.fg_color および teken.bg_color が、明るい色を選択するために bright または light 接頭辞 (と色番号 8 から 15) を受け付けるようになりました。(FreeBSD Foundation 後援)

ビデオコンソール出力が消える原因となっていたloader(8)のいくつかのバグが修正されました。これらは、ブートローダーがカーネルを起動した後にハングするように見えました。（Netflix 後援）

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

## 一般的なネットワーク
カーネルwg(4) WireGuard ドライバが再統合されました。WireGuard プロトコルを使用して仮想プライベートネットワーク(VPN)インタフェースを提供します。(Rubicon Communications, LLC (「Netgate」) および FreeBSD Foundation 後援)

KTLS(カーネルTLS実装)に TLS 1.3 の受信オフロードサポートが追加されました。TLS 1.1 から 1.3 で受信オフロードがサポートされるようになりました。送信オフロードは、TLS 1.0 から 1.3 でサポートされています。(Netflix 後援)

netlink(4)ネットワーク設定プロトコルが利用可能になりました。これは RFC 3549 で定義された通信プロトコルであり、rawソケットを使用してユーザー空間とカーネルの間で構成情報を交換します。これは、サードパーティのルーティングプログラムとlinux(4) ABI によって使用されます。netlink(4)プロトコルは 13.2-RELEASE の GENERIC 設定には含まれていませんが、カーネルモジュールとして利用できます。

ipfw(4)で MAC アドレスの基数テーブルとルックアップがサポートされるようになりました。これにより、MAC アドレステーブルを構築してフィルタリングに使用できます。

カーネルモジュール dpdk_lpm4 および dpdk_lpm6 が利用可能になり、 loader.conf(5)経由でロードできるようになりました。非常に大量のルーティングテーブルを持つホストに最適化されたルーティング機能を提供します。これらはroute(8)経由で設定でき、モジュラー FIB 検索メカニズムの一部です。

TCP と SCTP で、多数のバグ修正があります。

# 将来のFreeBSDリリースに関する一般的な注意事項
OPIEは推奨されておらず、FreeBSD 14.0 で削除されます。

ce(4)およびcp(4)同期シリアルドライバは廃止され、FreeBSD 14.0 で削除されます。

ISAサウンドカードのドライバは廃止され、FreeBSD 14.0 で削除されます。(FreeBSD Foundation 後援)

mergemaster(8)ユーティリティは推奨されておらず、FreeBSD 14.0 で削除されます。その代替はetcupdate(8)です。(FreeBSD Foundation 後援)

minigzip (1)ユーティリティは廃止され、FreeBSD 14.0 で削除されます。

netgraph(NgATM)のATMの残りのコンポーネントは廃止され、FreeBSD 14.0 で削除されます。ATM NIC のサポートは以前に削除されていました。

Telnetデーモンtelnetd(8)は廃止され、FreeBSD 14.0 で削除されます。Telnet クライアントは影響を受けません。

geom(8)の VINUM クラスは推奨されておらず、将来のリリースで削除される予定です。

## デフォルトのCPUTYPEの変更
FreeBSD-13.0 から、i386 アーキテクチャのデフォルトの CPUTYPE が 486 から 686 に変更されます。

これは、FreeBSD Release Engineering チームが提供するバイナリを含め、デフォルトでは 686 クラスの CPU を必要とするバイナリが作成されることを意味します（これに限定されません）。FreeBSD 13.x は引き続き古い CPU をサポートしますが、この機能を必要とするユーザは、公式サポートから独自のリリースを作成する必要があります。

i486 および i586 CPU の主な用途は一般に組み込み市場であり、これらの CPU を搭載した新しいハードウェアは長い間衰退しており、これらのシステムの配備ベースの多くは統計的に引退に近づいているため、一般的なエンドユーザへの影響は最小限であることが予想されます。

この変更には、いくつかの要因が考慮されています。例えば、i486は64ビットアトミックを持っておらず、カーネルではエミュレートできても、ユーザーランドではエミュレートできません。さらに、32ビットのamd64ライブラリは、その設立当初からi686でした。

32ビットのテストの大半は、開発者がカーネルのCOMPAT_FREEBSD32オプションで64ビットハードウェア上のlib32ライブラリを使用しているため、この変更はより良いカバレッジとユーザー体験を保証します。これはまた、大多数のLinux®ディストリビューションがかなり長い間行ってきたことと一致しています。

これは、i386でのデフォルトのCPUTYPEの最後の変更になると予想されます。

:::note alert
この変更は、FreeBSD 12.x シリーズのリリースには影響しません。
:::