LoginSignup
1
1

FreeBSD 14.0-RELEASEリリースノート

Last updated at Posted at 2024-02-07

「はじめに」

この記事はFreeBSD 14.0-RELEASE Release Notesの日本語訳です。翻訳時点では、普段使っている(GhostBSDが依存している)FreeBSDのバージョンが13.2-STABLEのようですので(いや、それだけではないですね。中身が分からずに訳しているところもありますし、それに最近集中力が、、、)、訳の正確さは保証できません。なので、「ふつーはそう訳さねーよ」という指摘は大歓迎です。

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

では、以下、翻訳です。

要約

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

はじめに

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

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

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

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

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

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

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

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

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

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

ブートローダーには多くの改良が加えられており、ブートパーティション上のブートローダーのアップグレードは、特にシステムが EFI 経由で起動する場合、ほとんどのケースで推奨されます。ルートが ZFS ファイルシステム上にある場合、プールをアップグレードするのであればブートローダーの更新は必須であり、ブートローダーの更新を最初に行う必要があります。ほとんどの場合、ZFSプールのアップグレードはルートファイルシステムには推奨されませんが、ブートローダーを更新することで、将来プールがアップグレードされた場合にシステムが起動不能になることを回避できることに注意してください。ブートストラップの更新手順は、ブート方法(EFI または BIOS)に依存し、ディスクのパーティション方式にも依存します。次のいくつかのセクションでは、順番にそれぞれについて説明します。

バイナリまたはソースアップグレードを使用して EFI 経由でブートするシステムに関する注意事項:MS-DOSのEFIシステムパーティション(ESP)には、ブートローダーのコピーが1つ以上あり、ファームウェアがカーネルをブートするために使用します。使用中のブートローダーの場所は、コマンド efibootmgr -v を使って知ることができます。BootCurrent に表示される値は、システムをブートするために使用されている現在のブートコンフィギュレーションの番号でなければなりません。出力の対応するエントリは以下のように + 記号で始まるはずです。

+Boot0000* FreeBSD HD(1,GPT,f859c46d-19ee-4e40-8975-3ad1ab00ac09,0x800,0x82000)/File(\EFI\freebsd\loader.efi)
                      nda0p1:/EFI/freebsd/loader.efi (null)

ESPは既に/boot/efiにマウントされているかもしれません。そうでなければ、efibootmgrの出力にリストされているパーティション(この場合は nda0p1)を使って手動でマウントしてください。別の例はloader.efi(8)を参照してください。

efibootmgr -v出力のFileフィールドの値(この場合、\EFI\freebsd\loader.efi)は、ESP上で使用されているブートローダのMS-DOS名です。マウントポイントが/boot/efi の場合、このファイルは/boot/efi/efi/freebsd/loader.efiに変換されます。(MS-DOSFSファイルシステム上では大文字小文字は関係ありません。FreeBSDでは小文字を使います。) Fileの別の一般的な値としては、\EFI\boot\bootXXX.efiがあり、XXXはamd64ではx64、aarch64ではaa64、riscv64ではriscv64です。設定されているブートローダーもデフォルトのブートローダーも、/boot/loader.efiを/boot/efiの正しいパスにコピーして更新することが必要です。

BIOS経由でブートしGPTパーティションスキームを使用するシステムでは、ZFSルートプールをアップグレードしない限り、ブートストラップのアップグレードはオプションです(推奨されません)。アップグレードは、freebsd-bootパーティションが 180K以上の場合にのみ可能です。(512Kが今では標準です。)デバイス名とパーティションインデックスは、gpart showコマンドで確認できます。

=> 34 246162605 ada0 GPT (224G)
   34      1024    1 freebsd-boot (512K)

ZFSを使っている場合、gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0コマンドを実行することで、ブートコードを更新することができます。freebsd-bootのパーティションサイズには厳しい制限があり、この方式は将来サポートできなくなる可能性があることに注意してください。このようなシステムのユーザーは、既存のスワップパーティションから領域を切り出すなどして、EFIへのアップグレードを検討すべきです。

システムがBIOS経由で起動し、MBRパーティションスキームを使用している場合、またはGPT freebsd-bootパーティションが180Kより小さい場合、ブートコードを更新することはできず、したがってルートZFSストレージプールをアップグレードすることもできません。

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

セキュリティと正誤表

この節では、13.2-RELEASE以降のさまざまなセキュリティ勧告と正誤表を示します。

セキュリティ勧告

勧告 日付 トピック

勧告はありません。

正誤表

正誤表 日付 トピック

お知らせはありません。

FreeBSD 13.1とFreeBSD 13.2にマージされた重要な変更点

FreeBSD 14.0には、FreeBSD 13.0のリリースから2年半以上にわたる開発が含まれています。この作業の一部は、古い開発ブランチに取り込まれ、FreeBSD 13のマイナーリリースに含まれました。

(とりあえず省略します。気が向いたら頑張るかもしれませんが、一部はFreeBSD 13.2-RELEASEリリースノートに載っているはずですので。)

14.0-RELEASEでの変更点

ユーザーランド

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

ユーザーランドの設定の変更点

rootユーザーのデフォルトシェルが sh(1)になり、対話的な使用のための多くの新機能が追加されました。

デフォルトのメール転送エージェント(MTA)が sendmail(8)ではなく、Dragonfly Mail Agent (dma(8))になりました。MTAの設定はmailer.conf(5)経由で行なわれます。 sendmail(8)とその設定は引き続き利用可能です。

mta_start_script設定変数は、othermta起動スクリプトとともに、rc.conf(5)から廃止されました。

jail(8)は、jail.conf(5)ファイル中の.includeディレクティブをサポートします。そこではファイル名のglobをサポートします。

ワンタイムパスワード機能OPIE、opie(4)は基本システムから削除されました。まだ使用したい場合は、security/opie portをインストールしてください。そうでない場合は、PAMポリシーからpam_opieおよびpam_opieaccessに関する記述をすべて削除するか、コメントアウトするようにしてください。etcupdate(8) は、通常、手元のポリシーに対してこれを処理します。

SHARED_TOOLCHAINビルド設定オプションが削除されました。静的にリンクされたツールチェーンのビルドは、一般的な NO_SHARED オプションを使用することでまだ可能です。(FreeBSD Foundationによる後援)

ロケールの扱いが CLDR 41.0 と Unicode 14.0 にアップグレードされました。

フランス国家標準化機構によって "NF Z71-300" として正規化された新しいフランス語 bépo キーボード (バージョン 1.1rc2) 用のレイアウト設定が追加されました。

rc.d スクリプト (rc(8) を参照) は、procname を定義していなくても、また PID ファイルを持っていなくても、statusメソッドを持つことが許されるようになりました。

ユーザーランドのアプリケーションの変更点

base64(1)ユーティリティが追加されました。

bhyve(8)ハイパーバイザがオプションでTPM (Trusted Platform Module)パススルーをサポートするようになりました。これは直接アクセスではありませんが、ゲストからのコマンドは物理TPMに転送されます。

GPUパススルーがbhyve(8)でAMDおよびIntel GPU用に改良されました。パススルーはすべてのケースで動作するわけではなく、設定方法はまだ文書化されていません。

cpuset(1)ユーティリティが/usr/binから/binに移されて、スタートアップ処理中に常に使用可能になりました。/usr/bin/cpusetはシンボリックリンクになりました。

date(1)ユーティリティにタイムゾーン変換用の-zオプションが追加されました。

diff(1)ユーティリティが--colorオプションをサポートしました。

非推奨のfmtree(8)ユーティリティが削除されました。

freebsd-update(8)は、アップグレードが進行中ではなく、ロールバックが要求されない場合には、/var/db/freebsd-update 以下のファイルを削除してもよいというドキュメントを出力するようになりました。(FreeBSD Foundationによる後援)

新しいfwget(8)ユーティリティは、ファームウェアを必要とする周辺機器についてシステムを検査し、 それらに適切なパッケージをインストールします。今のところ、PCIサブシステムのみがサポートされており、IntelおよびAMD GPU用のビデオファームウェアのみが知られています。(Beckhoff Automation GmbH & Co. KGによる後援)

head(1)とtail(1)の使い勝手が以下のように改善されました。

  • 一貫して -q と -h オプションをサポートします
  • SI 接尾辞を持つ数値を許容します
  • head(1)の行に関する2^31の制限を除去しました

makefs(8)が実験的にZFSをサポートするようになりました。ステージングディレクトリから生成された1つ以上のデータセットを含む、単一のディスクvdevを基盤とするZFSプールを生成することが可能です。(FreeBSD Foundationによる後援)

minigzip(1)ユーティリティが削除されました。

mandoc(1)ユーティリティは、リストの-widthの処理におけるマクロ処理の欠落を回避するようになり、その結果、リストカラムのより正確な幅が得られるようになりました。(Dell EMC Isilonによる後援)

mixer(8)ユーティリティは、ボリュームが絶対値かパーセント値かを推測しようとしなくなりました。%が付加されたパーセントを受け付けるようになりました。それ以外の場合は、ボリュームは絶対値です。

netcatユーティリティnc(1)がif_tun(tun(4))ブローカになれるようになりました。 (Zenarmorによる後援) (OPNsenseによる後援) (Klara, Inc.による後援)

netstat(1)ユーティリティが-iオプションで正しい列幅を計算するようになり、-w オプションが不要になりました。

portsnap(8)ユーティリティが削除されました。ユーザは、pkg install git、その後 git clone https://git.FreeBSD.org/ports.git /usr/ports を使用してportsツリーを取得することが推奨されます。

pw(8)およびbsdinstall(8)プログラムは、ユーザのホームディレクトリを/usr/homeではなく/homeにデフォルトで作成するようになりました。/usr/homeを参照する /homeのデフォルトのシンボリックリンクは、もはや作成されません。

sleep(1)ユーティリティが秒以外の単位を受け付けるようになり、合計された複数の遅延値(たとえば、1h 30m)を受け付けるようになりました。

sockstat(1)ユーティリティがcapsicumのサンドボックスで実行されるようになりました。

systat(1)ユーティリティに、CAM I/Oスケジューラによって計算された I/Oレイテンシを報告する新しいコマンドiolatを追加しました。(Netflixによる後援)

新しいユーティリティtcpsso(8)は、例えば輻輳制御モジュールやTCPスタックを変更するようなソケットオプションを既存の TCP エンドポイントに適用できます。(Netflixによる後援)

Telnetデーモンtelnetd(8)を削除しました。必要なら net/freebsd-telnetdというportが利用可能です。クライアントは影響を受けません。

PROFILEオプションはデフォルトでは無効になっているため、システムライブラリのプロファイル化されたバージョンは提供されません。ハードウェアベースのプロファイリング(例えば hwpmc(4))が推奨されます。(FreeBSD Foundationによる後援)

バイナリ中の圧縮されたデバッグセクションは、リトルエンディアンのターゲットではデフォルトで有効です。(FreeBSD Foundationによる後援)

armv7ディストリビューションセットを生成するための設定が追加されました。arm64でjailをビルドする時に有用でしょう。

提供されたソフトウェア

One True Awk (awk(1))1が、第1版である20210727に更新されました。(第2版は14.1-RELEASEに含まれる予定です。)FreeBSDのパッチは、1つを除いて、すべてアップストリームされるか、破棄されました。ロケールは範囲には使われなくなりました。gawkやmawkとの互換性が向上しました。16進数文字列は以前のFreeBSDと同様に数値として解釈されることに注意してください。FreeBSD 15では、アップストリームおよび現在のPOSIX標準と一致するように変更する予定です。

bc(1)およびdc(1)コマンドがバージョン6.6.0に更新され、行編集や複数のread()コマンドを持つ複雑なスクリプトの問題が修正され、bcの(非標準の)拡張数学ライブラリにいくつかの関数が追加されました。

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

libfido2がバージョン1.13.0にアップグレードされました。(FreeBSD Foundationによる後援)

llvm-objdump(1)ユーティリティは、常にobjdump(1)としてインストールされるようになりました。(FreeBSD Foundationによる後援)

OpenSSHがバージョン9.5p1にアップグレードされました。リリースノート全文は https://www.openssh.com/txt/release-9.5 にあります。(FreeBSD Foundationによる後援)

scp(1)ユーティリティのデフォルトが、従来のscp/rcpプロトコルではなく、SFTPプロトコルになりました。これにより、ワイルドカードの展開文字をダブルクオートする必要がなくなりました。(FreeBSD Foundationによる後援)

ssh(1)で、RSA/SHA-1署名がデフォルトでは無効化されるようになりました。ユーザの~/.ssh/configファイルで、ホストごとに有効にすることは可能です。(FreeBSD Foundationによる後援)

ssh(1)のVerifyHostKeyDNSオプションは、OpenSSHの配布に従って、デフォルトでnoになりました。X11Forwardingオプションのデフォルトもnoになりました。(FreeBSD Foundationによる後援)

OpenSSHからHPNオプションの取り扱いが削除されました。HPNサポートはかなり前に廃止されましたが、後方互換性のために設定オプションはまだ受け入れられていました (そして無視されていました)。(FreeBSD Foundationによる後援)

ssh(1)クライアントからVersionAddendumオプションが削除されました。(FreeBSD Foundationによる後援)

OpenSSLがバージョン3.0.12にアップグレードされました。これは、寿命を迎えたバージョン1.1.1からのメジャーアップグレードです。基本システムの多くのコンポーネントは後方互換のAPIを使用していますが、後ほど移行する予定です。(FreeBSD Foundationによる後援)

tcpdumpがバージョン4.99.4にアップグレードされました。(FreeBSD Foundationによる後援)

libpcapがバージョン1.10.4にアップグレードされました。(FreeBSD Foundationによる後援)

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

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

zstdがバージョン1.5.2にアップグレードされました。(Klara, Incによる後援)

非推奨のアプリケーション

mergemaster(8)は非推奨となりました。その代替はetcupdate(8)です。

ランタイムライブラリとAPI

libncurseswライブラリ(ncurses(3X) を参照)をlibtinfowとlibncurseswに分割しました。リンカスクリプトは、利用者に対しこれを透過的にすべきです。pkg-config(8) ファイルがインストールされるようになり、portsがベースからのncursesのセットアップを検出しやすくなりました。

ncurses(3X)ライブラリは、terminfo(5)をtermcap(5)と同様に使用できるようになり、terminfoを優先的に使用します。

ncurses(3X)のterminfoデータベースのデフォルトの検索パスに/usr/local/share/terminfoを追加しました。

glibcベースのインターフェイスを採用したPOSIXに合わせて、qsort_r(3)のプロトタイプを変更しました。

COMPAT_LIB32ビルドオプションがaarch64(arm64)用に実装され、デフォルトで有効になりました。これにより、ほとんどのarmv7 32ビットバイナリをビルドして実行するための、arm64システム用のarmv7 32ビット互換ライブラリとヘッダファイルが提供されます。

クラウドのサポート

この節では、クラウド環境のサポートに関する変更点を扱います。

FreeBSDは現在、AWS上で実験的なZFS-root EC2 AMIを提供しています。(https://www.patreon.com/cperciva による後援)

FreeBSDがAWS上で実験的なcloud-init EC2 AMIを提供するようになりました。詳しくはnet/cloud-init portを参照してください。(https://www.patreon.com/cperciva による後援)

FreeBSDは現在、Azure用にamd64イメージだけでなくarm64イメージも提供しています。UFSと実験的なZFSのイメージの両方が利用可能です。Gen2 VMがサポートされました。(FreeBSD Foundationによる後援)(Microsoftによる後援)

Microsoft Azure Network Adapter (MANA) VF(仮想機能)がサポートされました。(Microsoftによる後援)

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

カーネル

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

一般的なカーネルの変更点

SMPシステムがamd64とarm64で最大1024コアをサポートするようになりました。多くのカーネルCPUセットが、過剰なメモリ消費を避けるために動的に割り当てられるようになりました。カーネルのcpuset ABIが更新され、より高い上限がサポートされるようになりました。(FreeBSD Foundationによる後援)

ACPIシステムが_CR3クリティカルスタンバイ(S3)閾値をサポートするようになりました。

acpi_timer_testはデフォルトで無効になっており、ACPI-safeではなくACPI-fast の使用を強制し、ブートプロセスを高速化します。hw.acpi.timer_test_enabled=1チューナブルを設定することで、broken-ACPI-timersワークアラウンドを再び有効にすることができます。計時の問題が観測された場合、loader.conf(8)にhw.acpi.timer_test_enabled=1を入れてテストし、問題が修正されたかどうか報告してください。

boottrace(4) は、システムのブート中およびシャットダウン中のトレースイベントをキャプチャするための新しいカーネル-ユーザ空間インタフェースです。イベントアノテーションは、カーネルのブートとシャットダウンのパス、システムユーティリティ(init(8)、shutdown(8)、reboot(8))および(boottrace(8) 経由の)rc(8)スクリプトに存在します。これはデフォルトのGENERICカーネルで利用可能で、 sysctl(8)変数をトグルすることで有効にできます。(NetAppによる後援)(Klara, Incによる後援)

XChaCha20-Poly1035 AEAD暗号のサポートがカーネル暗号に追加されました。(FreeBSD Foundationによる後援)

curve25519に対するカーネル暗号にAPIが追加されました。(FreeBSD Foundationによる後援)

FreeBSDは、amd64 FIRECRACKERカーネル設定により、Firecracker VMM内で実行できるようになりました。(https://www.patreon.com/cperciva による後援)

FreeBSDの再起動が速くなりました。kern.reboot_wait_time sysctlが追加され、コンソールにすべてのカーネルメッセージを表示した後、再起動するまでの遅延を制御できるようになりました。デフォルトは0で、これを1に設定すると以前の動作(1 秒の遅延)に戻ります。(https://www.patreon.com/cperciva による後援)

新しいDTraceプロバイダ、kinstが追加されました。dtrace_kinst(4)を参照してください。このプロバイダは FBT(function boundary tracing)プロバイダと同様にカーネル命令をトレースできます。(GSoC 2022を通じたGoogle, Inc.による後援)

kinstがarm64とriscvに移植されました。(FreeBSD Foundationによる後援)

LLVMのMemorySanitizerがamd64カーネルでも使えるようになりました。詳細はkmsan(9)のマニュアルページを参照してください。(FreeBSD Foundationによる後援)

LLVMのAddressSanitizerがamd64だけでなくarm64カーネルでも使えるようになりました。詳細はkasan(9)のマニュアルページを参照してください。(Juniper Networks, Inc.による後援)(Klara, Inc.による後援)

非対称暗号演算のサポートがカーネルのオープン暗号フレームワーク(OCF)から削除されました。最近のOpenSSLバージョンでは使用されないためです。

timerfdを使用するLinuxプログラムの移植を容易にするため、ネイティブのtimerfd(2)機能が追加されました。以前は、timerfdはLinuxエミュレーションでのみ利用可能でした。FreeBSD用にのみ書かれたプログラムでは、kqueue(2) EVFILT_TIMERフィルタが任意のタイマを確立するために推奨されます。

security.bsd.see_jail_proc sysctl(8)ノブによって制御されるプロセスの可視化ポリシーは、認可されていないユーザが、副jail内の同じ(実)UIDを持つプロセスをランダムにkillしたり、優先度を変更したり、デバッグしようとすることを防止することにより強化されました。また、他のプロセス可視化ポリシーと同様に、MACポリシーによってオーバーライド可能になりました。(Kumacom, SASによる後援)(FreeBSD Foundationによる後援)

security.bsd.see_other_gids sysctl(8)ノブによって制御されるプロセスの可視化ポリシーは、プロセスにアクセスしようとするユーザがプロセスのグループのメンバであるかどうかを決定する際に、プロセスの実効グループではなく、プロセスの実グループを考慮するように修正されました。その理論的根拠は、あるユーザは setgidビットによってさらなる特権を獲得した場合でも、そのユーザが起動したプロセスを見続けるべきであり、一方、一時的にそのユーザのプライマリグループに入った特権ユーザによって起動されたプロセスは見るべきでないというものです。この新しい動作は、これまでsecurity.bsd.see_other_uidsがユーザーIDに対して行なってきたこと(つまり、あるプロセスの実効IDではなく実ユーザーIDを考慮すること)と一貫しています。(Kumacom, SASによる後援)(FreeBSD Foundationによる後援)

AMD Zen2プロセッサに影響するZenbleedバグが(チキンビットによって)自動的に緩和されるようになり、影響を受けるマシン上での誤動作やデータリークを防げるようになりました。必要であれば、machdep.mitigations.zenbleed.enable sysctl(8) ノブにより、手動で緩和の適用を制御できます。詳細については、新しいmitigations(7)マニュアルページを参照してください。(FreeBSD Foundationによる後援)

デバイスとドライバ

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

デバイスドライバ

ブートローダー、カーネル、ユーザーランドのシリアル通信のデフォルト速度は115200 bpsになりました。初期のx86 BIOSブートローダ(すなわち boot0sio)は9600 bps以上の速度をサポートしておらず、変更されていないことに注意してください。 boot0sioユーザはBOOT_COMCONSOLE_SPEED=9600を設定してすべてのブートコンポーネントに9600を使用するか、標準のboot0を使用してboot2ステージが115200のシリアルポートで開始するようにしてください。(FreeBSD Foundationによる後援)

デフォルトのベル音が 800Hz になりました。kbdcontrol(1) で再設定できます。ビープ音にサウンドカードを使用したい人のために、devd(8) との統合があります。 (Netflix による後援)

デフォルトの vt(4) コンソールを使用する場合、可聴ベルはもはやデフォルトでは有効になっていません。これを有効にするには、以下のコマンドを実行してください: sysctl kern.vt.enable_bell=1 および kbdcontrol -b normal

DPAA2(第2世代Data Path Acceleration Architecture:一部の NXP SoC に搭載されているハードウェアレベルのネットワーキングアーキテクチャ)が改良されました。DPAA2オブジェクトを抽象化レイヤーとして提供するNXP提供のファームウェアを実行し、dpniネットワークインタフェースを提供します。DPAA2チャネル間の分離が大幅に改善され、DMAリソースへのアクセスとクリーンアップ操作が分離され、高ネットワーク負荷(1 Gbit/sリンク)下でのカーネルパニックを回避できるようになりました。その他の改善点として、FDT/ACPI MDIOサポート、DPAA2上でのネットブート、個別のコマンドポータル(DPMCP)のサポートがあります。

Arm Corelink DMC-620 メモリコントローラと CMN-600 コヒーレントメッシュネットワークコントローラのサポートが hwpmc(4) と libpmc に追加されました。pmc.dmc-620(3) および pmc.cmn-600(3) を参照してください。 (ARM による後援) (Ampere Computing による後援)

i386 および Book-E powerpc 上で 4GB 以上の物理マップされたフレームバッファに影響するフレームバッファアドレッシングの修正が実装されました。

Intel ワイヤレスインターフェイス用の iwlwifi(4) ドライバが最新版に更新され、 WiFi 6E AX411/AX211/AX210 までのチップセットをサポートし、今後の BX および SC チップセットにも対応するようになりました。(FreeBSD Foundation による後援)

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

KVM 準仮想化クロック用の kvm_clock ドライバを追加しました。
(Juniper Networks, Inc. による後援) (Klara, Inc. による後援)

無線ドライバ用の net80211 レイヤとともに、Linux デバイスドライバをサポートするための KPI の安定性の修正と拡張が行われました。(The FreeBSD Foundation による後援)

NVMe ディスクは、デフォルトで nda デバイス、例えば nda0 になりました。nda(4) を参照してください。以前の nvd(4) デバイス名のシンボリックリンクは /dev に作成されます。しかしながら、fstab(5) のような設定は、新しいデバイス名を参照するように更新すべきです。nda デバイスとシンボリックリンクの使用を制御するオプションは nda(4) に記述されています。

以前の qat(4) ドライバは Intel の QAT ドライバに置き換えられました。新しいバージョンは、チップセットの暗号化および圧縮オフロード機能への追加のインタフェースを提供します。しかし、新しいドライバは Atom C2000 チップセットをサポートしていません。これらのチップセットのサポートを維持するため、古いドライバの名前は qat_c2xxx に変更されました。このため、C2000 ハードウェア上で qat(4) を使用しているユーザは、qat(4) の代わりに qat_c2xxx(4) がロードされていることを確認することが必要です。 (Intel Corporation による後援)

非推奨のドライバと削除されたドライバ

pms(4)ドライバのpmspcvは、大きくて、あまり使用されないため、x86用のGENERICカーネルコンフィギュレーションから削除されました。これは、loader.conf(5)にpmspcv_load="YES"と書くことで、モジュールとしてロード可能です。(Rubicon Communications, LLC ("Netgate")による後援)

VESAオプションはx86 GENERICおよびMINIMALカーネル・コンフィギュレーションから削除されました。カーネルモジュールとしてはまだ利用可能です。VESA は、デフォルトのコンソール vt(4) では使用されません。 (FreeBSD Foundation による後援)

ISA サウンドカード用のドライバを削除しました。 (FreeBSD Foundation による後援)

AHB バスフロントエンドは MIPS でのみ使用されていたため、ath(4) から削除されました。

非推奨の amr(4) ドライバを削除しました。 (Netflix による後援)

時代遅れの iscsi_initiator(4) が削除されました。その代替となる iscsi(4) は、いくつか前のメジャーリリースで導入されたものです。(FreeBSD Foundation による後援)

非推奨の iir(4) ドライバを削除しました。 (Netflix による後援)

非推奨の mn(4) 同期シリアルドライバを削除しました。(FreeBSD Foundation による後援)

非推奨の mly(4) ドライバを削除しました。 (Netflix による後援)

非推奨の nlmrsa(4) ドライバを削除しました。 (Chelsio Communications による後援)

非推奨の twa(4) ドライバを削除しました。 (Netflix による後援)

ストレージ

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

一般的なストレージ

gconcat(8) とそのカーネルサポートは、gconcat デバイスが作成された時点では存在しなかったデバイスを連結デバイスに追加する機能を持つようになりました。

新しい gunion(8) ユーティリティは、書き込み可能なディスク上の読み込み専用ディスクへの変更を追跡します。これは、ファイルシステムの修復やソフトウェアのアップグレードのような、ディスクに対する暫定的な変更を行い、それをコミットまたは元に戻す場合に便利です。 (Netflix による後援)

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

NFSの変更点

NFS は、nfsd(8)、nfsuserd(8)、mountd(8)、gssd(8) および rpc.tlsservd(8) を含む VNET jail での NFS サーバの実行をサポートするようになりました。VNET jail は、それ自身のファイルシステム上になければならず、 allow.nfsd jail パラメータを設定しなければならず、 enforce_statfs を 0 に設定することはできません。UDPおよびpNFSサーバー構成の使用は許可されていません。

NFSv4 マウントでは、NFS クライアントはマイナーバージョン 0 ではなく、NFS サーバがサポートする NFSv4 の最も高いマイナーバージョンをデフォルトで使用するようになりました。minorversionマウントオプションを使えば、このデフォルトを上書きできます。

FreeBSD NFS クライアントは、vfs.maxbcachebuf チューナブルによって 1Mバイトの I/O サイズを使用するように設定できるようになりました。LinuxのNFSクライアントも1MバイトのI/Oを実行できます。これを実行するには、kern.ipc.maxsockbufの値を増やす必要があるでしょう。コンソールメッセージで、そのための設定が提案されます。FreeBSD NFS サーバの最大 I/O サイズは、nfsd(8) が実行されていない状態で sysctl vfs.nfsd.srvmaxio を使用して、2のべき乗で最大 1Mバイトまで増加させることができることに注意してください。

NFSv4.1/4.2 クライアントとサーバは、セッションが切断された場合にコンソールメッセージを生成するようになり、ユーザが /etc/hostid 文字列の値がすべての NFSv4.1/4.2 クライアントで一意であることを確認するよう提案するようになりました。

NFSv4.1/4.2 の intr マウントオプションによるマウントが、nolockd マウントオプションも使用している限り、100% 正しくはないものの、かなり使えるようになりました。詳細は mount_nfs(8) のマニュアルページを参照してください。

新しい syskrb5 マウントオプションが、Kerberos化された NFSv4.1/4.2 マウントで利用可能になりました。NFSv4.1/4.2 の機能が AUTH_SYS 認証を提供するために使用されるため、マウント時に Kerberos 認証は必要ありません。mount_nfs(8) を参照してください。

NFS サーバの NFS マウントプロトコルに SP4_MACH_CRED のサポートが追加されました。この機能は、Kerberos化されたマウント用の Linux NFSv4.1/4.2 クライアントで使用されます。以前はフォールバックで処理されていましたが、現在は直接サポートされています。

UFSの変更点

ジャーナル化されたソフトアップデートで動作している UFS ファイルシステム上で、スナップショットを使用してバックグラウンドでファイルシステムのチェックを実行できるようになりました。(FreeBSD Foundation による後援)

スーパーブロック、シリンダグループマップ、および inode に、破損を検出するためのチェックハッシュが追加されました。スーパーブロック (120) とシリンダグループ (20) に対して、以前のマジックナンバーチェックよりもはるかに広範なチェックが行なわれます。(FreeBSD Foundation による後援)

libufs(3) ライブラリがこれらのチェックを含むよう更新され、すべてのファイルシステムユーティリティでこれらのチェックが行なわれるようになりました。このチェックは、libufs にも含まれる 1 つのカーネルファイルで実装されています。libufs のもうひとつの変更点は、代替スーパーブロックを見つけるコードが fsck_ffs(8) から共有ファイルに移動され、すべてのファイルシステムユーティリティと同様にカーネルローダでも利用できるようになったことです。(FreeBSD Foundation による後援)

ZFSの変更点

OpenZFSがバージョン2.2にアップグレードされました。新機能は以下の通りです。

  • ブロック・クローン。ファイル・コピーでブロックの浅いコピーを可能にします。これはオプションで、デフォルトでは無効になっています。sysctl vfs.zfs.bclone_enabled=1 で有効にできます。
  • エラーログのスクラブ (zpool scrub -e)
  • BLAKE3チェックサム。高速で、現在推奨されている安全なチェックサムです。
  • 矯正zfs receiveは、破損したデータを修復できます。
  • vdevとzpoolのユーザプロパティ。データセット・ユーザ・プロパティに似たものです。

パフォーマンスの向上は以下の通りです。

  • 完全適応型 ARC。手動チューニングの必要性を最小化する統一された ARC です。
  • zstd の早期アボート。これにより、圧縮不可能なデータでの効率が向上しました。
  • I/Oプリフェッチの改善
  • 全般的な最適化。

ZFS が 32 ビット powerpc/powerpcspe で有効になりました。

その他のストレージの変更点

msdosfs(5) ファイルシステムは、FAT12 および FAT16 ファイルシステム (例えば EFI ブートパーティション) のルートディレクトリに利用可能なディレクトリエントリを記録し、それらを inode として報告するようになりました。

msdosfs(5) ファイルシステムは、FAT12 および FAT16 ファイルシステムの使用可能なブロックと使用済みのブロックを正しく計算するようになり、有効だが一般的ではないパラメータを使用して作成されたファイルシステムのマウントを拒否しないようになりました。

合成ファイルシステム (devfs(5)、procfs(5) など) は、100% 満杯として報告されないように、0 ブロックが使用されていると報告するようになりました。

オプションで zstd(1) で圧縮された POSIX tar アーカイブでバックアップされる tarfs(5) ファイルシステムが追加になりました。(Juniper Networks, Inc.による後援) (Klara, Inc.による後援)

ブートの変更点

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

ブートローダーの変更点

lua 風の loader(8) は、loader_conf_files に現れる .lua ファイルを lua として解釈し、サンドボックス内で実行するようになりました。既存のローダ環境変数は、サンドボックスのグローバル変数として利用可能で、グローバル変数集合は、テーブル値でない場合には、設定ファイルの実行に成功した時点で、ローダ環境に反映されます。有効な lua 名ではない名前の環境変数は、たとえば_ENV['net.fibs']のように_ENV のインデックスとしてアクセスできます。

EC2インスタンスは、利用可能な場合はUEFIを使用して起動するようになり、起動プロセスが大幅に高速化されました。(https://www.patreon.com/cperciva による後援)

ネットワーク

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

一般的なネットワーク

carp(4) が carp メッセージの送信先アドレスの設定をサポートし、ユニキャストアドレスを使用可能になりました。これは、特定の仮想コンフィギュレーションにおいて有用です。carp(4) および ifconfig(8) を参照してください。

if_bridge(4) のレイヤ 3 フィルタリングがフェイルセーフではない驚くべきことを行うので、net.link.bridge.pfil_member および net.link.bridge.pfil_bridge のデフォルトをゼロにしました。

netlink(4) は、RFC 3549 で定義されたユーザ/カーネル通信プロトコルであり、主にネットワーク設定のために使用されます。拡張され、改良され、デフォルトで有効化されました。多くのネットワーク設定ユーティリティが netlink を使用するように変更されています。

非推奨の NgATM (netgraph ATM サポート) と残りの ATM サポートが削除されました。

pf(4) パケットフィルタが、OpenBSD のシンタックスと動作でスクラブすることをサポートします。FreeBSD のスクラブルールがない場合、大域フラグ reassemble yes | no [no-df] は、パケットの再組み立てを行うかどうかを決定します。スクラブは、tos や ttl などの設定のように、マッチルールやパスルールの中で行うことができ、これもまたステートフルになります。OpenBSD と同様に、マッチルールが、dummynet(4) キューだけでなく完全にサポートされるようなりました。(InnoGames GmbH による後援)

pfsync(4) が IPv6 トランスポートを使用可能になりました。(InnoGames GmbH による後援) (FreeBSD Foundation による後援)

キューイング、スクラビングおよび route-to ルールのサポートを改善するため、pfsync(4) のパケットフォーマットが拡張されました。このフォーマットは古いリリースとは互換性がありません。ifconfig pfsync0 version 1301 を使用して、古いフォーマットを選択することが可能です。これは pfsync クラスタのメンバが同時にアップグレードされない場合に特に重要です。

wpa (wpa_supplicant(8) および hostapd(8)) に WiFi 6 のサポートが追加されました。

インターネットのネットワーク

IPv6 over IPv4 用の 6to4 インタフェース if_stf(4) が IPv6 Rapid Deployment (6rd) (RFC5969) をサポートするようになりましたs。19dc64451179 (Rubicon Communications, LLC ("Netgate")による後援)

rtsol(8) および rtsold(8) プログラムに、デフォルトで使用される最大 1 秒のランダム遅延を無効にする -i オプションが追加されました。rc.conf(5) のこれらのプログラムのデフォルトオプションは -i を含みます。 (https://www.patreon.com/cperciva による後援)

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

sysctl(8) のオプション net.inet.tcp.nolocaltimewait がデフォルトで有効化されました。これにより、ローカルで終了した TCP 接続に対する timewait エントリの作成を防止します。

TCP のデフォルトの輻輳制御メカニズムが CUBIC になりました。長時間のデータ転送では、NewReno と競合する場合、CUBIC は利用可能な帯域幅のわずかに高い割合を割り当てます。 (NetApp, Inc. による後援)

ブロードキャストアドレスとして設定されていない限り、サブネット上で最も低いアドレス(ホスト0)をブロードキャストしないようにIPv4が変更されました。これにより、サブネットで最も低いアドレスをホストに使用できるようになりました。

ハードウェアのサポート

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

14.0-RELEASEでサポートされるハードウェアの一覧と、サポートされるCPUアーキテクチャの完全なリストについては、プラットフォームのページを参照してください。

ハードウェアアーキテクチャのサポート

プロジェクトは14.0-RELEASEでarmv6の成果物を提供しなくなりました。

MIPSアーキテクチャと関連ハードウェアのサポートは終了しました。MIPS は13-STABLEブランチが存続する限り、引き続きサポートされます。

RISC-Vアーキテクチャのソフトウェア浮動小数点バリエーションであるriscv64sfのサポートが終了しました。利用可能なハードウェアはすべて通常のriscv64アーキテクチャでサポートされます。

仮想化のサポート

(原文空欄)

文書

この節では、マニュアル(man(1))のページや、基本システムに同梱されているその他の文書の変更について説明します。

manページ

hier(7) のページの正確さを改善するため、多くの調整とクリーンアップが行われました。

セクション 9、カーネルドキュメントの多くのページがレビューされ、正確さのために更新されました。

カーネルドキュメントのマニュアルページの導入部 intro(9) が完全に書き直されました。(FreeBSD Foundation による後援)

mi_switch(9) ページが書き直され、改善されました。(FreeBSD Foundation による後援)

新しい kern_yield(9) ページが追加されました。(FreeBSD Foundation による後援)

いくつかの古くなったセクション 9 のページを削除しました。(FreeBSD Foundation による後援)

portsコレクションとパッケージのインフラ

この節では、FreeBSD Ports Collection、パッケージのインフラストラクチャ、パッケージのメンテナンスとインストールツールの変更点を扱います。

パッケージ化の変更点

(原文空欄)

将来の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やpackagesの構築に関する既存のサポートを維持します。しかし、すべての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ブランチを使用してください。

  1. "One True Awk"というのは初めて聞く言葉ですが、「本家」ということみたいですね。詳しくはawkが新しくなる!?(以下略)あたりが参考になるかと。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1