Jak dlouho kompilujete jádro? Hodinu?

x

Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #15 kdy: 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.


D.A. Tiger

  • ****
  • 486
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #16 kdy: 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).

   

D.A. Tiger

  • ****
  • 486
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #17 kdy: 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....
« Poslední změna: 04. 01. 2011, 00:27:56 od D.A. Tiger »

Pavouk106

  • *****
  • 2 395
    • Zobrazit profil
    • Můj blog
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #18 kdy: 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...)
« Poslední změna: 04. 01. 2011, 15:39:40 od Pavouk106 »

Atrament

Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #19 kdy: 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.


xmms

  • ***
  • 151
    • Zobrazit profil
    • E-mail
A co ty warningy při kompilaci?
« Odpověď #20 kdy: 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.

anonym

Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #21 kdy: 14. 01. 2011, 17:49:29 »
Zkus si ty chybové hlášky vygooglit, ať víš, co znamenají  ;).... právě mně se to nikdy nestalo

D.A. Tiger

  • ****
  • 486
  • Tygr, který žere tučňáka ;-)
    • Zobrazit profil
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #22 kdy: 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. 

xmms

  • ***
  • 151
    • Zobrazit profil
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #23 kdy: 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 :)

Pavouk106

  • *****
  • 2 395
    • Zobrazit profil
    • Můj blog
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #24 kdy: 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? ;-)

xmms

  • ***
  • 151
    • Zobrazit profil
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #25 kdy: 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.

Pavouk106

  • *****
  • 2 395
    • Zobrazit profil
    • Můj blog
    • E-mail
Re: Jak dlouho kompilujete jádro? Hodinu?
« Odpověď #26 kdy: 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 :-)