Cu aproximativ un an în urmă, Ubuntu a schimbat nivelul de compresie implicit pentru gestionarea initramfs la nivelul unu al Zstd pentru a face față timpilor de creare lentă a initramfs pe sistemele low-end / plăcile de dezvoltare.
Dar, de atunci, acest lucru a adus la dimensiuni mai mari ale initramfs și la apariția altor probleme, cum ar fi umplerea rapidă a partiției /boot pe sistemele cu Ubuntu.
Astfel, dezvoltatorii s-au întors la masa de proiectare și încearcă să găsească o cale de urmat pentru o mai bună gestionare a initramfs care să funcționeze bine pentru calculatoarele single board low-end, maximizând bine pentru toate cazurile de utilizare a Ubuntu.
Benjamin Drung, dezvoltator Ubuntu/Debian, a lucrat pentru a găsi echilibrul corect al opțiunilor de compresie pentru ca initramfs din Ubuntu să fie rapid și să producă o compresie bună.
Propunerea sa inițială prezentată săptămâna trecută pe lista ubuntu-devel include:
Propun următoarea abordare pentru a remedia acest dezavantaj: Crearea de arhive cpio (comprimate cu xz -9) pentru modulele de nucleu și fișierele firmware la construirea pachetului de kernel/firmware pentru Debian. Apoi livrați aceste arhive cpio în pachete (sau într-un pachet binar separat). Apoi, sarcina CPU este pusă pe constructori. Arhivele cpio ar conține modulele pentru MODULES=most.
mkinitramfs va căuta aceste arhive cpio și le va folosi în cazul în care sunt prezente. Un astfel de initramfs ar arăta astfel:
- Arhiva cpio microcod AMD/Intel (pe amd64).
- Arhiva cpio principală comprimată cu zstd -1.
- modulele de nucleul din pachetul Debian comprimate cu xz -9.
- fișierele firmware din pachetul Debian comprimate cu zx -9.
Între timp, inginerul Canonical Dimitri John Ledkov a prezentat o altă posibilă metodă:
Creearea arhivei comprimate xz -9 a tuturor modulelor, totuși se plătește penalizarea de a le decomprima pe cele mai multe dintre ele, iar apoi nu le mai face modprobe. Am sperat să realizez o abordare similară, dar nu am avut timp să o implementez.
- Schimbați linux-modules și linux-firmware pentru a livra .ko.zst firmware.bin.zst comprimat cu zstd -19 la momentul construirii .deb.
- Acest lucru economisește dimensiune de instalare a pachetelor, cu o dimensiune de descărcare doar ușor crescută.
- Modificați initramfs-tools pentru a include comprimate într-o initrd separată, care nu este comprimată (adică excludeți fișierele .zst din arhiva cpio principală comprimată implicit și adăugați-le în a doua arhivă cpio principală care nu este comprimată).
- Acest lucru ar trebui să realizeze crearea rapidă a initrd, care va avea o dimensiune mai mică decât starea actuală și va porni mai repede, deoarece va decomprima doar modulele/firmware-ul de care are nevoie la pornire.
Această cale este în curs de examinare. Nimic nu este încă stabilit, dar se pare că se va întâmpla ceva pentru a schimba modul de gestionare a compresiei initramfs în Ubuntu, pentru a oferi un echilibru mai bun între mărimea compresiei/cerințele de decompresie pentru a se potrivi cu gama largă de hardware în care Ubuntu este utilizat.
Probabil că orice schimbare se va întâmpla pentru ciclul Ubuntu 23.10 pentru a permite suficient timp pentru testare înainte de lansarea Ubuntu 24.04 LTS de anul viitor.