最近針對開發中的 Fedora 39 的更改建議之一是將 systemd 的 mkosi-initrd 作為構建 initrds 的 Dracut 的現代和高級替代品。
最初 mkosi-initrd 被設置為 Dracot 的替代構建器來構建 initrd,但它的初始範圍可能是有限的。 mkosi-initrd 的目的是清理 Dracut 當前使用的複雜且低效的構建過程。功能提案解釋說:
mkosi-initrd 是 initrds 的替代構建器。它將打包在 Fedora 中,以便用戶可以使用它在本地構建 initrds。安裝內核包時,將提供一個內核安裝插件來構建 initrd。作為一個擴展目標,initrds 將在 koji 中構建並通過 rpm 包提供。作為進一步的擴展目標,預構建的 initrds 將用於可通過 rpm 包交付的統一內核映像。
…
我們創建 initrd 的過程是複雜且低效的。 initrds 包含重複的功能,需要大量的維護工作。該提案的目的是引入一個大大簡化的 initrd 創建機制和簡化的 initrd 內容。mkosi-initrd 項目是一組 mkosi 的配置文件。 mkosi 是一個從系統包構建操作系統映像的程序。通過使用 mkosi-initrd 提供的配置調用 mkosi 來構建 initrd。
不是通過抓取文件系統並再次找出依賴關係來構建 initrd,而是使用現有的包和通過 dnf/rpm 安裝的正常包來填充 initrd。這也意味著包管理器負責滿足依賴性。在運行時,systemd 負責設置執行環境和調用程序。
目前這種方式構建的initrds更大比 dracut 構建的 initrds。它們的功能也有限:許多常見類型的系統都可以正常工作,但不支持更奇特的配置。
…
此更改的目標是提供一種替代機制。如果反饋是積極的,我們可能會考慮在某些情況下使用 mkosi-initrd 構建的 initrd 作為默認值。在可預見的將來沒有刪除 dracut 的計劃。這意味著對於任何不受支持或效果不佳的情況,dracut 仍然是一種自然的回退。在這種情況下,此更改類似於 Changes/Unified_Kernel_Support_Phase_1,因為它提供了一項新技術的預覽,作為當前既定方法的替代方法。
有關 Fedora 39 的此擬議更改的更多詳細信息在秋季可以通過 Fedora 項目維基 找到。
mkosi-initrd 託管在 systemd 項目下,可以在 GitHub 上找到。