UKI (Unified Kernel Image) をサポートする systemd システム マネージャー 252 のリリース

252 か月の開発を経て、システム マネージャー systemd XNUMX のリリースが発表されました。新しいバージョンの主な変更点は、最新のブート プロセスのサポートが統合されたことです。これにより、カーネルとブートローダーだけでなく、コンポーネントも検証できるようになります。デジタル署名を使用した基本的なシステム環境の構築。

提案手法では、ロード時に、UEFI(UEFIブートスタブ)からカーネルをロードするためのハンドラ、Linuxカーネルイメージ、およびメモリにロードされたinitrdシステム環境を組み合わせた統合カーネルイメージUKI(Unified Kernel Image)を使用します。ルート FS をマウントする前の段階での初期初期化用。 UKI イメージは PE 形式の単一の実行可能ファイルとしてパッケージ化されており、従来のブートローダーを使用してロードすることも、UEFI ファームウェアから直接呼び出すこともできます。 UEFI から呼び出された場合、カーネルだけでなく initrd の内容のデジタル署名の完全性と信頼性を検証することができます。

整合性を監視し、UKI イメージのデジタル署名を生成するために使用される TPM PCR (Trusted Platform Module Platform Configuration Register) レジスタのパラメーターを計算するために、新しいユーティリティ systemd-measure が含まれています。署名に使用される公開キーと付随する PCR 情報は、UKI ブート イメージに直接埋め込むことができ (キーと署名は PE ファイルの「.pcrsig」フィールドと「.pcrkey」フィールドに保存されます)、そこから外部によって抽出できます。または内部ユーティリティ。

特に、systemd-cryptsetup、systemd-cryptenroll、および systemd-creds ユーティリティは、この情報を使用するように適合されており、これにより、暗号化されたディスク パーティションがデジタル署名されたカーネルにバインドされていることを確認できます (この場合、暗号化されたパーティションにアクセスします) UKI イメージが、TPM にあるパラメータに基づくデジタル署名による検証に合格した場合にのみ提供されます。

さらに、systemd-pcrphase ユーティリティが含まれており、これを使用すると、TPM 2.0 仕様をサポートする暗号プロセッサのメモリ内にあるパラメータへのさまざまなブート ステージのバインドを制御できます (たとえば、LUKS2 パーティション復号化キーをinitrd イメージを削除し、後のダウンロード段階でそのイメージへのアクセスをブロックします)。

その他の変更点:

  • 設定で別のロケールが指定されていない限り、デフォルトのロケールが C.UTF-8 になるようにします。
  • 最初の起動時に完全なサービス プリセット操作 (「systemctl preset」) を実行できるようになりました。起動時にプリセットを有効にするには、「-Dfirst-boot-full-preset」オプションを使用してビルドする必要がありますが、将来のリリースではデフォルトで有効になる予定です。
  • ユーザー管理ユニットには CPU リソース コントローラーが含まれており、システムを部分 (app.slice、background.slice、session.slice) に分割してリソースを分離するために使用されるすべてのスライス ユニットに CPUWeight 設定が確実に適用されるようになりました。さまざまなユーザー サービスが CPU リソースをめぐって競合します。 CPUWeight は、適切なリソース プロビジョニング モードをアクティブにするための「idle」値もサポートしています。
  • 一時 (「一時的」) ユニットおよび systemd-repart ユーティリティでは、/etc/systemd/system/name.d/ ディレクトリにドロップイン ファイルを作成することで設定をオーバーライドできます。
  • システム イメージの場合、サポート終了フラグが設定され、/etc/os-release ファイル内の新しいパラメータ「SUPPORT_END=」の値に基づいてこの事実が判断されます。
  • 「ConditionCredential=」および「AssertCredential=」設定を追加しました。これらは、特定の資格情報がシステムに存在しない場合にユニットを無視またはクラッシュするために使用できます。
  • デフォルトの SMACK セキュリティ レベルとユニット アクティベーション タイムアウトを定義するために、「DefaultSmackProcessLabel=」および「DefaultDeviceTimeoutSec=」設定を system.conf および user.conf に追加しました。
  • 「ConditionFirmware=」および「AssertFirmware=」設定に、個々の SMBIOS フィールドを指定する機能が追加されました。たとえば、/sys/class/dmi/id/board_name フィールドに値「Custom」が含まれている場合にのみユニットを起動することができます。 Board」では、「ConditionFirmware=smbios」 -field(board_name = "Custom Board") を指定できます。
  • 初期化プロセス (PID 1) 中に、qemu_fwcfg による定義に加えて、SMBIOS フィールド (タイプ 11、「OEM ベンダー文字列」) から認証情報をインポートする機能が追加されました。これにより、仮想マシンへの認証情報の提供が簡素化され、 Cloud -init や ignition などのサードパーティ ツールが必要です。
  • シャットダウン中に、仮想ファイル システム (proc、sys) をアンマウントするロジックが変更され、ファイル システムのアンマウントをブロックしているプロセスに関する情報がログに保存されます。
  • システム コール フィルター (SystemCallFilter) は、デフォルトで riscv_flush_icache システム コールへのアクセスを許可します。
  • sd-boot ブートローダーは、64 ビット Linux カーネルが 32 ビット UEFI ファームウェアから実行される混合モードで起動する機能を追加します。 ESP (EFI システム パーティション) で見つかったファイルから SecureBoot キーを自動的に適用する実験的な機能が追加されました。
  • 新しいオプションが bootctl ユーティリティに追加されました。サポートされているすべての EFI アーキテクチャのバイナリをインストールするための「-all-architectures」、ディレクトリまたはディスク イメージを操作するための「-root=」および「-image=」、「-install-source」 =" はインストールのソースを定義し、"-efi-boot-option-description=" はブート エントリ名を制御します。
  • 自動的にマウントされたディレクトリのリストを表示する「list-automounts」コマンドと、指定されたディスク イメージに関連してコマンドを実行する「--image=」オプションが systemctl ユーティリティに追加されました。 「show」および「status」コマンドに「--state=」および「--type=」オプションを追加しました。
  • systemd-networkd は、TCP 輻輳制御アルゴリズムを選択する「TCPCongestionControlAlgorithm=」、TUN/TAP インターフェイスのファイル記述子を保存する「KeepFileDescriptor=」、NetLabel を設定する「NetLabel=」、DHCPv6 経由の構成を高速化する「RapidCommit=」オプションを追加しました。 (RFC 3315)。 「RouteTable=」パラメータを使用すると、ルーティング テーブルの名前を指定できます。
  • systemd-nspawn では、「--bind=」および「--overlay=」オプションで相対ファイル パスを使用できます。コンテナ内の root ユーザー ID をホスト側のマウントされたディレクトリの所有者にバインドするための「rootidmap」パラメータのサポートを「--bind=」オプションに追加しました。
  • systemd-resolved は、デフォルトで暗号化バックエンドとして OpenSSL を使用します (gnutls サポートはオプションとして保持されます)。サポートされていない DNSSEC アルゴリズムは、エラー (SERVFAIL) を返すのではなく、安全でないものとして扱われるようになりました。
  • systemd-sysusers、systemd-tmpfiles、および systemd-sysctl は、資格情報ストレージ メカニズムを通じて設定を転送する機能を実装します。
  • 文字列とバージョン番号を比較するための「compare-versions」コマンドが systemd-analyze ユーティリティに追加されました (「rpmdev-vercmp」および「dpkg --compare-versions」と同様)。マスクによってユニットをフィルタリングする機能が「systemd-analyze dump」コマンドに追加されました。
  • 多段階のスリープ モード (サスペンドから休止状態) を選択する場合、スタンバイ モードで費やす時間がバッテリー残量の予測に基づいて選択されるようになりました。バッテリー残量が 5% 未満になると、即座にスリープ モードに移行します。
  • 新しい出力モード「-o short-delta」が「journalctl」に追加され、ログ内の異なるメッセージ間の時間差が表示されます。
  • systemd-repart は、Squashfs ファイル システムを使用したパーティションの作成と、デジタル署名を含む dm-verity のパーティションの作成のサポートを追加します。
  • 指定したタイムアウト後に非アクティブなセッションを終了するための「StopIdleSessionSec=」設定を systemd-logind に追加しました。
  • Systemd-cryptenroll には、ユーザーにプロンプ​​トを表示するのではなく、ファイルから復号化キーを抽出するための「--unlock-key-file=」オプションが追加されました。
  • udev のない環境でも systemd-growfs ユーティリティを実行できるようになりました。
  • systemd-backlight では、複数のグラフィックス カードを備えたシステムのサポートが向上しました。
  • ドキュメントで提供されているコード例のライセンスは、CC0 から MIT-0 に変更されました。

互換性を損なう変更:

  • ConditionKernelVersion ディレクティブを使用してカーネルのバージョン番号をチェックする場合、「=」および「!=」演算子で単純な文字列比較が使用されるようになりました。また、比較演算子がまったく指定されていない場合は、文字「*」、「?」および​​「[」、「]」。 stverscmp() 関数のスタイルでバージョンを比較するには、演算子「」、「=」を使用する必要があります。
  • ユニット ファイルからのアクセスをチェックするために使用される SELinux タグは、アクセス チェック時ではなく、ファイルのロード時に読み取られるようになりました。
  • 「ConditionFirstBoot」条件は、システムの最初の起動時にのみ起動段階で直接トリガーされ、起動完了後にユニットを呼び出すときに「false」を返すようになりました。
  • 2024 年に、systemd は、systemd リリース 1 で非推奨となった cgroup v248 リソース制限メカニズムのサポートを終了する予定です。管理者は、cgroup v2 ベースのサービスを cgroup v1 に移行する前に注意することをお勧めします。 cgroups v2 と v1 の主な違いは、CPU リソースの割り当て、メモリ消費の調整、および I/O に個別の階層を使用するのではなく、すべての種類のリソースに共通の cgroups 階層を使用することです。階層が分かれていると、ハンドラー間の対話を整理することが困難になり、異なる階層で参照されるプロセスにルールを適用するときに追加のカーネル リソース コストが発生します。
  • 2023 年後半には、/usr がルートとは別にマウントされる、または /bin と /usr/bin、/lib と /usr/lib が分離される分割ディレクトリ階層のサポートを終了する予定です。

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

コメントを追加します