1771
Software / Re:Vysvětlení pojmu InitramFS
« kdy: 23. 11. 2018, 12:21:13 »Tak pokial som vas aspon trosku pochopil, tak pri boote, boot loader nacita kernel spolu s initramfs obrazom(ktory je obohateny o zavadzace, jadrove moduly) do pamate ram a nasledne spusti kernel. Kernel skontroluje pritomnost initramfs a ak ho najde, moutne ako / (uz priamo na disk alebo este len do ramdsiku(myslim tym ten ramfs/tmpfs)?) a nasledne spusti /sbin/init, ktory pusta init scripty?
Len bohuzial, stale nerozumiem pojmu 'predom priraveny obraz zavadzacieho systemu na disk'. Stale som nejako v tom, ze ovladace, moduli su priamo v jadre... Preto odpadava nutnosti instalovat ovladace oproti win... A aj ked nahravam nejake moduli do jadra, napr. conntrack modul, nenahravam ho do initramfs...
Chapes to spravne. Ovladace muzou byt:
1. bud v jadre (soucasti linuxu)
2. nebo out of tree (ovladace tretich stran, typicky priklad: nvidia)
3. pripadne prasacke reseni "nas ovladac je patchem pro jadro verze x.y.z", ktere se uz dnes vidi vyjimecne
Pro body 1 a 3 plati, ze to lze kompilovat jako soucast jadra (compiled-in) nebo jako modul, ktery je v extra souboru. U bodu 2 je to vzdy modul.
Situace pro moduly a initramfs vznikla historicky v dobe, kdy pocitace nemeli moc pameti (rozumej - v dobe 8 az 64 MB). Protoze kod kernelu je v pameti udrzovan vzdy (neni odswapovatelny), tak treba nekolik MB ovladacu, ktere tvuj stroj nevyzaduje znamenalo znacne plytvani tou uz tak malou pameti. Byt initramfs obsahuje tech 10MB, jsou to jen "moznosti" - ze kterych se nakonec pouzivala pro konkretni stroj jen jedna. Pokud mel skript v initramfs detekci hw tak dokazal natahnout konkretni modul, ale casteji se tupe natahlo vsechno a doufalo ze neco zpristupni disk s rootfs. Existence modulu ale umoznovala pozdeji udelat rmmod na ovladace, ktere pouzity nebyly a tak uvolnit pamet. Dnes, v dobe NVMe a AHCI mate tyto dva ovladace rovnou v jadre, tenkrat to byly desitky ruznych ovladacu.
Initramfs tedy resi problem slepice a vejce - na uvolneni pameti skrze rmmod jste ovladace diskovych radicu potreboval mit jako moduly, ale kdyz byly jako moduly, tak uz nebyly soucasti kernelu a nedostal by jste se na rootfs.
Muzete mit jakoukoliv verzi GCC, a jeste pro jakoukoliv platformu (pres sys-devel/crossdev) - a pohodlne si mezi tim prepinat - resp. volit ktera verze se pro kterou platformu pouzije.