Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: xmms 31. 12. 2010, 15:11:36

Název: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: xmms 31. 12. 2010, 15:11:36
Rozbalil jsem zdroják linux-2.6.36.2.tar.bz2 67MB, po rozbalení to sežralo 454MB, použil jsem oldconfig z distribučního suse desktop kernelu, kompilace příkazem make -j 2 trvala 47 minut a výsledek úctyhodných 5GB. Ještě jsem ho neinstaloval, protože si zase nechci rozrasit systém jako minule.

Mám Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz
Jak u vás? Jakou by to zhruba mělo mít velikost a jak dlouho to trvá, pokud vyberete optimální konfiguraci a zvolíte jen potřebné součásti?
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: D.A. Tiger 31. 12. 2010, 15:44:00
Hmmm... nemám sice dvoujádro, ale kompilace jádra u mě trvá něco přes hodinu - Záleží na tom, co všechno jsem povolil, nebo z něj vyházel. Divných mi však přijde těch 5GB. Momentálně mám vanilla kernel 2.6.36.1 a zabírá letem světem 70MB i s moduly...
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: Atrament 31. 12. 2010, 15:50:44
Distribuční "konfigurace" spočívá v tom, že se vybere úplně všechno a nechá se to zkompilovat jako moduly, takže se pak není čemu divit, že se to kompiluje hodinu. Když se poctivě prosekáš menuconfigem a vyházíš 99 procent nepotřebností a necháš jenom to co opravdu potřebuješ, tak bys měl jádro na tom svém stroji zkompilovat za pár minut. Na notebooku s Celeronem M na 1,5 Ghz to trvá necelých 20 minut.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: LukynZ 31. 12. 2010, 16:52:21
5min max
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: e.xitu.s 31. 12. 2010, 18:01:04
Záleží, jestli celé i s moduly (např. za pomocí genkernelu) nebo ušitě na míru hardwaru... nemám dvoujádro, ale za půl hodiny mám tu druhou variantu zkompilovanou.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: H0ax 31. 12. 2010, 18:53:07
5GB má ten source adresář od jádra poté, co se zkompiluje, ten můj mí gigo.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: hawran diskuse 31. 12. 2010, 19:24:42
A komu tím prospějete?
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: e. 31. 12. 2010, 20:43:27
vanilka na 2x2jadro opteron do 15 min i s moduly...
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: xmms 31. 12. 2010, 21:54:14
Nedalo by se to nějak udělat, aby mi to automaticky vyhledalo potřebný HW a samo a dobře nakonfigurovalo? Něco na způsob

make idealconfig_for_my_pc

Také bych uvítal možnost pokračovat v přerušené kompilaci.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: Sleep_Walker 01. 01. 2011, 17:15:02
ale ono to vicemene pokracuje tamtez, kde to skoncilo posledne
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: D.A. Tiger 01. 01. 2011, 22:28:01
5GB má ten source adresář od jádra poté, co se zkompiluje, ten můj mí gigo.

No i tak mi přijde 5Gb sakra hodně. Ten můj má 869.3 Mb
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: TomK 02. 01. 2011, 00:20:44
No tipoval bych, ze ta velikost 5GB je velikost celeho adresare. Je v tom tedy zapocitana i velikost vsech object souboru apod. Velikost slinkovanych modulu a jadro samotne bude urcite mensi.
Jinak kompilace je obycejny make file, takze pokracuje tam kde jsi ji prerusil.
Distribucni konfigy jsou nastavene tak, ze je povoleno skoro vse. Tudiz kompilujes milion veci, ktere nebudes nikdy potrebovat. Ja to delam tak, ze si pro distribucni config odstranim vetsinu voleb a tim usetrim spoustu casu.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: xmms 02. 01. 2011, 04:09:14
No ano, je to velikost celého adresáře, do kterého se to zkompilovalo. Soubor bzImage má 3MB, vmlinux.bin 3,5MB, System.map 1,6MB a to ostatní budou asi moduly.

Zajímalo mě i minimum, tak jsem zrušil všechny volby a mělo to 501MB, takže to narostlo o 47MB. To pak trvá asi minutu.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: Pavouk106 03. 01. 2011, 15:45:52
Já mám jádro na Core i5 750 (4x2,66GHz) za 3 minuty. Je ušitý přímo na míru mýmu HW a samotný jádro má kolem 4MB. Moduly skoro nemam, všechno mam v jádře.

Trvalo mi ale dost dlouho, než jsem to vychytal. Svuj HW zjistíš například pomocí "lspci" a taky třeba pomocí halu. Je dobrý si tam třeba naházet víc věcí a postupně ubírat, dokud to pojede... :-) Třeba nepotřebuješ podporu AMD procesorů a jejich věcí, stejně jako NVidia grafiky, 10Gbit/s síťovek, hromady zvukovek a dalších hovadin, který ve Tvym NTB nejsou a nikdy nebudou... Nech si v jádře hlavně řadiče IDE/SATA, abys vůbec nabootoval. A neměň si nastavení grafiky v jádře (s ATi je lepší neexperimentovat, když Ti jede - což už vím z jinýho tématu, který jsi tu zakládal). Dobrý je nechat si tam síťovky, aby ses dostal na net pro případnou radu. Postupně ubírej a sám uvidíš, co potřebuješ a co ne (a většinu ne).

Prolezení nastavení jádra je na pár hodin, pokud si čteš o jaký volby se jedná. Spoustu ale můžeš přeskočit, takže víc než dvě hodiny tim určitě nezabereš. Jádro pak dáš do 15 minut ;-) (To jsem si dával já na Centrinu 1,6GHz - jádro mělo cca 3,3MB a bylo hotový za 13 minut)

A důležitej dodatek - nech si v GRUBu (LILU) i možnost na nabootování do staršího (funkčního) jádra. A pokud kompiluješ moduly, tak na ně taky bacha - i starší jádro si může sahat pro nově zkompilovaný moduly a tim pádem i tak nemusí naject! Děje se tak, když máš víc jader na stejný verzi - plácnu třeba 2.6.32-r7 a budeš mít dvě jádra týhle verze, tak budou mít společný moduly = když se něco pokazí v modulu u novějšího jádra a dáš reboot, tak ani to starší jádro nenajede (najelo by jen jádro jiný verze, třeba 2.6.32-r1).

Každopádně mít jádro ušitý na svuj HW je pěkná věc ;-)

EDIT: Ještě doplním, že jsem taky nedávno kompiloval jádro 45 minut (reálnýho času, ale čas systému hodil 90), ale na dvouprocesorovym stroji s Celeronama 366MHz (bylo taktéž ušitý na konkrétní HW, nic nadbytečnýho)

EDIT2: Ještě nápad - hoď sem typ Tvýho NTB, třeba na něm někdo už má hotový jádro, tak by se podělil o konfiguraci ;-)
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: xmms 03. 01. 2011, 21:38:40
Mám aspire 5738G. Ale to je experimentování spíš na několik týdnů. Odstraním z jádra nějaké věci, které vypadají nepotřebné (protože je nenajdu v lspci a hwinfo), a ono to nefunguje. Možná někdy, až nebudu mít co dělat, se na to podívám. Ale změním počítač a můžu začít odznova.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: x 03. 01. 2011, 22:29:46
Nechci vas urazet, ale kdyz si to tady tak ctu tak uz si o dnesnich radobylinuxarich nemuzu myslet vubec nic dobreho.

Muzete mi nekdo vysvetlit co je tak hrozneho na distribucnim kernelu, pokud je tam skoro vsechno nastavene zkompilovat jako modul? V pameti to misto nezabira a na disku nevadi. Navic kdyz k notebooku pripojim neco, co ted nepotrebuju, ale nekdy prijdu na to ze ano, tak se nemusim otravovat z dalsi kompilaci - proste jenom nahraju modul. Pokud potrebuju neco, co tam neni ani jako modul, proste to v configu jako modul zapnu a necham vybuildit jen to.

Nerikam ze to nekdy neni potreba (napr. mikropocitace, patchovani kernelu, korporatni prostredi, atd.), ale prijde mi uchylny onanovat hromadu hodin nad vyhazovanim voleb z configu, ktery nicemu neskodi (a nejspis ani nevite proc tam vlastne jsou) a pak dalsi hodiny resit co vsechno musim zase vratit aby to alespon trochu fungovalo.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: D.A. Tiger 03. 01. 2011, 23:45:30
Napadlo mě ještě, že se ti mohou shodit tyhle články :
http://www.abclinuxu.cz/clanky/ruzne/abcserialy#kompilace  - trochu starší, ale základní postup a rady jsou platné i dnes. Mě kdysi hodně pomohl a dost věcí objasnil.
http://forum.debian-linux.cz/index.php/topic,619.0.html Sice určený primárně pro Debian, ale jsou tam probrány zevrubně hlavní sekce kernelu a naznačeno co v nich lze hledat a co odstranit...

Jinak postupuji tedy podobně jako psal kolega výše. Vezmu si distribuční jádro a pomalu jej opravuji (třeba i sekci po sekci. Až jsem s jednou hotov, přejdu na druhou). Dneska mi to už tolik času nezabere, protože konfigurace si schovávám :-)

Co se týče nástrojů pomoci by ti mohly lshw, hardinfo a KInfoCenter (máš-li - podobně jako já  :D - rád grafická udělátka).

   
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: D.A. Tiger 04. 01. 2011, 00:22:27
To x :

A co je zas až tak špatného na tom si jej zkompilovat? Jako myslíš, že "dřívější" linuxáři kernel nekompilovaly? Já bych řekl že kompilovali jak vzteklí. A možná dodnes kompiluji.

Nastavení provedu jednou a pak při každém updatu kopíruji jen konfigurák. Maximálně zkontroluji zda se nevyskytlo něco nového, co by se mi mohlo hodit

Všechno jako modul přeložit nejde a třeba model zprávy paměti, nebo IO si jako modul nevybereš - což jsou věci distribučně přednastaveny a mohou podstatně ovlivnit výkon stroje. Debian např. do jádra rve moduly pro notebooky. No nevím jestli je to na PC využitelné :-( Navíc ovladače a moduly které přímo souvisí s konkrétním hw nechám přeložit napevno přímo jako součást jádra (je-li to možné). podle mých osobních zkušenností to zvedne docela slušně jednak odezvu systému a jednak i trochu zkrátí dobu startu systému.

Další věc : Máš-li disk o kapacitě jedno Tera, pak nemusíš velikost jádra a modulů řešit. Já mám 80Gb, z toho 35Gb vyhrazených pro systém a aplikace. Tam už si musím hlídat každých pár mega.

No a nakonec jsem zažil pár příkladů, kdy jediným řešením byl právě překlad kernelu. Například měl jsem integrovanou zv. kartu, kterou jsem v BIOSu zakázal, ale ALSA ji stejně vždycky nějakým zázrakem detekovala a aktivovala. Jedinou možnosti jak tomu zabránit bylo vyházet odpovídající moduly z jádra. Pak byl klid. 

Nebo modem, který se musel inicializovat dvakrát. po zadrátování souvisejících modulů do jádra, odpadl i tenhle problém....  Znám i případ, kdy na jednoprocesorovém stroji se jádro snažilo z mě absolutně nepochopitelného důvodu používat smtp, výsledkem byl neuvěřitelně pomalý kompl. Hádej co zabralo....
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: Pavouk106 04. 01. 2011, 12:14:36
Reakce na X: Třeba konkrétně u mě je to jednoduchý, mám Gentoo. Při instalaci jsem měl dvě možnosti: 1. genkernel nebo 2. vlastnoručně. Vybral jsem si 2. možnost, alespoň o "problematice" díky tomu něco vím. Už kvůli tomu jsem ale vyházel/vynechal všechny zbytečnosti. Nepotřebuju podporu Firewire, i kdy ho na desce mám (nemám k němu co připojit), nepotřebuju podporu 1Gbit síťovek, když takovou nemám, nepotřebuju podporu hromad dalších věcí, když ani nevím, k čemu jsou. Potřebuju, abych spustil PC, nabootoval do systému a mohl pracovat s tím, s čím prostě pracovat musím/chci. Proč nemám něco jako moduly? Odpovědí je - proč bych měl? Tohle je prostě moje osobní volba, já to tak upřednostnil, tak nejspíš proto. A vůbec mi nevadí, že jsem hromadu hodin onanoval nad vytvářením jádra přímo pro svůj počítač. Alespoň mi rekompilace netrvá hodinu, ale 3 minuty (a za ty moje pomalovarná konvice ani neuvaří vodu na kafe).

A za sebe musíš říct, že já se nepovažuju za rádobylinuxáře, ale jsem klasický kompletní linuxák.

K zakladateli tématu: Jak jsem už napsal, postupným seškrtáním věcí v jádře se dostaneš na lepší časy. Nesmíš si škrtnout řadiče SATA, ale ani Generic IDE/PATA SCSI (nebo tak nějak, i na něm to je závislý). Do začátku seškrtej věci, o kterých jsi si jistej, že je nemáš (síťovky, zvukovky, třeba nemáš firewire, usb 3.0, AMD procesor + věci kolem, NVidia grafiku + věci kolem, virtualizace pokud jí nehodláš využít nebo pokud jí nepodporuje CPU, filesystemy jako třeba XFS a ReiserFS pokud je nehodláš používat, NFS taky tak a hromadu dalších věcí). Stačí postupně ubírat, nemusíš to mít udělaný za jeden den... Já osobně jsem začínal na starším NTB s jádrem od kámoše (najelo jen po drobných úpravách) a postupně ho předělával víc na svůj HW, až bylo úplně jiné.

Podstatný pro Tebe:
Typ CPU (Intel Core)
Řadič disku (konkrétní SATA nebo všechny SATA + Generic IDE/PATA SCSI)
Konkrétní typ síťovky (nebo alespoň výrobce, ať vyškrtáš ostatní kromě Tvýho)
Konkrétní typ zvukovky (nebo alespoň výrobce, nejspíš Intel)
Grafika (u Tebe ATi, doporučuju se v tom moc nehrabat, alespoň ne prozatím, dokud nevychytáš ostatní věci)

Vyházet (pokud nepoužíváš enbo to momentálně nefunguje):
V4L (Video for Linux, například webkamera)
Firewire
NVidia + ostatní grafický věci (ale až po ostatním, mohl by pak být trabl a to není žádoucí)
Čipsety základní desky jiný než je ten Tvůj
Filesystémy, který nehodláš pužívat
HW, kterej nemáš (například konkrétní myši, klávesnice, volanty, gamepady, speciální věci jako serverový síťovky, čipy apod. - POZOR - nevyhazuj si Generic IDE/PATA SCSI, SATA a zatim ani nic u grafických karet)
Debug informace čehokoliv (beztak se jima nejspíš nebudeš probírat, doku nebudeš muset a pak si je kdyžtak přidáš)

Víc mě z fleku nenapadá, pozdějš sem můžu poslat svůj konfigurák, jen pro inspiraci...

EDIT: poškrtal jsem tu blbost s IDE/PATA, jde totiž o SCSI (nemám v PC jediné SCSI zařízení, ale když to vyškrtnu, tak nenabootuju, jádro nevidí disky...)
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: Atrament 04. 01. 2011, 12:26:06
X : nevidím důvod proč se pozastavovat nad tím, že si někdo chce zkompilovat vlastní jádro. Je to možnost na které je postavena celá původní myšlenka Linuxu, a díky práci distributorů je to taky zcela dobrovolná možnost. Pokud jsi spokojený s jádrem od distributora ok. Pokud ne - máš možnost udělat si vlastní. Prvních pár pokusů ti možná zabere hodně času, ale v okamžiku kdy se v té konfiguraci zorientuješ, dokážeš si ji pak už "naklikat" během chvilky i na novém stroji.
<p>
Já jsem měl asi nějakou smůlu ale snad nikdy za celou dobu co jsem Linux používal (cca 13 let) jsem nebyl s distribučním jádrem spokojený. Například fungující uspávání a probouzení notebooku od distributora jsem se dočkal až s jádrem dodávaným s Linux Mint 9. Přitom s vlastnoručně kompilovaným kernelem to plně fungovalo dlouhé roky předtím. Debian na tom samém notebooku nebyl kolem roku 2008 použitelný, protože tam byl nějaký problém s ovladačem integrované grafiky i915 v jádře - prostě to náhodně padalo. (A když to zrovna nepadalo tak to neprobouzelo z uspání:) ) Obojí vyřešeno prostou kompilací vlastního kernelu během půlhodinky.
<p>
Někdy ti kompilace vlastního kernelu může vyřešit nějaký problém nejjednodušeji a nejrychleji a je fajn tu možnost mít.
Název: A co ty warningy při kompilaci?
Přispěvatel: xmms 14. 01. 2011, 16:54:54
Při kompilaci jádra to vždycky hlásí strašnou spoustu warningů. To je v pořádku nebo to je jenom u mě?

Většinou je to něco ve smyslu

warning: statement with no effect
warning: operation on ‘cmdq->head’ may be undefined
warning: cast from pointer to integer of different size

a spousta dalších. Takových je tam hodně moc.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: anonym 14. 01. 2011, 17:49:29
Zkus si ty chybové hlášky vygooglit, ať víš, co znamenají  ;).... právě mně se to nikdy nestalo
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: D.A. Tiger 15. 01. 2011, 12:42:56
Taky na to občas narazím, ale problémy to zatím žádné nedělalo.

Bez konkrétních modulů ty hlášky nemají žádný význam. Překladač hlásí, že nalezl nějaké chyby, které by však neměli být až tak závažné, aby se modul nepřeložil nebo nějak významně ohrozily jeho funkci. Některé například poukazují na to, že daný modul může nějakým způsobem spolupracovat s jiným, ale ten není přeložen (asi byl vyřazen při konfiguraci jádra). Jiné třeba ukazují, že ve zdrojovém kódu je použit ne zcela vhodný typ proměnné,  nebo konverze, atd...

Nejlepší způsob asi je si v dokumentaci nebo na internetu ověřit, zda daný modul nevyžaduje (nebo nespolupracuje) s jiným. 
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: xmms 15. 01. 2011, 13:25:41
To by teoreticky zjistit šlo, ale to je práce tak na měsíc dělat jenom tohle. Zvlášť jsem při kompilaci uložil standardní výstup a chybový výstup. Ten chybový má 27kB a obsahuje přes 300 řádek. Ten standardní má asi 14000 řádek a 500kB informací. Ne že by to bylo důležité, je to jen statistická zajímavost :)
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: Pavouk106 21. 01. 2011, 14:21:52
Omlouvám se, že reaguju tak pozdě k těm warningům. Já tam taky nějaký mam, ale asi jen dva nebo tři. V praxi si jich nevšímám, warning beru jako "v pořádku". Horší by byly errory.

Už jsi zkoušel škrtat z jádra zbytečnosti? ;-)
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: xmms 21. 01. 2011, 15:18:47
Jo, zkoušel. Zatím to většinou skončilo nezdařeným bootem. Neměl jsem ale moc času na pokusy s jádrem. Tady je docela podrobný návod na jádro
http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/

To určitě stojí za přečtení. Velmi zajímavá je kapitola 7, kde je návod na zjištění potřebných věcí k dané mašině.  Je to tenhle skript, který proleze sysfs a vyhodí seznam potřebných modulů:

Kód: [Vybrat]
#!/bin/bash
#
# find_all_modules.sh
#
for i in `find /sys/ -name modalias -exec cat {} \;`; do
/sbin/modprobe --config /dev/null --show-depends $i ;
done | rev | cut -f 1 -d '/' | rev | sort -u

Podle té PDF knihy to jsou všechny moduly potřebné pro běh na tom stroji. Jestli to chápu dobře, tak můžu vymazat všechno z devices a povolit jenom to nastavení, které patří k mým modulům .ko

Mně to vyhodilo tohle
acerhdf.ko                                                   
acer-wmi.ko                                                   
ac.ko                                                         
ahci.ko                                                       
battery.ko                                                   
bluetooth.ko                                                 
btusb.ko                                                     
button.ko                                                     
cdrom.ko                                                     
cfg80211.ko                                                   
ehci-hcd.ko                                                   
hid.ko                                                       
hwmon.ko                                                     
intel-agp.ko                                                 
iTCO_vendor_support.ko                                       
iTCO_wdt.ko
iwlagn.ko
iwlcore.ko
i2c-core.ko
i2c-i801.ko
joydev.ko
led-class.ko
libata.ko
mac80211.ko
output.ko
pci_hotplug.ko
pcspkr.ko
processor.ko
rfkill.ko
rtc-cmos.ko
rtc-core.ko
rtc-lib.ko
serio_raw.ko
shpchp.ko
snd-hda-codec.ko
snd-hda-intel.ko
snd-hwdep.ko
snd.ko
snd-page-alloc.ko
snd-pcm.ko
snd-timer.ko
soundcore.ko
sr_mod.ko
tg3.ko
thermal.ko
thermal_sys.ko
uhci-hcd.ko
usbhid.ko
uvcvideo.ko
videodev.ko
video.ko
v4l1-compat.ko
wmi.ko


Těchto nekolik modulů by mělo stačit pro ovládání veškerého HW na mém stroji, tak to někdy vyzkouším a uvidíme. Ještě zbývá zjistit, které to jsou položky v menuconfigu.
Název: Re: Jak dlouho kompilujete jádro? Hodinu?
Přispěvatel: Pavouk106 21. 01. 2011, 15:36:23
Ještě upozornění - ne všechno je v modulech! V jádře budeš mít i další věci, který neni dobrý vyhodit... Ale na to budeš muset přijít sám, s tím Ti nikdo na dálku neporadí (teda nikdo... pokud bys našel člověka se stejnym HW a už osekanym jádrem, tak ten by poradil :-) ).

Jinak na boot systému by mělo stačit jádro kohokoliv, kdo má modernější PC s HW podobnym Tvýmu (teda výrobce CPU, SATA disk, ATI grafika - pak bys musel zjistit síťovku, zvukovku atd. a doházet to postupně všechno do jádra).

Pokud bys chtěl takovej experiment zkusit, můžu se přeptat kámoše co má NTB s C2D procesorem, ATI, Intel zvukem a SATA diskem, jestli by vydal svuj konfigurák. PC Ti na jádře podle něj najede, ale budeš muset přihazovat svuj HW sám (místo škrtání zbytečnýho).

Mimochodem - timhle způsobem jsem zkompiloval svoje první funkční jádro :-)