Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Kernel - kompilace, verze a problémy  (Přečteno 69849 krát)

qUAKER

  • Host
Kernel - kompilace, verze a problémy
« kdy: 11 Července 2008, 11:00:14 »
Tento návod je již zastaralý a je plánována jeho aktualizace.

Vítejte v kernel tématu. V tomto tématu je napsáno, které jsou aktuální verze kernelu, jak zkompilovat kernel v 10 bodech a často kladené otázky. Toto téma je ekvivalentem Master Kernel Thread na Ubuntu forums.

Varování - Kompilace kernelu není věc pro úplné začátečníky. Začátečníkovi se pak stane, že nebude vědět, co která volba znamená :)

Informace:

(F: celý kód;
 patch: kliknutím na verzi;
 FU: celý kód bez posledního patche.)

Aktuální stabilní verze: 2.6.33.2 2010-04-01 F FU
Aktuální vývojová verze: 2.6.34-rc3 2010-03-30 F FU

Ostatní verze najdete na http://kernel.org. Postupujte podle návodu http://wiki.ubuntu.cz/Kompilace_kernelu. Nedoporučuji v případě vývojové verze stahovat snapshot, protože nemusí fungovat korektně.

Kompilace - stabilní verze 2.6.33.2

Body psané červeně jsou důležité.
Body psané zeleně jsou doporučené.
Body psané šedomodře můžou být vynechány.

Citace
# 1. Spustíme si terminál a nainstalujeme veškeré potřebné závislosti ke kompilaci
sudo apt-get install build-essential bin86 kernel-package gcc gcc-3.4 libncurses5 libncurses5-dev fakeroot

# Pokud budeme využívat grafickou konfiguraci v GTK2, tak
sudo apt-get install libglade2-dev

# Pokud budeme využívat QT konfigurátor, tak
sudo apt-get install libqt3-headers libqt3-mt-dev

# 2. Přejdeme do /usr/src a změníme se na roota:
cd /usr/src && sudo -s

# 3. Stáhneme si aktuální stabilní verzi kernelu a tu rozbalíme.
wget -c http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.2.tar.bz2 && tar -xvjf linux-2.6.33.2.tar.bz2

# 4. Odstraníme starý link k linux adresáři a vytvoříme nový, pak se přesuneme do linux adresáře.
rm -rf linux && ln -s linux-2.6.33.2 linux && cd linux

# 5. Aplikujeme patche, které budeme potřebovat.

# Pokud je patch nekomprimovaný, aplikujeme ho takhle
cat soubor.patch | patch -p1 --dry-run # Simulace aplikace patche
cat soubor.patch | patch -p1 # Aplikace patche

# b) Pokud je patch ve formátu .bz2, tak takhle:

bzcat soubor.bz2 | patch -p1 --dry-run # Simulace aplikace patche
bzcat soubor.bz2 | patch -p1 # Aplikace patche

# 6. Zkopírujeme si naše aktuální kernel nastavení a použijeme je:
cp /boot/config-`uname -r` .config && make oldconfig

# 7. Nakonfigurujeme kernel.

# a) pomocí menu v příkazové řádce
make menuconfig

# b) pomocí GTK2 konfigurátoru
make gconfig

# c) pomocí QT3 konfigurátoru
make xconfig

# 8. V General Setup sekci si dopište za Local Version slovo -generic, -lowlatecy, -mujkernel atd.
# Pak se bude váš kernel jmenovat 2.6.33.2-lowlatency nebo podle vašeho jména a ovlivní to i moduly,
# takže bude moct váš kernel běžet vedle jiného 2.6.33.2.

# Pokud nechcete, aby kernel měl 40MB a moduly 700MB, vypněte Kernel Debugging v sekci Kernel Hacking.

# 9. Zkompilujeme kernel. Musíte mít plný root přístup!
make-kpkg clean
make-kpkg --initrd --stem linux --revision=mujkernel.1.0 kernel_image kernel_headers

# Slovo za --revision nahraďte čímkoliv, co má v sobě čísla. Narozdíl od Local Version v konfiguraci ovlivňuje pouze verzi balíku.

# Parametr --initrd není nutný, kernel je schopný běžet i bez ramdisku, ale je doporučeno initrd povolit.


# 10. Nainstalujeme kernel.
cd ..
dpkg -i linux*.deb

# 11. Vygenerujeme initrd (nevím proč, ale novější make-kpkg dělá balíčky, které jej neudělají)
mkinitramfs -o /boot/initrd.img-2.6.33.2-LOCALVERSION 2.6.33.2-LOCALVERSION
# tzn. já dal localversion -lowlt, tak jsem dal mkinitramfs -o /boot/initrd.img-2.6.33-lowlt 2.6.33-lowlt

# 12. Aktualizujeme zavaděč. Po vygenerování initrd je to nutné.
update-grub

Drivery ATI a nVIDIA na 2.6.33.2

Ovladače vždy instalujte z nového kernelu!

Nvidia: instalujte nejnovější vývojovou verzi. Nebo můžete použít Nouveau, pokud jste dobrodruzi :) Platí i pro stable, i vývojovou verzi jádra.
ATI: Debian má v repozitářích pre-release ovladačů, které fungují s Xorg 7.5 a kernelem 2.6.32, pro 2.6.33 i 2.6.34 je nutné aplikovat některý z patchů, které se dají vyhledat na Google a pak to také půjde zkompilovat (zdrojáky jádra se nacházejí pod /usr/src/fglrx-87.. a jsou v balíku fglrx-kernel-src), Ubuntu má ten samý pre-release v repozitářích pro Lucid, takže uživatelé Karmicu/Jauntyho instalujte odtud(starší release budou muset apt-get -b source fglrx s přidaným zdrojovým repozitářem Lucid)


Problémy:


Q. Nefunguje zvuk, mám běžnou zvukovou kartu běžící na Ubuntu Hardy.

A. Povolte Advanced Linux Sound Architecture v Device Drivers -> Sound + odpovídající modul. Nepokoušejte se použít PulseAudio s tímto kernelem, s vanilla kernelem nefunguje.

Q. Zvuk(Azalia) mi nefunguje.

A. Povolte ALSA Intel HD modul v kernel configu.

Q. Když chci bootovat, skončí to s hláškou

Kód: [Vybrat]
Begin: Waiting for root file system...
A. Nejspíš jste Ubuntu instalovali na SATA disk. Povolte si SATA v konfiguraci.
« Poslední změna: 01 Září 2013, 14:59:24 od František Zatloukal »

GlidingFLY

  • Stálý člen
  • **
  • Příspěvků: 1202
Re: Kernel - kompilace, verze a problémy
« Odpověď #1 kdy: 11 Července 2008, 12:09:31 »
No to je bezvadný počin. Já se momentálně zabývám kompilací kernelu pomocí git
https://wiki.ubuntu.com/KernelGitGuide
» Linux Mint on mini-ITX boards «

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #2 kdy: 11 Července 2008, 12:16:22 »
Z GIT jsem si kompiloval svůj kernel 2.6.26-rc8-lowlatency :)

GlidingFLY

  • Stálý člen
  • **
  • Příspěvků: 1202
Re: Kernel - kompilace, verze a problémy
« Odpověď #3 kdy: 11 Července 2008, 16:21:52 »
No mně i když se povede udělat kernel tak sice funguje, ale bez zvuku. Zkrátka i když provedu kopii .config z původního aktuálního kernelu a dále oldconfig. Proč se mi ten zvuk nezačlení do nového kernelu? Je přece aktivní v tom aktuálním. Kde dělám chybu?
» Linux Mint on mini-ITX boards «

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #4 kdy: 11 Července 2008, 19:49:38 »
asi tím, že v Ubuntu Hardy je ALSA začleněna do linux-ubuntu-modules, zato v Intrepid je ALSA přímo v kernelu -> je to nutné povolit tuším v Device Drivers -> Sound -> Advanced Linux Sound Architecture a tam povolit alsu a správný modul.

GlidingFLY

  • Stálý člen
  • **
  • Příspěvků: 1202
Re: Kernel - kompilace, verze a problémy
« Odpověď #5 kdy: 13 Července 2008, 16:19:28 »
No, získal jsem už za dobu experimentů jisté zkušenosti. Zjistil jsem totiž, že vzhledem k relativně novému obsahu HW svého počítadla se již nemá cenu vůbec zajímat o jádro pro Hardy Herona. Jsou tam již pouze starší drivery a tím pádem hůře fungující na mém HW viz dole (Core2). Speciálně se to týká gigabitového ethernetu Intel a zvukové části chipsetu. Se zvukem jsem si poradil, nevšiml jsem si hned, že pokud nainstaluji repozitářové jádro "-generic" tak když při tvorbě vlastního jádra použiju jeho .config tak zkrátka ten zvuk tam vůbec není zvolen - což nechápu proč, jsou to ovladače jako každé jiné v tom jádře, ale ty nastaveny jsou. Nevadí, stačí zaškrtnout co mám na desce a buď rovnou do jádra anebo jako modul Intel HDA funguje stejně. Pouze s jedinou výjimkou - v mnou vytvořeném jádru je hlasitější  :o což sice nevadí, ale je to zvláštní. Jinak vše mi funguje jak má i když mám v jádře vyhozené části, které nemám a provedl jsem jisté změny - Core2, LowLatency. Síťovka mi funguje ne úplně korektně - i když jak se vezme, rychlost přenosu naprosto odpovídá jenom na analyzátoru je vidět, že jede jako pila, nikoliv plynule. Ovšem je to proto, že v jádře musím mít ovladač e1000, kdežto měl bych mít e1000e (ale ten nefunguje vůbec v HH jádru).
A tak jsem začal pracovat s Intrepidem (2.6.26) Ale to už jiná káva. Zvuk funguje optimálně ve stejné hlasitosti jako v repozitářovém 2.6.24-19.34-generic. Síťovka jede přesně plynule s ovladačem e1000e. Měl jsem trošku problém s framebuffrem než jsem přišel na to co pozapínat a co vypnout. Ovšem co jsem neprorazil je FireWire. Ani za boha to nemůžu rozchodit a přitom je nastaven stejně jako v HH. Zde asi trošku změnili ovladače. Mám standartní OHCI 1394 Texas Instruments, zcela osvědčen a vždy fungující. Bohužel pro mne je FW 1394 nutnost nejenom proto, že je o poznání lepší než celé podělané USB, ale také proto, že pracuji s počítadly Apple.
Jestli má někdo nápad jak to OHCI 1394 v Intrepidu rozchodit budu moc rád. Jinak páč mám na desce Core2 tak používám následující příkaz pro zapnutí spolupráce obou jader při kompilaci:

CONCURRENCY_LEVEL=2 make-kpkg --initrd --stem linux --revision=intelfly.1.0 kernel_image kernel_headers

výrazně to zrychluje kompilaci defacto o polovinu skutečně.
» Linux Mint on mini-ITX boards «

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #6 kdy: 14 Července 2008, 09:28:36 »
Včera v noci vyšel finální kernel 2.6.26. Updatoval jsem proto návod, aby byl aktuální.

GlidingFLY

  • Stálý člen
  • **
  • Příspěvků: 1202
Re: Kernel - kompilace, verze a problémy
« Odpověď #7 kdy: 20 Července 2008, 20:51:14 »
Stále se mi nedaří vyrobit jádro, ve kterém funguje FireWire. Ani když jej vyrobím ze současného aktuálního zdroje 2.6.24. Použiju config 2.6.24-19-generic. Jinak vše mi funguje jak má. Dokonce na MacBooku jsem aktivoval kameru pokud použiju zdroj git intrepit. Podařilo se vůbec někomu vyrobit jádro ve kterém ten FireWire funguje správně?
Za každý nápad děkuji.
» Linux Mint on mini-ITX boards «

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #8 kdy: 21 Července 2008, 10:13:34 »
Stále se mi nedaří vyrobit jádro, ve kterém funguje FireWire. Ani když jej vyrobím ze současného aktuálního zdroje 2.6.24. Použiju config 2.6.24-19-generic. Jinak vše mi funguje jak má. Dokonce na MacBooku jsem aktivoval kameru pokud použiju zdroj git intrepit. Podařilo se vůbec někomu vyrobit jádro ve kterém ten FireWire funguje správně?
Za každý nápad děkuji.

neber source z GITu ani z ubuntu 2.6.24. Zkus stáhnout tar.gz pro Intrepid na http://archive.ubuntu.com/ubuntu/main/l/linux

, nebo taky můžeš zkusit vanillu.

GlidingFLY

  • Stálý člen
  • **
  • Příspěvků: 1202
Re: Kernel - kompilace, verze a problémy
« Odpověď #9 kdy: 22 Července 2008, 22:20:09 »
Zkusil jsem stáhnout z repozitářů Intrepidu linux-source-2.6.26 a vysledek je pořád stejný. Všechno chodí výtečně, síťovka konečně pracuje s modulem driveru e1000e naprosto lineárně, zvuk normální, framebuffer korektní. Ovšem to FireWire nepracuje správně. Disk namontuje korektně, ale jakmile začnu kopírovat tak se sekne.
No vypadá to, že ještě něco chybí označit anebo odznačit v sestavě jádra. To je právě to blbé, že když použiju ten config z původního jádra, ve kterém FW funguje tak po oldconfigu stejně není vše označeno jak má být. Vypadá to jako kdyby ten config byl jiný než z čeho bylo jádro postaveno. Chlapci vývojáři mlží. Podle mne je to úmysl, páč pokud si postavím jádra sám a používám ty configy křížem tak označení nemizí. Docela mně hoši serou. Co je vede k tomu, že do balíčku jádra přibalí jiný config?
Z toho jasně plyne, že absolutně vůbec nestačí když si jeden bude chtít přizpůsobit jádro svému HW a použije přiložený config a pouze provede změny v procesoru a případně si navolí low-latency a pak spustí kompilaci, tak zcela určitě nebude fungovat zvuk a nepojede FireWire. O ostatním nevím páč jsem se k dalším testům kvůli této fatální chybě nedostal. Nemá to zkrátka cenu.
Ví někdo co je důležité v jádře ještě zapnout? Páč podle všeho to vypadá, že mi ještě něco vypnutého chybí. Filesystémy a drivery SCSI tam mám.
» Linux Mint on mini-ITX boards «

nettezzaumana

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #10 kdy: 23 Července 2008, 00:39:16 »
...
<< pokud nejni ochota cist logy (a zabyvat se tim, njn. kompilaci kernelu a placem, ze to nejde bych nezaplnoval ubunti forum), tak doporucuju pouzit jadro z distribuce ;D

jinak :: cti zde..
« Poslední změna: 23 Července 2008, 00:43:22 od nettezzaumana »

Roman Vacho

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 6018
Re: Kernel - kompilace, verze a problémy
« Odpověď #11 kdy: 23 Července 2008, 04:02:46 »
GlidingFLY:
Mám podobné zkušenosti. Bohužel vlastní jádro už jsem odstranil a tak nemám možnost vyzkoušet firewire :-/
Vyřešená vlákna je vhodné uzavřít "Topic Solved" dole pod vláknem. Děkujeme.

Luban

  • Závislák
  • ***
  • Příspěvků: 1638
Re: Kernel - kompilace, verze a problémy
« Odpověď #12 kdy: 23 Července 2008, 08:19:51 »
ntz: Jak mohu použít jádro z jiné distribuce (třeba opensuse)? Je na to někde "kuchařka"?
Zvládne to i takový prostý uživatel, který jsem já, nebo se raději do toho nepouštět?

nettezzaumana

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #13 kdy: 23 Července 2008, 09:40:48 »
pouzit jadro z jine distribuce je naprosto snadne (sam jsem provozoval suse na ubuntim jadre a nopak) .. jedine co potrebujes je mit fyzicky umistene na spravnych mistech nasledujici soubory a adresare (a prislusne polozky v bootloaderu samozrejme) ::

/boot/vmlinuz*, /boot/initrd*, /lib/modules/* .. nic vic netreba

dalsi moznost je, ze si rucne zkompilujes prislusne moduly z jinych jader, jejichz verze Ti funguji ::
ze zdrojaku kernelu zkopirujes slozku s danym modulem ::

cp -rv /usr/src/linux/drivers/cpufreq /usr/src/cpufreq_custom
cd /usr/src/cpufreq_custom
make
mkdir /lib/modules/`uname -r`/my_custom_drivers
cp *.ko  /lib/modules/`uname -r`/my_custom_drivers
depmod -a
modprobe cpufreq
## pridat do blacklistu jiny modul na ovladani cpu, pripadne ho pred depmodem odstranit z /lib/modules
## obcas nutno vyresit nejake zavislosti modulu, takze je potreba zkopirovat z jineho jadra zavislosti pozadovaneho moduly a ty zkompilovat taky

Milhouse

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5726
Re: Kernel - kompilace, verze a problémy
« Odpověď #14 kdy: 23 Července 2008, 09:42:56 »
NTZ, má to nějaké výhody, nebo jen kvůli podpoře HW, která např. v mém Linuxu není?

N. Á. V. O. D. Y.
 "...naše práce není vidět, ale je důležitá!"

nettezzaumana

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #15 kdy: 23 Července 2008, 09:48:37 »
NTZ, má to nějaké výhody, nebo jen kvůli podpoře HW, která např. v mém Linuxu není?
<< jiste .. novejsi verze neznamena, ze to na konkretnim hw chodi lip (a obcas taky *vubec).. me napriklad moje wifina chodi nejlepe na konkretni konkretni verzi madwifi driveru rok a pul stare (na co pouzivat ndiswrapper), stejne jako na novem powernow_k8 mi vubec nefungujou governory pro cpu, takze jsem to neresil nijak vic, nez ze si pamatuju, ze v 2.6.20 je powernow_k8, na kterem to bezi bez problemu a vzdy s distro-updatem kernelu rucne dokompiluju minimalne tyhle dva moduly a nahradim jima vyssi verze tech samych v kernelu ..

btw .. stejne jako acpi jsem v 10.3 pouzival z ubuntiho kernelu (ted uz diky bohu ne, pac to opravili ..)

Milhouse

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5726
Re: Kernel - kompilace, verze a problémy
« Odpověď #16 kdy: 23 Července 2008, 10:17:20 »
No tak to pak ale stačí zkompilovat starší modul pro nové jádro. Teda pokud jsou závislosti OK...

PS: Jak se ti daří v TC:Elite? :)

N. Á. V. O. D. Y.
 "...naše práce není vidět, ale je důležitá!"

Luban

  • Závislák
  • ***
  • Příspěvků: 1638
Re: Kernel - kompilace, verze a problémy
« Odpověď #17 kdy: 23 Července 2008, 10:52:41 »
Díky ntz.

GlidingFLY

  • Stálý člen
  • **
  • Příspěvků: 1202
Re: Kernel - kompilace, verze a problémy
« Odpověď #18 kdy: 23 Července 2008, 16:06:10 »
ntz: já nepláču ani nechci tímto plnit forum. Pouze píšu na co jsem přišel. Zkrátka nelze se řídit se pravidlem, že vezmu source nakopíruji do něj config z aktuálně běžícího jádra a provést další procedury (make oldconfig) nevede ke zdárnému konci právě proto, že ten config, který je v /boot není ten ze kterého to jádro, aktuálně běžící, vývojář vytvořil. Toto mi vadí. Ověřil jsem si to testem jednoduše tak, že jsem nakonec vzal source posledního aktuálního jádra Hardyho strčil do něj jeho config a provedl kompilaci s výsledkem, o kterém jsem již psal výše. Jádro bylo po bootu potichu a FW nechodil jak má. Ty moduly tam zkrátka nebyly zvoleny u zvuku a u FW se musí ještě přidat kromě nastavení modulů pro FW. A podle mně bych měl vyrobit identické jádro.

Jinak děkuji za link, podívám se na to. Přeci jenom nemám takové zkušenosti jako ty  ;)
» Linux Mint on mini-ITX boards «

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #19 kdy: 23 Července 2008, 16:35:03 »
zas nakonfigurovat kernel není těžký, tak to zas není takový problém ;)

Milhouse

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5726
Re: Kernel - kompilace, verze a problémy
« Odpověď #20 kdy: 23 Července 2008, 19:32:00 »
Všichni tam nejsou mladí a
PS: Jak se ti daří v TC:Elite? :)
<< stridave zatazeno s prehankama .. spis me hosi drti .. jsou mladi a maji neco nastrileno

Všichni nejsou mladí, viz já. Ale až se tam za pár okamžiků objevím, tak tě budu teda šetřit. :D

N. Á. V. O. D. Y.
 "...naše práce není vidět, ale je důležitá!"

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #21 kdy: 26 Července 2008, 12:05:34 »
ATI drivery řady 8.7 fungují konečně bez problémů s kernelem 2.6.26.(Ale ne na Intrepid Ibex kvůli verzi X Serveru, pouze na Hardy Heron)

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #22 kdy: 29 Července 2008, 09:16:33 »
Mám hotový jeden balíček s kernelem 2.6.26 stable. Je to linux-image pro Ubuntu Hardy 64-bit. Potřebuju někoho s Hardym 64bit, jestli by mi neotestnul funkčnost zvuku. Ve virtualním stroji mi totiž zvuk nejde.. :( Potřebuju testnout hlavně ALSA a pokud bude možnost, tak PulseAudio.

Díky.

Download link zde
« Poslední změna: 29 Července 2008, 10:11:35 od qUAKER »

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #23 kdy: 30 Července 2008, 18:32:37 »
Našel se tester. PulseAudio funguje a ALSA ne. Vypadá to, že to budu muset ještě překonfigurovat.. :(

qUAKER

  • Host
Re: Kernel - kompilace, verze a problémy
« Odpověď #24 kdy: 30 Července 2008, 19:29:47 »
takhle nějak? :)

 

Provoz zaštiťuje spolek OpenAlt.