Pekne napsany clanek...
Mel bych jeden dotaz, kdyz u RedHatu nebo Fedory udelam SW RAID a nastavim ho jako autodetect, pak se prave pomoci skriptu na ramdisku najdou vsechny disky a pole se spusti... Je mozne tohle udelat i za behu systemu nejakym prikazem, IOCTL nebo necim takovym?
Jestli si to dobre pamatuju, tak ten linuxrc tam spousti jakysi redhat nash...
No, nemam RH ale debian a tam je to tak, ze z initrd se vola raidstart(ktery vyuziva /etc/raidtab lezici na initrd) alternativne "mdadm" ktery ma konfiguraci danou rovnou jeho parametry.
Nevim jestli rozumim spravne Vasi otazce ale mam podezreni ze mate startovani pole duplicitne - pokud spravne chapu princip fungovani sw raid v linuxu, tak pole lze nastartovat 2 zpusoby : a) moduly "md" a "raid*" jsou zakompilovany v kernelu, partition jsou oznaceny "raid autodetect" => kernel SAM, bez jakychkoliv skriptu, raidstartu a mdadm nastartuje pole [tuto moznost jsem osobne nezkousel
NEBO
b) "md" a "raid" jsou moduly, tzn musi byt initrd ktere je natahne a potom da raidstart/mdadm => protoze s moduly kernel pole sam nestartuje.
Ale dejte si pozor, protoze na tom initrd musite mit tez AKTUALNI /etc/raidtab... Kernel pri autostartu raidu na raidtab kasle (samozrejme), ale raidstart se podle nej ridi.
(Osobne mam dojem, ze pouziti initrd ma smysl opravdu jen v pripade, kdy mate rootfs na necem, k cemu mate driver pouze jako modul a nelze ho zakompilovat do kernelu. Ve vsech ostatnich pripadech je motivace pouziti initrd spis v duchu hesla "Proc to delat jednoduse, kdyz to jde slozite.")
RH automaticky pouziva variantu a+b :)
Na ramdisku jsou mimojine i moduly pro raid. raidtab pouzivam pouze k vytvoreni pole, protoze jinak by se to opravdu duplicitne spoustelo (resp. raidstart by rval, ze to pole uz bezi). Otazka zni, jak donutit jadro, aby si znovu provedlo autodetekci RAIDU (typ autodetect)?
Jedním slovem velikost. Kdyz chci nahrat modul, potřebuju modprobe (teda aspoň tak nahrávám moduly já, jestli to děla Mindrák jinak nevím, i když u nich bych se hacku do jádra vůbec nedivil), takže je potřeba ještě libc.so a ld.linux. A to zrovna drobečci nejsou. Kdežto busybox + dietlibc = téměr kompletní soubor linuxových utilit na commandlině asi v 700 KB (statický link).
No dobře. Prostě slack používá busybox. Navíc nevím jak je moc nash kompatibilní s z bashem. Ale co vím, že busybox a jeho ash má kompatibilitu takřka na 100% (podotýkám takřka). No dobře tak na nahrání modulu dobrý, ale co když se rozhodnu, že použiju k něčemu sed, grep, popřípadě je to bezdisková stanice a chci zjistit jakou má IP???? Nevím, ale zrovna v tomhle případě je busybox ideální řešení (a o tom se tak nějak celou dobu snažim mluvit/psát).
Nash neni kompatibilni s nicim (nash = Not A SHell). Grep, sed... pekne, ale pochybuju ze se to tyka tech 99% ramdisku. Bezdiskova stanice: viz /usr/src/linux/net/ipv4/ipconfig.c.
Proste busybox je v tomto pripade kanon na vrabce a 99% ramdisku (kterym staci nahrat nejaky ten modul) ho tezko pouziva.
hmm tak učit se nějaký jiný shell by mě fakt mohlo...
Já vím co je autoconfigure v linuxovým jádře docela dobře (pár bezdiskových thin a fat klientů jsem už postavil), ale to mě IP získá a ... jak ji získám já????? Logicky používám busybox a jeho ifconfig eth0.
No ale abych to nějak ukončil. Slackware má busybox ostatní ať si mají co chcou. S tím 99% jsem se upsal.
Zdravim,
predevsim diky za prima clanek,
mel bych namet k zamysleni:
1) take se vam mozilla/galeon/cokoliv pousti hruzyplne pomalu i na rychlem stroji ?
2) take jste si vsimli, ze live distro Puppy linux(cca 50 MB, stoji za stazeni a vyzkouseni) se vsechno spousti neuveritelne rychle ? (nebot pri bootu se cely /root udela na ramdisku)
3) take vas napadlo, ze by se treba nejaky ramdisk na sikl i pro zrychleni startu aplikaci na normalnim linuxu?
Mate nekdo s takovymto urychlovanim nejake zkusenosti ? Diky...
Podobnou volbu ma i Danix, ale tam by to chtelo trosku vic pameti (1GB) :-) Tyhle pokusy o urychleni jsou trosku k smichu. Resit rychlost prvniho startovani muze snad jen widlak. Pokud mam dostatek pameti, tak stejneho efektu dosahnu kopirovanim prislusne binarky do /dev/null a tim je dostanu cache. Narozdil od jistych parodii na OS v te cache zustanou tak dlouho, dokud tu pamet nebudu potrebovat na neco jineho. Vzhledem k tomu, ze bezne pracuju se systemy, ktere bezi 30 a vic dni, tak to fakt nema cenu resit, protoze snad kazda aplikace, kterou pouzivam, uz je 29 dni v cache pokud celou tu dobu uz nebezi :-D
ad 2) Proc by pocitac bezici vic jak 30 dni v kuse nemohl byt takovy desktop? Muj desktop (notebook) ma momentalne uptime 72 dni, a taky prubezne uvazuju o tom jak se daji bootovaci scripty vylepsit. Posledni dobou cim dal tim vice, protoze vyslo jadro 2.6.8 a uvazuju ze do nej rebootnu :)
Ale uptime pocitace proste nema moc souvislost s tim, jak si uzivatel predstavuje bootovani
Andy
2) jsem nezkoušel.
Ad 1) a 3). To přece nic nezlepší. Mozillu/Galeon jednou spustím, a od té chvíle běží, než mi JME (každý si doplní svého oblíbeného distributora výpadků proudu) vypne proud nebo se najde díra v jádře nebo něco podobného.
Takže v případě 1) se natahuje z disku do paměti po bootu (resp. startu X), je v paměti pouze jednou, a když ji v paměti nechci, tak ji nespustím/ukončím.
V případě 3) se stejně tak natahuje po bootu, straší tam ale dvakrát, a když tu paměť chci na něco jiného, musel bych se zbavit ramdisku.
Kdo pracuje tím stylem, že aplikace po každé operaci ukončí a za pět minut je spouští znovu, ať se naučí dělat s virtuálními desktopy nebo vrátí do MS Windows.
Virtualni desktopy mam, ale problem delky startu aplikace to neresi.
Nevim co je spatneho aplikace vypinat a zapinat co 5 minut a vratit se k Windows je opravdu rada nad zlato :/ A to az tak, ze jsem do tech windows opravdu nabootoval, vzal do ruky stopky a zjistil ze pod win je to 2x-4x rychlejsi:
win98+office2000
1. start word/excel do 3sec
kazdy dalsi do 1,5 sec
1.start IE 5.5 do 2,5 sec,
kazdy dalsi do 0,5 sec
Debian unstable,kernel 2.4.24
1.start galeonu 1.3 : 10sec
kazdy dalsi : 2 sec
1. start mozilly 1.7 : 6sec
kazdy dalsi 1,8sec
1.start OOffice 1.0 : 12 sec
kazdy dalsi : 3 sec
vsechno na PC Celer 1400/512 MB RAM/40GB baracuda, vsechny browsery maji default blank stranku, vsechny office prazdny dokument.
Je to sice porovnavani jablek s hruskama, ale jako demonstrace ze aplikace se muzou poustet slusne rychle i kdyz se porad vypinaji/zapinaji to myslim staci.
Ale mate pravdu v tom, ze posledniho 1/2 roku galeon nevypinam, protoze me neuveritelne irituji ty 2 sekundy kdy se otvira nove okno(i kdyz je galeon nacachovany). 2 sekundy je sice nic, ale kdyz je to 50x denne, tak to pekne leze na nervy. Jenze reseni "nevypinat aplikace" je znouze cnost, a ne chteny stav - abych tak parafrazoval vasi myslenku, co kdyz budu chtit tu pamet zabranou "pouze cekajicim" galeonem na neco jineho ?
Mozna vam prijde, ze to moc hrotim, ale zastavam nazor ze zivot se da stravit prijemnejsimi vecmi nez cekanim na pocitac. Pres 5 let jsem pouzival Pentium 100 s 32M RAM. Jelo na tom vsechno(win95,office, linux, internet), ale ke konci hrozne pomalu-abych se z toho nezblaznil, tak pri kazdem cekani jsem si rikal : "oooomm, je to stary pocitac co presluhuje. oooom, muzu byt rad ze vubec jede. ooooomm, az budu mit novy pocitac vsechno pobezi jak z praku.oooomm nikdy nebudu uz cekat" a tak porad dokola. Pak jsem poridil novy komp(Pentium III 800MHz, 512MB RAM, 40GB HDD IBM...) a po tydnu jsem k obrovskemu zdeseni zjistil, ze ono "ooooom" se objevuje porad a ze zase cekam na pocitac! => BIOS potrebuje cca 10 sekund nez se vybrbla, nez OS nabootuje tak je pres minutu pryc(tehdy win2k, RH7.2...), nez cdromka nacte CD-R tak opet 6 sekundove "ooooommm", vetsi aplikacky jsou se schopny poustet pres 10 sekund protoze maji neuveritelne mnozstvi grafickych cingrlatek...atd, atd.
Ano, prehanim to. Ano - pulka z toho jsou prakticky neodstranitelne HW problemy. Ale jadro pudla zustava - jsme tu my kvuli pocitacum, nebo pocitace kvuli nam? Kdo ma na koho cekat?
Od te doby dumam nad tim, jak udelat "rychle PC" - nastrel pozadavku : boot do 20 sec, mensi aplikace nabehnou driv nez zvednu prst z tlacitka mysi, vetsi aplikace se spusti do 1 sekundy. (Tak nejak jsem si ted vzpomel na MS-DOS...:)) )
Ano, neda se to udelat bez nekolika opravdu osklivym triku - zkratkovite: swsusp,UML,Gentoo+prelink,RAID0 nad 2 tichymi disky,peclive vybrana CDROMka, GNOME nahradit iceWM(asi), pouziti jednodussich,rychlejsich programu,ktere zastanou vetsinu prace-> typicky firefox vz mozilla, cistky v bootovacich skriptech, mozna ty ramdisky, atd, atd... Ale neni to nemozne a hlavne: jestlize pod Linuxem to jde ztuha, tak pod windows to nelze vubec-predstavte si,jaky je by to byl drtivy argument v typicke debate Linux vs. Windows - "Linux-OS na ktery nemusim cekat"
Lovu zdar
Ano aj ja som mal taky problem (aj ked bios mi prebehne rychlejsie). Potom som si skompiloval Gentoo od stage1, nepouzivam KDE ani GNOME (ani mi nechyba) ale xfce, ako terminal xterm nie konsole - je mi kazdopadne sympatickejsi, xcalc miesto kcalc, operu aj ked nie je free a ostatne uz nejako prezijem. Vysledok je ze mi Linux startuje rychlejsie ako w2000.
ak nechcem cakat na system, aplikacie, necham ich bezat, da rozum. vam fakt vadi, ze vam pc nabieha 30 sekund? za ten cas sa ja idem aspon vycurat... podstatne je podla mna to, ako bezi system po svojom starte. ked som mal win, restartoval som v priemere raz denne. odkedy mam linux, restartujem jedine pri vymene jadra za novsie.
Mozilla/galeon/cokoliv ma ten problem, ze se sklada ze spousty sdilenych knihoven. Pri spousteni programu se tyto knihovny musi "prolinkovat" (dynamic linking). To je pomerne dost pocitani a muze se stat, ze pomale spousteni neni zpusobene ctenim z disku, ale prave touhle rezii.
Na Danixu staci na serveru nabootovat z CD a spustit sudo knoppix-terminalserver a stanice (kolik jich chces :-) ) nabootovat ze sitovky. Funguje PXE i etherboot. Kdyz mas dostatek pameti (tolik aby se ti veslo cele CD do RAM a nebudes pouzivat ten server jako stanici = nebudes tam spoustet uz nic jineho narocneho na pamet) tak se ti cele image CD driv nebo pozdeji ocitne v cache (nebo ho do ni natahnes umele treba kopirovanim do /dev/null) a pak to jezdi jak z praku. Akorat se jedna o tzv. tluste klienty = vsechny app bezi lokalne na tech stanicich. Pokud by jsi nechtel na tom serveru bootovat primo stoho CD, ale chtel tam behat svuj system, tak si s tim musis pohrat, ale taky zadny vetsi problem. V pripade silnejsiho serveru, bych se ale radsi zabyval variantou tenkych klientu.
dakujem
skor som mal na mysli,ze server je iba poskytovatel dat,nejake pentium s 48 Mram cdrom /pripadne distribucia na disku,teda komplet cd/ a sietovkou zalozenom na debiane a samotne stanice /cez etherboot apod./ by boli realtivne silne stroje,teda vsetok soft,aplikacie by sa posielali zo servra stanici /poziadavka ryxlej siete je splnena/,ale nie v zmysle copy2ram,taku velku ramku zase nemaju,standartne maju 128 mega
Tak prave na to je ten knoppix-terminalserver i s tema 48MB RAM by se to dokazalo rozbehnout. Samozrejme v tomto pripade by se muselo bootovat do initlevelu 2 (danix 2 nebo danix24 2). Pri vetsim poctu stanic by to ale myslim ze zacatku hodne neprijmne kulhalo na rychlost te CDROM, protoze by kazda stanice vsechno co nema ve sve cache nfs tahala ze serveru a on kvuli tomu, ze ma malo pameti, by to porad znova a znova tahal z CDROM. To by bylo peklo. Kdyby ty stanice meli dost RAM, tak po te co by takhle potrapili ten server (hodne pravdepodobne kazda znova a zaroven a proti sobe krizem a fuj) by uz to bezelo dobre. Tech 128MB na stanici by ale bylo rozhodne malo na OO.o a mozillu. To by je melo spolehlive poslat do kolen uz jen proto, ze by nemeli kam swapnout (predpokladam, ze v nich nebude ani HD na swap) a i kdyby meli swap na HD, tak by to bylo pomale, protoze by bezici aplikace vycamrali pamet z cache nfs a kazda prkotina by se znova tahala po siti (coz by jeste nebyl problem), ale pokud by to ten server cetl z CDROM (a navic pozadavky z nekolika klinetu), tak to muzes rovnou zabalit. Pokud na tom nechces behat tyhle molochy, tak je to schudne. Osobne bych ale uvazoval o vycleneni jedne te stanice s dost RAM prave na roli toho serveru - to by melo mit efekt aspon nejakeho rozumneho cache pristupu na CDROM - nejuzsi misto te sestavy.
To je nejake pomylene. V pripade terminal serveru si stanice namontuje pres nfs root filesystem a spusti X server, kteri se prihlasi na terminal serveru. Od te doby vsechny aplikace bezi na serveru, stanice zadnou dalsi ramku nepotrebuje. Co znamena termin nfs cache netusim (mozna swap pres nfs, ten je ale potreba jen v pripade, ze stanice ma 32MB RAM a mene, jinak se nepouziva).
Ja neco psal o terminal serveru? At hledam jak hledam, jedina zminka je knoppix-terminalserver. Za to jak to Knoppler pojmenoval bohuzel nemuzu.
Krom toho kdyz budu striktne trvat na presne terminologii, tak i to co vymyslel Knopper se da s primhourenim vesch tri oci oznacit za terminal server. Tvrdit, ze prave tenky klient, ktery si nasdili "pres nfs root filesystem a spusti X server, kteri se prihlasi na terminal serveru" je jediny mozny spusob jak vytvorit terminal server jen proto, ze tento zpusob povazuji za nejjednoduzsi a pouziva ho mimo jine projekt LTSP, je prinejmensim odvazne.
nfs cache neni zadny swap pres nfs, ale proste cache sdileneho svazku na strane nfs clienta. Neni to uplne normalni cache, protoze sit proste neni block device, ale nejaka cache tam je, jinak by se posilal kazdej prd znova a znova.
On to tak Knoppler pojmenoval spravne, protoze to jako terminal server lze pouzit, stejne jako nfs server. Nicmene spekulovat o tlustych klientech a resit velikost jejich pameti mi pripada trochu mimo. Proste nestaci-li mi lokalni RAM, pouziji tu stanici jako tenkeho klienta, coz je mimochodem rozumejsi pristup (nikoliv jednodussi, to mne ani nenapadlo, ze se jedna o jednodussi zpusob - v cem jako?), protoze budouci investice do HW se redukuji na upgrade serveru. Tot vse.
no tak teda swap by rozhodne mit v RAM nemohl (a Danix rozhodne nema, ale muzu se zepata alekibanga ;-) ). Patrne nevis k cemu je swap. Tak tedy, kdyz jadro potrebuje nejakou pamet a nema zadnou volnou, tak se pokusi uvolnit nejakou obsazenou a k tomu muze pouzit buffery, cache a v posledni rade pamet bezicich (spicich a v jinem stavu) procesu a to posledni prave provede tim, ze dany proces odswapuje (ulozi do nejakeho uloziste, nejlepe na HDD). To ale logicky nemuze udelat do pameti, kdyz to dela kvuli tomu, ze mu chybi. To da rozum.
Zajimava varianta by byla jednodisketovka se zabudovanym zero install systemem + repozitory na siti s celou distribuci dostupnou prave pres zero-install. Uz dlouho nad tim spekuluju, nechce se do toho nekdo pustit (ja uz jsem na to linej, ale finance by se nasly)?
Jen doplnim, ze zero-install skutecne nevyzaduje zadnou instalaci aplikaci, vyuziva se lazyfs filesystem, coz je spojeni internetu+lokalni cache, takze kdyz treba nemate mozillu a lazyfs mate na mount pointu /uri0 a vite, ze mozilla pro zero-install je dostupna na www.mozilla.org/zero-install, pak proste spustite na command-line
$> /uri0/www.mozilla.org/zero-install/AppRun
a hotovo. Vypada to jako teorie, ale ono to skutecne funguje (AppRun je uz primo aplikace - tedy jakysi wrapper pres ./mozilla - zadny instalak). Update/upgrade se dela prikazem refresh nad konkretnim adresarem nebo nad celym filesystemem. Ted si predstavte, ze by ten 1MB (jadra se zero-install) byl zabudovan jako BIOS a instalace OS by znamenala jen rici, kde je repozitory. Vice na http://zero-install.sourceforge.net.
Ten zero-install + lazyfs me opravdu zaujal, ale nedokazu si predstavit konkretni pouzitelnou aplikaci do praxe. Nebo ze bych to spravne nepochopil? LTSP jsem rozjizdel a byla to balada, ale tohle mi prijde prakticky nepouzitelny, nebo se pletu? Kdyby mi nekdo vysvetlil k cemu to muze byt dobre, tak bych se do toho mozna i pustil :)
No lazyfs je filesystem, ktery kdyz to nema v lokalni cache, bere si predmetne z WWW (internetu). Tudiz jsi schopny mit jako zaklad distribuce v pocatku jadro s lazyfs + busybox + zero-install a nic vic. Ale de facto mas plnohodnotnou ditribuci protoze pri spusteni libovolne binarky co neni lokalne stahne se z repozitory na webu. Tudiz neni problem spustit napr. X+KDE i kdyz je vlastne vubec nemas, oni se natahnou zvenci. Proste, ty nepotrebujes zadne aplikace/balicky instalovat, to stejne plati pro knihovny a jakykoliv dalsi soubor. Proste ten OS je na webu vcetne tisicu aplikaci a ty mas lokalne zakesovane jen to co pouzivas. Samozrejme /home je tvuj.
Proste, rekneme, ze je to takovy knoppix, ale ta CDROMka je na webu a ty mas u sebe jen to co ti tu WWW cdromku (neber to doslova) zpristupni. No a me ta myslenka (tedy postavit na tom cely OS, nejen jednotlive aplikace) docela zaujala.
Jeste doplnim, ze cilem je udrzovat na webu odladenou instalaci linuxu (samozrejme jich muze byt vice, treba stable/testing/unstable) s maximalnim mnozstvim nainstalovaneho softu, s dokonalou lokalizaci apod., ktera by byla k dispozici beznemu uzivateli prostrednictvim lazyfs. Tedy neco co tu resil mato, ale NFS nahrazuje lazyfs a cele je to k dispozici v daleko vetsim meritku pro tisice useru na internetu. Pointou je, ze uzivatel se nestara o upgrade aplikaci, systemu, cehokoliv, neboji se o svuj system, protoze ja/ty jsme jeho admini.
To neni vsechno, ze? Podstatne jsou ty spravne nastavene proxiny v nasich sitich, jinak by pet stanic denne bootovanych sekretarkami sezralo i hodne silne pripojeni (jasne jenom po ranu a pak kdykoliv se zacnou nudit a budou brouzdat tema repository...)
Pripadne se daji pouzit lokalni mirrory.
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.
Initramfs pouzivam. Muzes pak kompletne vyhodit z jadra BLK_DEV_RAM, a hlavne ten cpio.gz vychazi o dost mensi nez cramfs image nebo komprimovany ext2/minix.
Akorat certviproc misto /linuxrc se spousti /init, a pri vypnutem BLK_DEV_INITRD musis mirne poeditovat arch/i386/mm/init.c a init/initramfs.c aby kernel ten ramdisk vubec rozbalil. Usetris ale par desitek kB.
Jedna vec mi usla: AKO sa ten ramdisk natiahne z disku do RAM? Ved je to znova pristup na disk, ku ktoremu je ovladac v ramdisku, ktory chcem z toho disku natiahnut...
Keby bol ako raw na disku, tak tomu rozumiem: natiahni z disku sektory N az M. Ale on je na filesysteme. Mozno fragmentovany. "Napali" sa tymto sposobom na nejake specialne miesto na disku spustenim lila resp. instalacneho skriptu ineho loadera? To by znamenalo, ze po zmene initramdisku lilo spustit *musim*, nie mozem, ako je v clanku.
Ako to lilo natiahne?
Ve clanku u Modifikace je napsane "..., pripadne spustit lilo". To pripadne znamena, ze pokud pouzivate treba GRUB, tak LILO samozrejme nespoustite ;-) Pokud LILO pouzivate, tak ho musite spustit po kazde modifikace kernelu i initramdisku, presne tak.
Jak funguji bootloadery by bylo na dalsi clanek. Kazdopadne konkretne LILO si "nekam" poznaci na kterych sektorech se nachazi jadro a initrd a tyhle sektory pri bootu nacte do pameti.
Myslim ze rbk mel na mysli neco jineho. V clanku se uvadi ze se initrd pouziva pro natazeni ovladacu disku ktere jadro neumi "zakompilovat" do sebe. Pokud tedy mame hodne specificky radic disku nebo zarizeni na kterem je jadro i initrd, lilo(grub) k nemu musi umet pristupovat lepe nez jadro protoze z nej umi natahnou jadro samotne i initrd. Myslim ale ze takhle to nebude nefungovat...
Boot sektor od LILO obsahuje mapu druhé části LILO - /boot/boot.b (nemusí být nutně souvislá, mapa je seznam dvojic číslo bloku, počet bloků), druhá část obsahuje mapu jádra a initrd. Příkazem lilo se obě mapy aktualizují. LILO používá pro čtení z disku BIOS.
U GRUBu je na tom kód v boot sektoru stejně (do necelých 500 bytů se moc kódu nevejde), ale BIOS a mapu používá jen pro stage2 (příp. *stage1_5), pak už rozumí formátu filesystému, takže přemístění jádra a initrd (nebo instalace nového) mu nevadí. Po přemístění součástí GRUBu je ale install nebo setup potřeba udělat.
Prirodzene moja otazka je aktualna aj pre jadro, nie len pre initrd. Pristup cez BIOS radica mi sedi, ale kedze je jadro na filesysteme, zavadzac ma niekde asi poznacene zoznam absolutnych sektorov vzhladom na geometriu disku, kde sa tieto subory nachadzaju (dedukcia).
Je z toho mierny OT, skutocne je to asi na clanok o zavadzacoch.