kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 23.10 その12 - initramfsの圧縮方法を再検討

initramfsの圧縮方法を再検討

2023年7月8日、以下で「initramfs」の圧縮方法が再検討されています。


  • Reducing initramfs size and speed up the generation

initramfsのサイズを軽減しながら生成時間を短縮したい

本提案の目的は「initramfs」のサイズを小さくしながら、「initramfs」の生成時間も短縮したいとのことです。
昨年「initramfs」の圧縮形式が「zstd」に変更され、圧縮レベルが-1に変更されました。

  • initramfsのデフォルトの圧縮形式を再検討

これにより「initramfs」の生成にかかる時間が短縮され、以下の問題が改善されました。

  • mkinitramfs is too slow

しかし以前と比べ「initramfs」のサイズが大きくなったため、以下の問題が引き起こされることになりました。

  • Can't boot: "error: out of memory." immediately after the grub menu

また「/bootパーティション」を利用している場合、「/bootパーティション」のサイズによっては「initramfs」の肥大化によりすぐに空き容量が足りなくなってしまう可能性もあります。

かと言って「initramfs」のサイズ軽減を優先し「xz -9」のような圧縮率の高い方法を採用すると、「initramfs」の生成に長い時間がかかるようになり、また生成時に多くのメモリーが必要になってしまいます。
「Raspberry Pi Zero」のようなハードウェアでは厳しいでしょう。

なんとかしたい

というわけで以下の方法が提案されています。

  1. カーネルモジュールとファームウェアのdebパッケージ構築時に、xz -9で圧縮されたカーネルモジュールとファームウェアを含むcpioアーカイブを作成する
  2. 「mkinitramfs」がそのcpioアーカイブを検出し利用する

この場合「initramfs」は以下のような構成になります。

  • AMD64ではAMD/Intelマイクロコードを含むcpioアーカイブ
  • メインのcpioアーカイブはzstd -1で圧縮される
  • カーネルモジュールとファームウェアはxz -9で圧縮される
 
この方法により従来と比べて「initramfs」の生成時間とサイズを削減できますが、カーネルのビルドに時間がかかるようになります。
またパッケージのサイズが大きくなります。
コストをかける場所を変えるということですね。

もう一つの提案

上記の提案を受けもう一つの方法が提案されています。

  1. カーネルモジュールとファームウェアのdebパッケージ構築時にそれらをzstd -19で圧縮する
    これによりパッケージサイズを節約できる
  2. それらの圧縮ファイルを圧縮されていない別のinitrdに収めるようにinitramfs-toolsを修正する
    (メインの圧縮されたcpioアーカイブからそれらの圧縮ファイルを分離し、圧縮されていないもう一つのcpioアーカイブにそれらの圧縮ファイルを収める)

これにより「initrd(initramfs)」の作成時間の短縮とサイズの削減が可能になるとのことです。
またPCやマシンの起動時に実際に起動に必要なカーネルモジュールとファームウェアのみが展開されるため、起動時間の短縮にも期待できるとのことです。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Linux その450 - Canonical LXD や MicroCloud にクライアントなりすましの脆弱性・アップデートを
    Canonical LXD や MicroCloud に重大な脆弱性 2026年10月28日、Canonical LXD や MicroCloud に重大な脆弱性がみつかりました。
  • Ubuntu 26.04 その82 - Linux kernel の脆弱性 CVE-2026-98432 の対応状況
    CVE-2026-98432 の対応状況 2026年11月2日、Linux kernel の脆弱性である CVE-2026-98432 の対応状況がアナウンスされました。
  • Linux Mint その294 - Linux Mint 27 の開発とリリース方針の変更・アラーム管理アプリの開発
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.04 その78 - eMudhra 認証局の秘密鍵の侵害・アップデートを
    eMudhra 認証局の秘密鍵の侵害 2026年10月20日、eMudhra 認証局(eMudhra CA)の秘密鍵の侵害が発覚しました。
  • Ubuntu 26.04 その79 - CVE-2026-111497 に対応した Brotli のリリース・アップデートを
    Brotli のセキュリティーアップデート 2026年10月26日、CVE-2026-111497 に対応した Brotli がリリースされました。
  • Ubuntu 26.10 その39 - Ubuntu 26.10 の新機能と変更点・既知の問題
    Ubuntu 26.10 の新機能と変更点・既知の問題 リリースノートから、Ubuntu 26.10 の新機能と変更点を紹介します。
  • Ubuntu 26.04 その77 - PHP に php2shell(CVE-2026-109618/CVE-2026-109619)の脆弱性・アップデートを
    PHP に php2shell の脆弱性 PHP に php2shell と呼ばれる致命的な脆弱性が見つかりました。
  • Ubuntu 26.04 その80 - Ubuntu 26.04.2 LTS のリリーススケジュール
    Ubuntu 26.04.2 LTSのリリーススケジュール Ubuntu 26.04.2 LTS のリリーススケジュールを紹介します。
記事のピックアップ
オプション