Dracut のパフォーマンス改良
Ubuntu 26.10 では Dracut のパフォーマンス改良作業が行われています。その過程が以下で紹介されています。
Dracut
Dracut は初期 RAM ディスクを生成するためのソフトウェアであり、従来の initramfs-tools を置き換えるソフトウェアです。初期 RAM ディスク(initrd)は、Ubuntu の起動に必要なドライバーや Ubuntu がインストールされたルートファイルシステムを準備するために必要なソフトウェアを含むファイルシステムです。
Dracut は systemd を使用し、Bluetooth や NVM Express over Fabrics(NVMe-oF)といった新機能をサポートしています。
Ubuntu 25.10 以降は Dracut を採用
Ubuntu 25.04 までは初期 RAM ディスクの生成に initramfs-tools が採用されていましたが、Ubuntu 25.10 以降は一部を除き Dracut が採用されています。再圧縮の回避
Ubuntu 23.10 の時に initramfs-tools で、初期 RAM ディスクのサイズ削減と生成時間の短縮作業が行われました。Dracut にも同様の改善を
今回この改良を Dracut にも取り込む作業が行われました。これにより Dracut で初期 RAM ディスクを生成する際、すでに圧縮済みのカーネルモジュールやファームウェアファイルを再圧縮しないように改善されました。
これはすでに圧縮済みのファイルを、圧縮されていない別の cpio アーカイブに分離することで実現されています。
それ以外のファイルは圧縮され結合される cpio アーカイブに配置されます。
rust-coreutils の代わりに BusyBox を採用
初期 RAM ディスクには起動の失敗に備えユーザーがトラブルシューティングにあたれるよう、各種コマンド及びコマンドラインシェルが搭載されています。initramfs-tools 採用時代はコマンドラインシェルに BusyBox が採用されていました。
ホスト側のバイナリーが使われている
Dracut ではデフォルトで BusyBox を使用しておらず、また BusyBox モジュールは最後に実行されます。この実行段階ですでに多くのホスト側のバイナリーが初期 RAM ディスクに取り込まれており、BusyBox モジュールを実行してもそれらのバイナリーが BusyBox アプレットに置き換わることはありません。
つまり BusyBox が提供している coreutils 相当の機能が利用されない状況です。
rust-coreutils はサイズが大きい
GNU coreutils から rust-coreutils へ移行した際、初期 RAM ディスクにホスト側のバイナリーである rust-coreutils が含まれるようになりました。rust-coreutils はバイナリーサイズが大きく、これにより初期 RAM ディスクのサイズも大きくなりました。
BusyBox に対応しよう
というわけで initramfs-tools 採用時代と同様に BusyBox が動作するように改善作業が行われました。Dracut モジュールが BusyBox をサポートしていることを確認し、BusyBox でサポートされていないオプションや、BusyBox が対応していない長形式のオプションを使用しているモジュールは、BusyBox をサポートできるように修正パッチが作成されました。
加えて BusyBox モジュールを最初に実行されるように修正し、他のモジュールが実行される前に /usr/bin/busybox と各アプレットへのシンボリックリンクが配置されるようになりました。
