Portál AbcLinuxu, 6. května 2025 07:11

minitrd: 20x rychlejší initramfs (initrd) od nuly

Michael Stapelberg na svém blogu popisuje projekt minitrd, který je součástí linuxové distribuce distri. Jedná se o implementaci initramfs v programovacím jazyce Go. V článku popisuje jak funguje a srovnává časy sestavení pomocí dracutu a dobu bootování. Pro zrychlení používá různé triky jako například pigz místo gzipu.

23.1.2020 11:44 | joejoe | Zajímavý článek


Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Gilhad avatar 23.1.2020 12:06 Gilhad | skóre: 20 | blog: gilhadoviny
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak vam nevim proc, ale vzpomel jsem si na tento velmi efektivni trik - pigzip - http://hackles.org/cgi-bin/archives.pl?request=310 :)
23.1.2020 12:41 Sněhulák
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Odpovědět | Sbalit | Link | Blokovat | Admin
Pojďme přepsat všecko do Go, hlavně kernel. To céčko je tak překonaný.
23.1.2020 12:52 B
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Go neumím a nikdy jsem v tom nedělal, ale C je prasárna, kterou je třeba vymýtit.
23.1.2020 13:05 Sněhulák
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Tak to je poznat, žes Go nikdy neviděl :-D Ale na Scala Native by mě možná ukecali :-D
Bedňa avatar 25.1.2020 22:23 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Kernel? To je fakt blbosť, páč Go si práve tie nízkoúrovňové veci rieši samo a to nikto kto chce procesy riadiť nechce.
KERNEL ULTRAS video channel >>>
Josef Kufner avatar 25.1.2020 23:34 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Ale třeba v Rustu už bych si to dokázal představit a asi by to i víc pomohlo než překáželo.
Hello world ! Segmentation fault (core dumped)
Bedňa avatar 25.1.2020 23:45 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Neviem či si si to všimol, ale ten systém je už aj hotový :-) Skúšal som ho už dosť dávno a funguje veľmi dobre.
KERNEL ULTRAS video channel >>>
Josef Kufner avatar 26.1.2020 00:26 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
"Hotový" je poněkud optimistické, ale rozhodně jde o zajímavý počin.
Hello world ! Segmentation fault (core dumped)
Bedňa avatar 26.1.2020 00:27 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Tak je to proof of concept, že to v Ruste ide.
KERNEL ULTRAS video channel >>>
Josef Kufner avatar 26.1.2020 11:24 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
To rozhodně. Potíž je, že dokud to nebude umět používat ovladače napsané pro Linux, tak to nemá šanci v praxi uspět. Tím, že přidávají i svoje GUI, si vzali příliš velké sousto. Kdyby "jen" rozchodili Wayland, udělají líp.
Hello world ! Segmentation fault (core dumped)
23.1.2020 12:54 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Odpovědět | Sbalit | Link | Blokovat | Admin
Čas samotnej kompresie pri vytvorení initrd nie je až taký podstatný, a čas dekompresie daného initrd pri boote je dosť krátky. Ale o koľko sa pri použití tohoto projektu urýchli samotná inicializácia HW pri načítaní jadra a ovládačov?
23.1.2020 16:39 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Odpovědět | Sbalit | Link | Blokovat | Admin
Můj initrd je jen staticky linkovaný busybox, bashový skript a pár dalších pomocných soubrů (staticky linkovaný LVM). Nevím, proč by se to mělo takhle komplikovat, když stačí, aby se nastavil LVM root oddíl a zavolal jeho init. Nic moc ke zrychlování není, stejně to většinu času stojí při čekání na disk během nastavení LVM a mountu.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
23.1.2020 16:47 jhrcz
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
a mne třeba rychlost ve fázi komprese celkem zajímá, jelikož je to operace co zdržuje každý update kernelu (na centosu).
23.1.2020 21:33 kvr
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Odpovědět | Sbalit | Link | Blokovat | Admin
V zásadě zrychlil kompresi paralelismem a samotný initrd přepsáním ze shell do kompilovaného jazyka, žádné velké překvapení. Nečekal bych velký rozdíl v rychlosti mezi Go a třeba C, případně i Perl nebo Python, s tím, že ty higher-level jazyky jsou jednodušší a Go si nese v tomto případě výhodu s nulovými runtime závislostmi. Takhle se dá zrychlit prakticky všechno, souhlasím, že spíš shell je největší zlo na programování, napsat skutečně korektní shell script je peklo (parametry, mezery, minus ve jménech souborů apod).

Ohledně komprese mě spíš překvapuje, zda je cpio+cokoliv dobrá varianta. Čekal bych, že kernel bude potřebovat jenom část modulů a nějaká forma random-access filesystemu (zipfs) by byla logičtější...?
24.1.2020 12:24 trubicoid2
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
mně se zdá, že initrd uvnitř je stejný, minitrd jej jen rychleji vytváří, bez použití skriptů

a k tomu pigz: super, ale stejně se od gz upouští ve prospěch lzo nebo lz4 kvůli větší rychlosti rozbalování
25.1.2020 21:05 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
initrd funguje tak (zjednodušeně řečeno), že se do RAM načte obraz disku a ten se připojí jako FS. Takže tam může být třeba ext2 (tedy ten, který se docela často používal před cpio) nebo squashfs (komprimovaný a random-access – znáte z live disků).

initramfs (ta varianta založená na cpio) se dá rozkouskovat do více cpio archivů, které pak pro jádro vypadají jako jeden – viz např. načítání mikrokódu. Kdyby zavaděč dokázal nějak rozumně „uhádnout“ potřebné moduly, což by GRUB asi mohl umět, může zavaděč načíst jen ty části, které jsou nutné.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
Josef Kufner avatar 25.1.2020 21:26 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Kdyby zavaděč dokázal nějak rozumně „uhádnout“ potřebné moduly
To se řeší tím, že se do initramfs či initrd dají jen ty potřebné. Viz MODULES=dep v /etc/initramfs-tools/initramfs.conf (alespoň na Debianu a podobných).
Hello world ! Segmentation fault (core dumped)
k3dAR avatar 25.1.2020 22:44 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
na beznem x86 to podle me nema cenu resit, rozdil 2s pri startu nebo par MB navic ktere se pro pprepnuti na rootfs stejne zahodi... neco jine je embeded, tak to jiste vyznam ma, na Palm(Xcale) s Linuxem sem delal init jen s vybranejma modulama, busybox v uClibc a do squashfs, usetrilo se asi pul mega a 7vterin :)
porad nemam telo, ale uz mam hlavu... nobody
24.1.2020 09:28 Vantomas | skóre: 32 | Praha
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Odpovědět | Sbalit | Link | Blokovat | Admin
Jaktože initramfs ještě neobsadil systemd? Ten taky nemá žádný shell skripty.
24.1.2020 17:28 Cabrón
Rozbalit Rozbalit vše Re: minitrd: 20x rychlejší initramfs (initrd) od nuly
Já tam systemd mám :-P

... a téměř nic jiného. Rozbalí se to, spustí systemd, během asi dvou sekund jsou nahozené služby a startuje gdm, jede se z ramdisku. Storage se mountuje až po přihlášení uživatele (do té doby nejsou LUKS klíče).

Založit nové vláknoNahoru


ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.