Diky za opravdu pekny clanek, kdybych initrd potreboval, tak vim, kam sahnout. Fakt dobre.
Chtel bych se ale zeptat, proc se initrd vlastne vubec pouziva? Proc proste do toho kernelu nedate ten jeden potrebny ovladac napevno? Vzdyt stejne musi byt natazeny celou dobu behu systemu. Nebo je root filesystem jenom pro nabootovani a pak se nepotrebuje, takze se prislusny modul odstrani z pameti?! :-)
Kam ma RAM i ROM saha, tak jsem initrd jeste nepotreboval, naopak ho vsude vyhazuju, co to jde. A ze jsem potreboval i dost exoticke radice...
Diky za vsechny pochvaly :-)
Proc se initrd pouziva? Kuprikladu distribucni jadra (treba kernel od SuSE) maji tuny ovladacu vseho mozneho. Kdyby se z nich mel delat jeden velky monoliticky kernel, tak by mel peknych par desitek MB navic. Krome toho nektere ovladace se spolu nesnaseji, takze dohromady v jednom kernelu byt zakompilovane nemohou, atd. Proste distributor udela male jadro a potrebne moduly dohraje z initramdisku podle aktualni konfigurace systemu.
Druhy duvod jsou uzivatele, kteri se v mnoha pripadech z nejakeho zahadneho duvodu boji rekompilace kernelu. Vytvoreni initrd lze zaridit automaticky, takze maji razem o pupinek min :-)
Jeste doplnim, ze maximalni velikost monolitickeho jadra je neco pod 1MB, pak zacinaji nekterym bootloaderum problemy. Jadro 2.2 do limitu nacpete, u 2.6 je to vyrazne tezsi.
Proto tam nemuzou byt vsechny ovladace, jadro by se muselo pro prislusny HW bud kompilovat nebo by musela byt verze jadra pro kazdy HW, coz je nemyslitelne.
To se mi nezda. Samozrejme je tu argument, ze se nekdo boji kompilace kernelu. V takovem pripade mu podle stare zidovske anekdoty dam zkompilovat libc, X server a Gnome a pak ho poslu zpatky ke kernelu :-)
Pomineme-li ale tento argument, tak pro cloveka stavici kernel pro jeden konkretni system (tj. nedelajici distribuci) vazne nevidim duvod. I kdybych tam nemohl mit vsechny ovladace, tak preci pri jejich vyhazovani nezacnu tim, co mi ovlada filesystem s korenovym adresarem, ne?
Prave... I kdyz delam kernel pro vic pocitacu, tak vetsinou staci dat do kernelu IDE + ext3 + pripadne SCSI + pripadne RAID ovladace a ty se netlucou. Na moduly pro sitovku a dalsi HW initrd nepotrebuju.
Taky jsem nepochopil to s "nekterymi bootloadery". Nebo ony bootloadery nepodporuji >1MB kernel a podporuji initrd?
Milan: myslel jsem predevsim v distribuci. Kdyz instalujete na 500MB SCSI disk, tak nemate kde kompilovat. Na jednom desktopu samozrejme jadro zkompilovat jde, take jsem to delaval, ale od prechodu na Debian mi vyhovuje distribucni s initrd.
Mate pravdu i v tom, ze kompilace jadra je ve srovnani s nekterymi aplikacemi hracka pro deti :-)
Michal: arch/i386/boot/tools/build.c:
if (sys_size > 0xefff) fprintf(stderr,"warning: kernel is too big for standalone boot from floppy\n");
Je to po sestnacti bytech: sys_size = (sz + 15) / 16;
To se sice netyka ramdisku, ale pookud si vzpominam, tak jsem s jadrem pres tento limit mel problemy s loadlinem nebo syslinuxem. Podrobnosti si uz nepamatuju.