Elindult a klasszikus Initrd kivezetése a Linux kernelből: nagyszabású patchsorozat került beküldésre

Pár hete már beszámoltunk róla, hogy még 2025-ben elindulhat az a folyamat amelynek célja a klasszikus initrd teljes kivezetése a Linux kernelből. Azóta felgyorsultak az események, és a linux-fsdevel valamint a linux-kernel listákon Askar Safin által beküldött, hatvankettő elemből álló patchsorozata előkészíti a klasszikus initrd támogatás eltávolítását a kernelből, amelyet 2020 óta hivatalosan is elavultnak tekintenek. Az initramfs természetesen megmarad, ahogy a RAMdisk eszköz is, a változtatások célja pedig az, hogy a kód és a dokumentáció következetesen a modern initramfs-modellre épüljön. A csomag a VFS réteg felől indulva érvényesül, és minden architektúrát érint, a fejlesztő pedig részletesen beszámolt a QEMU-s tesztelésről és a konfigurációs átnevezésekből fakadó kompatibilitási kérdésekről.

Elindult a klasszikus Initrd kivezetése a Linux kernelből: nagyszabású patchsorozat került beküldésre

Mi változik és miért számít ez?

A patchsorozat nem pusztán az initrd eltávolításából áll: széles körű kód- és dokumentációtisztítást, fájl- és szimbólumátnevezéseket, valamint elavult opciók és paraméterek kivezetését is tartalmazza. A leglátványosabb változás, hogy a korábbi CONFIG_BLK_DEV_INITRD név helyére a beszédesebb CONFIG_INITRAMFS kerül, míg az összes RD_* tömörítési jelző az INITRAMFS_DECOMPRESS_* előtagot kapja.

A kernelparancssori paraméterek közül kikerül a noinitrd, a ramdisk_start, a load_ramdisk és a prompt_ramdisk, ahogy a /proc/sys/kernel/real-root-dev és több, kizárólag az initrd-hez kötődő kódút is megszűnik. A fejlesztő a változókat is átnevezi, hogy azok jelentése világos legyen, például az __initramfs_start és társai _builtin_initramfs* formára alakulnak, és külön névteret kapnak a bootloader által átadott külső initramfs blobok is. Ezek a módosítások tisztább kódbázist és egyértelműbb fenntartást ígérnek, ennek az ára azonban az, hogy a meglévő disztribúciós és felhasználói konfigurációk szükségképpen megtörhetnek, és így frissítésre szorulnak.

Architektúrák, tesztelés és disztribúciós hatások

A beavatkozás az arch/ teljes fájára kiterjed, és bár a legtöbb helyen triviális törlésekről és takarításról van szó, az sh és a 32 bites ARM kódutakban nem triviális változtatások is történnek. A fejlesztő szerint a patchsetet QEMU alatt számos cross toolchainnel és nyolc architektúrára kiterjedően tesztelték, a hangsúly azon volt, hogy a beépített és a külső initramfs továbbra is működjön, és a lemezről történő közvetlen boot is rendben maradjon.

Mivel a konfigurációs kulcsok átnevezése széles körű, a disztribúcióknak és a beágyazott rendszereket építő csapatoknak számolniuk kell azzal, hogy a defconfigok és a buildrendszerek frissítése elkerülhetetlen. A dokumentációban ugyancsak átfogó rendezés történik: az initrd-re építő útmutatók és hivatkozások eltűnnek vagy korszerűsödnek, a gyökércsatolás és az init-időszak folyamatai pedig az initramfs nézőpontjából kerülnek leírásra.

Átmeneti megoldás és átállási irány

Akiknek valamilyen okból átmenetileg még szükségük van a klasszikus initrd-s megközelítés emulálására, a retain_initrd mechanizmust használhatják, amely a bootloader által átadott blobot a rendszerben a /sys/firmware/initrd alatt hozzáférhetővé teszi. Ezt egy beépített initramfs-ből elinduló /init szkript képes fájlba másolni és hurokeszközként csatolni, ami funkcionálisan kiváltja az initrd egyes felhasználási módjait, sőt bizonyos fájlrendszerek esetén rugalmasabb megoldást ad. A patch sorozatot benyújtó fejlesztő ugyanakkor egyértelművé teszi, hogy ez csak ideiglenes kerülőút, a projekt célja a teljes átállás az initramfs-alapú folyamatokra. Az üzenet világos: a modern bootfolyamat, a karbantarthatóság és a kódminőség érdekében itt az idő a történelmi terhek letevésére, a disztribúciók és a felhasználók részéről pedig a konfigurációk és a buildláncok gyors igazítására.

Gábor a Pingvinbázis alapítója és főszerkesztője, több mint 20 éves tapasztalattal rendelkezik a Linux rendszerek és az Open Source szoftverek területén. Jártas a Python, és a PHP nyelvben, valamint a BASH scriptelésben is.