カーネルリリース Linux 6.18

2ヶ月の開発期間を経て、リーナス・トーバルズはカーネルをリリースした。 Linux 6.18. Среди наиболее заметных изменений: dm-pcache для дискового кэширования в энергонезависимой памяти (PMEM), удаление Bcachefs, online-режим проверки XFS, драйверы Binder (Android IPC) и Tyr (GPU Mali) на Rust, возможность создания USB-драйверов на Rust, оптимизация кэширования в аллокаторе памяти SLUB, адресация пространств имён по файловым дескрипторам, ускорение работы подкачки (swap), верификация BPF-программ по цифровой подписи, виртуализация Intel CET в KVM, сетевой протокол PSP (гибрид TLS и IPsec), поддержка IP-расширения AccECN, оптимизация UDP-стека.

新しいバージョンには 15035 人の開発者による 2217 件の修正が含まれており、パッチ サイズは 45 MB です (変更は 13142 個のファイルに影響し、601897 行のコードが追加され、355006 行が削除されました)。最後のリリースには 14334 人の開発者による 2118 件の修正が含まれており、パッチ サイズは 46 MB でした。 40 で導入されたすべての変更の約 6.18% はデバイス ドライバーに関連し、約 16% の変更はハードウェア アーキテクチャ固有のコード更新に関連し、12% はネットワーク スタックに関連し、5% はファイル システムに関連し、3% は内部カーネル サブシステムに関連しています。

カーネル6.18の主な新機能(1、2、3):

  • ディスク サブシステム、I/O、およびファイル システム
    • dm-pcache ハンドラがデバイスマッパーに追加されました。これにより、永続メモリ(DAXデバイス経由でアドレス指定されたCXLメモリ)を、低速な従来のディスクドライブやフラッシュドライブの手前にある追加の高性能キャッシュとして利用できるようになります。dm-pcache は、不揮発性メモリの使用、メタデータの複製、CRC32チェックサムを用いたデータとメタデータの整合性検証により、クラッシュ発生時でもキャッシュの内容が確実に保持されます(クラッシュセーフ)。現在はライトバックキャッシュのみがサポートされています。
    • Bcachefs ファイルシステムのコードはカーネルから削除され、DKMS (Dynamic Kernel Module Support) ツールチェーンを使用して構築された外部モジュールとして配布されるようになりました。Kent Overstreet 氏が他のカーネル開発者と適切に連携し、確立された開発ガイドラインを遵守できる能力を示した後、Bcachefs コードはカーネルに再導入される可能性があります。
    • 壊れた名前のないパイプまたはソケットに書き込むときに SIGPIPE シグナルの送信を無効にするために、pwritev2() システム コールに RWF_NOSIGNAL フラグが追加されました。
    • ProcfsにプロセスID名前空間(PID名前空間)を指定するための「pidns」マウントオプションが追加されました。例:「mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc」
    • XFSは安定版として宣言され、ファイルシステムをアンマウントすることなく、検出された問題をオンラインでチェックおよび修正するためのfsckユーティリティの使用がデフォルトで有効になりました。特殊ファイル(任意のinode)の属性を変更するためのfile_getattrおよびfile_setattrシステムコールが追加されました。XFS_SUPPORT_V4(XFSバージョン4)およびXFS_SUPPORT_ASCII_CI(大文字と小文字を区別しないASCIIモード)オプションは、KConfigでデフォルトで無効化され、非推奨となりました。非推奨のattr2、noattr2、ikeep、およびnoikeepマウントオプションは削除されました。
    • MD RAID は、ロックなしで動作し、より高いパフォーマンスを提供する新しいタイプのビットマップである llbitmap (ロックレス ビットマップ) を実装します。
    • 暗号化と検証に関連する情報(i_crypt_info および i_verity_info ポインタ)は、一般的な「inode」構造体から移​​動されました。この変更により、暗号化と検証をサポートしていないファイルシステムにおけるメモリ消費量が削減されます。
    • FUSEサブシステムは、copy_file_range()システムコールと、64ビットサイズ型を使用した直接範囲コピーをサポートするようになりました(以前は32ビットサイズのみサポートされていました)。マウント時の同期初期化(FUSE_DEV_IOC_SYNC_INIT)のサポートが追加されました。
    • ext4ファイルシステムは、予約ブロックへのアクセス時に32ビットのユーザーID(uid)とグループID(gid)の使用をサポートするようになりました。マウントされたファイルシステムのスーパーブロックパラメータの設定と読み取りのためのioctl操作が追加されました(tune2fsは、ブロックデバイスへの書き込みアクセスを必要とせずにスーパーブロックパラメータを変更できるようになりました)。廃止されたext3固有の設定は完全に削除されました。
    • f2fsに「lookup_mode」マウントオプションが追加されました。検索モードは、perf(ハッシュ検索)、compat(リニア検索)、auto(自動選択)から選択できます。大文字と小文字を区別しないディレクトリ構成の場合、モードの変更は便利です。現在の検索モードは「/sys/fs/f2fs/」ファイルで確認できます。 /effective_lookup_mode"。特権ユーザーのみがアクセスできる inode を予約する機能を追加しました。
    • Overlayfs は、大文字と小文字を区別しない操作をサポートするようになりました。これは、ファイルシステム層レベルで有効にできます (個々のディレクトリの設定はまだサポートされていません)。
    • BTRFSは、読み取り負荷が高く書き込み負荷が低い操作の並列化を改善し、トランザクションのコミット時間を短縮し、同期時間を大幅に短縮します(数分から数十秒)。メモリページ(ps)よりも大きなブロック(bs)を使用できるようになりました。
    • ksmbd(カーネルベースのSMBサーバー)に、1つのサーバーからの最大接続数を制限するパラメータが追加されました。 IPアドレス. smbdirect、smbclient、および smbserver は標準カーネル構造を使用するように切り替えられました。
    • SQUASHFS は、スパースファイル内のデータとホールを検索するための lseek() システムコールで SEEK_DATA および SEEK_HOLE オプションをサポートするようになりました。一部のテストでは、スパースファイルのコピーにおいて最大 150 倍のパフォーマンス向上が見られました。
    • EXFATは、パーティションラベルの読み書きにFS_IOC_GETFSLABELおよびFS_IOC_SETFSLABEL ioctlをサポートするようになりました。これにより、再マウント時にマウントオプションを変更できるようになりました。ビットマップの読み込みパフォーマンスが向上しました。
    • NTFS3 では、パーティション ラベルの読み取りと設定のための ioctls FS_IOC_GETFSLABEL と FS_IOC_SETFSLABEL のサポートが追加されました。
  • メモリおよびシステム サービス
    • В состав принята реализация механизма межпроцессного взаимодействия Binder, написанная на языке Rust. Binder используется в Android プロセスとリモートメソッド呼び出し間の相互作用を整理する(1つのプロセス) Android 別のプロセス内のメソッドまたは関数を呼び出す可能性がある Android, используя Binder для идентификации, вызова и передачи аргументов между процессами). Код Binder был переписан на языке Rust в рамках инициативы Google по усилению защищённости Android.
    • カーネルメモリアロケータであるSLUBは、オプションの「シーブ」キャッシュ層を実装しています。SLUBは複数のキャッシュを使用し、それぞれが個別のCPUコアに関連付けられているため、メモリの割り当てと解放の操作を単一のコアに局所化できます。このキャッシュは、複数のCPUコアが関与する際に必要となる不要な同期プリミティブを排除することで、カーネルにおけるメモリの割り当てと解放のパフォーマンスを向上させます。私たちのテストでは、ワークロードに応じて6.3%から31%のパフォーマンス向上が見られました。
    • 特定の名前空間に関連付けられたファイル記述子を作成する機能を追加しました。識別子(/proc/)で名前空間にアクセスする場合とは異なり、 /ns/ の場合、ファイル記述子は特定の名前空間インスタンスに割り当てられ、識別子が再割り当てされて別のオブジェクトを指すことを防ぎます。pidfdと同様に、名前空間を参照するファイル記述子を開くには、 open_by_handle_at() 関数と name_to_handle_at() 関数を使用します。
    • スワップパフォーマンスを向上させるため、「スワップテーブル」メカニズムを実装しました。この改善は、スワップキャッシュの競合の軽減、キャッシュ検索の効率化、そしてフラグメンテーションの低減によって実現されます。スワップキャッシュにはXArrayバックエンドの代わりにスワップテーブルベースのバックエンドが使用され、平均5~20%のパフォーマンス向上が見られました。usememテストではスループットが17~28%向上し、マルチスレッドカーネルリビルドテストではビルド時間が1.12~3.19%短縮されました。また、BGSAVEを使用したredisベンチマークテストでは、処理リクエスト数が6~7%増加しました。
    • Zswap サブシステムは、zpool レイヤーの代わりに zsmalloc メモリ割り当てシステムを直接使用するように移行されました。zpool レイヤーはどこでも使用されなくなり、カーネルからも削除されました。
    • x86システムにおけるマイクロコード・ブートローダーの動作を制御するために、「microcode=flaglist」コマンドラインオプションが実装されました。現在の形式では、この新しいオプションは「microcode.force_minrev」に代わるものであり、起動時に許可されるマイクロコードの最小バージョンを指定することもできます。
    • RAMページを管理するために使用される、肥大化した「ページ」構造体の再編成作業が開始されました。将来的にスラブとフォリオ用の個別の構造体が「ページ」構造体から分離されることが予想されるため、汎用フラグを持つフィールドとして「memdesc_flags_t」型が追加されました。
    • Altera Nios II プロセッサ (FPGA ベースのソフト プロセッサ) で使用される nios2 アーキテクチャでは、clone3() システム コールのサポートが実装されています。
    • カーネル設定(KConfig)に「transitional」属性が追加されました。この属性は、「make menuconfig」など、ユーザーインターフェースには表示されず、生成される設定ファイルにも含まれない設定をマークするために使用できます。この属性の主な目的は、後方互換性を維持しながらオプションの名前変更を簡素化することです。
    • Минимальная версия компилятора Clang, которым может быть собрано ядро, повышена до инструментария LLVM 15. В Debian 12と Ubuntu 22.04 поставляется LLVM 14.
    • Rust-for-ブランチからの変更の移行を継続Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра (поддержка Rust не активна по умолчанию, и не приводит ко включению Rust в число обязательных сборочных зависимостей к ядру). В новой версии для кода на языке Rust реализованы атомарные операции с памятью, структура maple tree, возможность создания файлов DebugFS и функции для манипуляции битовыми картами. Расширен доступ к API для разработки драйверов. Добавлен полный набор абстракций для разработки драйверов USB-устройств (пример USB-драйвера). В утилиту perf добавлена поддержка отладочных символов, генерируемых компилятором rustc.
  • 仮想化とセキュリティ
    • ダウンロードしたBPFプログラムのデジタル署名を用いた暗号検証のサポートが追加されました。この機能はさらに拡張され、署名付きBPFプログラムのダウンロードに関するルールを定義し、権限のないユーザーが検証済みのBPFプログラムを使用できるようにするツールも含まれるようになります。
    • KVMハイパーバイザーは、Intel CET(Control-flow Enforcement Technology)仮想化拡張機能のサポートを実装しており、これはリターン指向プログラミング(ROP)技術を用いたエクスプロイトから保護します。この保護機能は、関数の戻りアドレスを通常のスタックだけでなく、直接変更できない別のシャドウスタックにも保存することで機能します。
    • FreeBSD 15 ホスト上で Bhyve ハイパーバイザーを実行しているゲストで 255 個を超える CPU を使用する機能を追加しました。
    • Добавлена прослойка dibs (Direct Internal Buffer Sharing) для управляемого совместного использования буферов внутри изолированной среды, такой как гипервизор или экземпляр ядра Linux.
    • В подсистему аудита добавлена поддержка работы c несколькими одновременно включёнными модулями LSM (Linux Security Module).
    • SPI (Serial Peripheral Interface)デバイスにアクセスするためのvirtioドライバspi-virtioを追加しました。 仮想マシン.
    • KVM ハイパーバイザーは、SEV-SNP 暗号テキスト非表示モードをサポートするようになりました。このモードは、許可されていない CPU 上の保護されたゲスト システム メモリの暗号テキストの読み取りをブロックします。
    • Qualcomm チップの TEE (Trusted Execution Environment) 環境用の qtee ドライバーを追加しました。
  • ネットワークサブシステム
    • Googleがデータセンター間のトラフィック暗号化用に開発したPSPセキュリティプロトコル(PSP)を使用した、暗号化TCP接続のサポートが追加されました。PSPは、暗号化、暗号整合性制御、ソース認証を提供し、TLSとIPsecの機能を独自に組み合わせて実装します。PSPは、通信チャネル全体ではなく、個々のネットワーク接続レベルで暗号化を適用します。PSPは、トンネル化されたTCP接続ごとに個別の暗号化キーを使用することで、異なるアプリケーションやハンドラーからのトラフィックを厳密に分離します。CPU負荷を軽減するため、暗号化と復号化の操作はネットワークカードにオフロードされます(オフロード)。データ転送プロトコルとしてUDPが使用され、元のTCPパケットの内容が転送されます。

      カーネルリリース Linux 6.18
    • 正確な明示的輻輳通知(AcECN)拡張の初期サポートが追加されました。この拡張はECN拡張の改良版であり、輻輳が発生した場合にホストがIPパケットをドロップするのではなくマークすることを可能にするため、パケット損失なしに通信チャネルの輻輳の発生を検出できます。オリジナルのECN拡張には、1回のTCPラウンドトリップ(RTT、ラウンドトリップ時間、要求の送信と応答の受信)中に1つの輻輳信号しか生成できないという制限がありました。AccECNはこの制限を取り除き、受信側がTCPパケットヘッダーで送信側へ複数の輻輳信号を送信できるようにします。輻輳制御アルゴリズムはこの情報を使用することで、輻輳への対応をより正確に行い、軽微な輻輳発生時にパケットレートの急激な低下を回避できます。
    • UDPスタックは、DDoS攻撃下での受信パケット処理向けに最適化されています。DDoS攻撃では、1つ以上のUDPソケットに大量のパケットが到着します。競合の軽減、メモリ内のデータ構造レイアウトの最適化、NUMA(Non-Uniform Memory Access)対応ロックの活用といった最適化により、極限状況下でもUDPパケット受信パフォーマンスが47%以上向上しました。
    • NFSサーバーのI/Oキャッシュを無効化する機能が実装されました。これにより、メモリが限られたシステム(クラウド環境など)でもNFSサーバーを使用できるようになります。また、キャッシュを無効化することで、負荷の高いNFSサーバーにおいて、NFSキャッシュ用のメモリが解放されることによってローカルストレージに関連付けられたデータがキャッシュから追い出されるのを防ぐことができます。
    • ネットワークソケットの受信および送信パケットバッファの最大サイズ(net.core.rmem_max および net.core.wmem_max)が 2 MB から 4 MB に増加しました。デフォルトサイズは変更ありません(net.core.rmem_default および net.core.wmem_default = 2 MB)。
    • Qualcomm IPQ9574 SoC で使用される Qualcomm PPE (Packet Processing Engine) ネットワーク アクセラレータ用のドライバーが追加されました。
  • 機器
    • Rustで記述されたTyrドライバがカーネルに統合されました。Mali G310、G510、G710など、コマンドストリームフロントエンド(CSF)テクノロジーを採用したARM Mali GPUをサポートしています。このドライバはまだ一般ユーザーが日常的に使用できる状態ではなく、Rustでのドライバ開発における抽象化をテストするための実験的なプロトタイプとして検討されています。
    • HID (ヒューマン インターフェイス デバイス) 入力デバイスのドライバーに、触覚フィードバックと圧力センサーを備えたタッチパッドのサポートが追加されました。
    • Intel Xeアーキテクチャに基づくGPU向けXe DRM(Direct Rendering Manager)ドライバの開発が継続されています。このドライバは、Tiger Lakeプロセッサ以降のIntel Arcシリーズグラフィックスカードおよび統合グラフィックスで使用されています。新バージョンでは、madviseインターフェースの追加、SR-IOV PF(Single Root I/O Virtualization Physical Function)のサポート、ハードウェア検証のためのIntel PSMIモードのサポート、ファームウェアから送信されるエラー情報の処理の保証、SLPC電源プロファイルの実装、ドライバ検証中の補助ファームウェア(ファンコントローラや電圧レギュレータなど)のロードのサポートなどが追加されています。
    • AMDGPU ドライバーは、Cyan Skillfish APU を搭載したデバイスをサポートするようになり、AMD GCN 1.0 のサポートが改善され、criu ツールキットとの互換性が追加され、sysfs に温度メトリックが追加され、ユーザー空間からの MMIO 再マッピング要求が可能になりました。
    • i915 ドライバーには、Wildcat Lake ファミリのチップのサポートが含まれており、Jasper Lake、Elkhart Lake、Gen7、Gen6 GPU のパフォーマンスが向上します。
    • Nouveau ドライバーはデフォルトで NVIDIA GSP ファームウェアを使用し、エラー処理が改善されています。
    • TuringマイクロアーキテクチャをベースとするNVIDIA GeForce RTX 2000シリーズ以降に採用されているGSPファームウェアを搭載したNVIDIA GPU向けNovaドライバコンポーネントの統合が継続されました。このドライバはRustで記述されています。新バージョンでは、GSPファームウェアのサポートが拡張され、「register!」マクロの実装が改善され、PCIデバイスクラスとベンダーIDのサポートが追加されました。
    • Rockchip RK3588 SoC で使用される NPU アクセラレータ用のロケット ドライバーを追加しました。
    • 複数の GPU を搭載したシステムでブート プロセスを表示するための出力デバイスを選択するためのカーネル パラメータ「boot_display」を追加しました。
    • vesadrm ドライバは 8 ビット パレットのサポートを実装します。
    • msm ドライバーは、Adreno 663 GPU をサポートするように更新され、IFPC (Inter Frame Power Collapse) 電力消費削減テクノロジのサポートを実装しています。
    • panthor ドライバーには、Mali-G710、Mali-G510、Mali-G310、Mali-Gx15、Mali-Gx20、および Mali-Gx25 GPU のサポートが追加されました。
    • 以下のASoCサウンドシステムのサポートを追加しました:Qualcomm GlymurおよびPM4125、Realtek RT1321、Shanghai FourSemi FS2104/5S、Texas Instruments PCM1754およびTAS2783A、qcs615、CS35L56 B2、tas2118、tas2x20、tas5825。Tascam US-144mkIIおよびPresonus S1824c USBサウンドカードのサポートを追加しました。
    • ARM CPU Cortex-A320/A520AE/A720AE および C1-Nano/Pro/Premium/Ultra のサポートが追加されました。
    • ARMボード、SoC、デバイスのサポートを追加しました: Apple M2 Pro、M2 Max、M2 Ultr、Sony Xperia SP、Samsung Galaxy S22、Samsung Galaxy S20 FE、ASUS Eee Pad Slider SL101、Lenovo ThinkBook 16、HP Omnibook X14 X1P42100、Dell Inspiron 7441 / Latitude 7455、Sige1、NanoPi Zero2、Axis Artpec8、NXP i.MX91、ROCK 2A/2F、Qualcomm Lemans Auto、Renesas RZ/T2H、RZ/N2H、RZ/T2H、RZ/N2H、Aspeed AST27xx、Meta Clemente BMC、Netcube Nagami som、Tqma91xx、Ultratronik i.MX8MP Ultra-MACH、i.MX8ULP EVK9、バッファロー WXR-1750DHP、

同時に、ラテンアメリカ自由ソフトウェア財団は、完全に自由なカーネル6.18のバージョンを作成しました。 Linux-libre 6.18-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В выпуске 6.18 обновлён код чистки blob-ов в драйверах Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex. Выполнена чистка имён blob-ов в dts-файлах (devicetree) для ARM-чипов Qualcomm, Mediatek и TI ARM64. Нейтрализована загрузка blob-ов в новых драйверах FourSemi fs2104/5s, TI TAS2783 и Qualcomm GENI.

出所: オープンネット.ru

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster