Autor Téma: ▶ Kompilace kernelu- podrobný návod (pro 2.6.x & 3.x)  (Přečteno 7402 krát)

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Oznámkujte: nebo

Děvčátka, chlapci a hermafroditi,

byl jsem Otíkem požádán, abych napsal podrobnější návod, kterak zkompilovat jádro Linux.
Jeden návod, jehož autorem je kolega Spox, na tomto fóru již nějaký čas existuje, jenže pro spoustu uživatelů zdá se prý býti příliš stručným, proto se ho budu snažit rozšířit tak, aby jej pochopili i smrtelníci. Snad se mi to povede.

Rád bych dodal, že kompilace kernelu je procedura celkem zdlouhavá, na slabších strojích může trvat klidně i několik hodin, jeho konfigurace (pouze v angličtině; nepovinná) může být pro někoho poměrně náročná, ne-li přímo smrtelná, i ta se může prodloužit na pár hodinek.
Budete-li ovšem dostatečně trpěliví a pečliví, může se vám to sakra vyplatit.

Jenom menší poznámka: Po většinu času budete pracovat v Terminálu (to je ta ošklivá věc s písmenky a blikající kostičkou). Není to žádná hrůza. Jakmile ho spustíte, mějte ho až do konce tvorby kernelu stále otevřený.

Návod je platný jak pro starší jádra 2.6, tak i pro nová jádra 3.x




Příprava
Základní ingrediencí je nepochybně zdrojový kód jádra Linux. Jedná se o poměrně mohutný archiv obsahující desetitisíce souborů, zpravidla textových, mající po rozbalení dohromady téměř 0.5 GiB.
Ten si stáhneme ze serveru kernel.org, přičemž volíme raději stabilní jádro (v současnosti 3.2.2), s nestabilním občas mohou být nepříjemné problémy. Uložíme ho např. na plochu, do domovské složky, nebo rovnou do /usr/src.
Můžete také experimentovat s "vytuněným" jádrem Zen, více informací naleznete na Rootu (návod platí i pro toto jádro).
Dále budeme potřebovat mít nainstalované balíky build-essential, kernel-package, libncurses5, libncurses5-dev, gcc, cpp a fakeroot. Snad jsem na nic nezapomněl (když tak se ozvěte). Nainstalujeme je pomocí:

sudo apt-get install build-essential kernel-package libncurses5 libncurses5-dev cpp gcc fakeroot

Přijde-li na návštěvu vaše dívčina, je vhodné pochlubit se tím, že jste mocným správcem jádra. To se dá zařídit celkem snadno, když v /etc/kernel-pkg.conf vyplníte vaše jméno, příjmení, kontakt, prioritu a číslo revize (cokoliv; v mém případě $(version)-Sid1; doporučuji $(version)-cokoliv). Pokud tento soubor neexistuje, vytvořte ho a vložte do něj něco jako:

maintainer := Jméno Příjmení
email := tvoje.mailovka@server.tld
priority := optional
debian = $(version)-Sid1


To bude zobrazeno ve vlastnostech balíku:





Jdeme na to!
1. Rozbalíme si stažený archiv s jádrem. Předpokládejme, že je uložené na ploše (~/Desktop) a že je pro verzi 3.2.2, tedy že si nechá říkat linux-3.2.2.tar.bz2.
Nejprve si otevřeme mnohými nenáviděný Terminál (gnome-terminal, xterm,...) a získáme práva Roota:

sudo -s

Poté přejdeme do složky /usr/src, v níž budeme pracovat, a rozbalíme do ní archiv se zdrojáky jádra. Tato operace bude pár minut trvat, musí se extrahovat několik desítek tisíc souborů:

cd /usr/src
tar jxf ~/Desktop/linux-3.2.2.tar.bz2



Teď se pustíme do nejsložitější fáze, do konfigurace. Nejdříve přejdeme do složky s rozbaleným kernelem:

cd linux-3.2.2

Použijeme konfiguraci jádra, na němž momentálně běžíme. Je to rozsáhlý textový soubor, bude pojmenován .config:

cp /boot/config-`uname -r` .config

Nyní si maximalizujte okno Terminálu, přichází vaše noční můra, konfigurace ;D:

make menuconfig

Varoval jsem vás. Pokud vám nic nechybí, v okně Terminálu uvidíte něco jako tohle:



... jinak, pokud by vám něco chybělo, měla by se zobrazit chybová hláška, podle níž by jste se měli řídit, pokud jí nerozumíte, máme tady fórum :).

TIP!
Při štelování vám pomohou tyto příkazy, lsmod (seznam běžících modulů), dále potom lspci, lsusb, lshw... (seznam HW)


Ovládání pomocí kláves
↑/↓        Nahoru/dolu
Enter      Zvolit
Y          Povolit
N          Zakázat
M          Modul
Esc + Esc  Konec
?, H       Nápověda
/          Hledat

Stavy položek
[*]        Napevno vestavěno
[M]        Odnímatelný modul
[ ]        Zakázáno

-?-        Nelze změnit
[?]        Pouze povoleno/zakázáno, nelze použít jako modul
<?>        Povoleno, zakázáno i modul NEBO modul, zakázáno
{?}        Pouze povoleno a modul
(ABC)      Lze zadat hodnotu

--->       Submenu


TIP!
Položky  označené jako EXPERIMENTAL můžete klidně zakázat


Seznámím vás s důležitými položkami:
Pozn.: Pokud si s něčím nebudete jisti, nesahejte na to, nechte to jak to je. Téměř u každé položky je k dispozici nápověda, jinak UTFG

General setup (obecné nastavení): Tady si můžete nastavit třeba podporu pro swap, kompresní režim kernelu (doporučuji LZMA), podpora pro initramfs/initrd, optimalizace kernelu pro velikost, typ alokátoru (SLAB, SLUB, SLQB...) aj.

Enable loadable module support: Zda povolit přidávání/odebírání modulů jádra za chodu + pár dalších voleb s touto věcí souvisejících- doporučuji povolit

Enable the block layer: povolit blokovou vrstvu + volby s tím související. Raději nesahat.

Processor type and features: Typ procesoru, jeho vlastnosti. Tam se dá celkem slušně vyřádit, je možné zvolit si vhodnou rodinu procesorů, do níž váš křemíkový mozek spadá, podpora SMP (pro víceprocesorové systémy) i SMT (pro procesory s podporou hyperthreadingu), typ preempce, frekvence přerušení (100, 250, 300 a 1000Hz; čím vyšší frekvence, tím plynulejší chod a rychlejší reakce, ALE nižší vámi využitelný výpočetní výkon; pozn.: jádro Zen povoluje frekvence v rozmezí 100Hz až 10kHz!), podpora pro >3GiB RAM (až 64GiB RAM pro 32-bity), emulace matematického koprocesoru (pro archivní procesory nemající FPU) atd. Zde se dá jednak zmenšit kernel a jeho velikost v RAM, ale hlavně se takto dá optimalizovat pro výkon.

Power management and ACPI options: Nastavení správy napájení a ACPI, povolení/zakázání uspání a hibernace, nastavení změny frekvence CPU atd.

Bus options (PCI, etc.): Nastavení sběrnic PCI(e), ISA, PCMCIA...

Executable file formats / Emulations: Podpora pro ELF aj., nuda, nesahat

Networking support: Tady se dají poštelovat různá síťová zařízení. Už v prvním submenu je spousta zbytečností (CAN, IrDA, CAIF aj.), dají se beztrestně vypnout.

Device drivers: Jó, tak u tohohle se zapotíte, to si pište! Pokud někdo z vás stále tvrdí, že Linux podporuje málo železa, nechť si poctivě proleze tenhle chlívek a spočítá si ovladače. Je to přímo bludiště! A právě v tomhle bludišti se dá kernel opravdu dobře zmenšit. Stačí znát důkladně střeva svého stroje, ovladače na ně nechat a zbytek, stovky, ne-li tisíce nepotřebných ovladačů, jednoduše zahodit, zrušit, zlikvidovat. Ale bacha, u čeho si nejste jisti (třeba RTC hodiny), to raději ignorujte. Je dobré si k jednotlivým položkám číst nápovědu, jak je tam něco jako "if unsure, say N" a ta položka vám není nijak povědomá, můžete ji zakázat. Jestli tam ale bude "...just say Y", raději poslechněte.

Firmware drivers: Koukám, že už jste z bludiště venku, na ksichtě vrásky a šedej vous, oči barvy krve (cháchá, já vás varoval!), ale to nejhorší už máme za sebou. Nekecám. Třeba v tomhle chlívku nalezneme akorát pár speciálních ovladačů, zejména pro noteknihy.

File systems: Podpora různých souborových systémů. Doporučuju povypínat všelijaké ty rozšířené vlastnosti, pokud je nevyužíváte.

Kernel hacking: Koutek pr h4x0ry, různá dolaďování jádra

Security options: Většina uživatelů tato bezpečnostní udělátka pravděpodobně nepotřebuje

Cryptographic API: Různé šifrovací algoritmy

Virtualization: Virtualizace; kdo nevirtualizuje (KVM a spol.), toto nepotřebuje. Zahodit, spálit.

Library routines: Nechat radši na pokoji

Load an Alternate Configuration File: Načíst alternativní konfigurák (asi jen pokud se jmenuje jinak než .conf)

Save an Alternate Configuration File: Uložit nastavení

Až budete mít hotovo, uložte nastavení a zvolte dole položku <Exit>

Heh. Zapomněl jsem jaksi trošku dodat, že pokud chcete mít stejnou konfiguraci jako u "továrního" kernelu, na kterém zrovna běžíte, není potřeba vůbec nic konfigurovat, stačí z něj akorát použít konfigurák ;D



3. Teď budete odpočívat, zatímco váš stroj zažije peklo. Správně, jde se kompilovat, půjde-li vše podle plánu, v /usr/src očekávejte dva deb balíky- linux-headers-blablabla.deb a linux-image-blablabla.deb. Ale nepředbíhejme.
Pokud jste již ve složce /usr/src/linux-* kompilovali, je dobré ji vyčistit, není to ale nezbytně nutné:

fakeroot make-kpkg clean

... a rovnou se pustíme do kompilace samotné:

fakeroot make-kpkg --append-to-version -X --us --uc --initrd kernel_image kernel_headers

... kde -X je číslo "pokusu", např. -1 (3.2.2-1)



4. Hotovo? Vytvořily se balíky? Zbývá je pouze nainstalovat, pro jistotu oba (hlavičky jsou potřeba např. pro *.run instalátor ovladače nVidia). Někdo preferuje klikátko Gdebi, ale když už máme otevřený Terminál...

dpkg -i /usr/src/nazev_baliku.deb

Někdy se stane, že se neaktualizuje GRUB, to se dá napravit snadno:

update-grub


No a máme hotovo, teď jen stačí pomodlit se ke sv. Tuxovi a sv. Rootovi, modlitbu ukončit slovem "Enter", a rebootovat. Poté, pokud to bude fungovat, ladit dle systémových logů k dokonalosti, jestli se to nepovede, nezoufejte, můj první pokusný králík mi v počátku bootování rozblikal klávesnici v rytmu Kernel panic.

Hodně štěstí!


Budete-li mít nějaké komplikace, něčemu nebudete rozumět, svěřte se s nimi, koušu jen mezi půlnoci a dvanáctou večer.
Návod může obsahovat chyby a nepřesnosti, proto přitom nepřestaňte používat vlastní mozek a jeho interní logiku.
Návrhy a připomínky jsou vítány, kritika ne :P.
« Poslední změna: 28. 01. 2012, 20:57:19 od Roman Horník »
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Offline Ota Trkola

  • Administrator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 738
  • Karma: 19
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #1 kdy: 21. 08. 2010, 05:42:27 »
Romane, díky moc! Až budu mít chvilku, hned vyzkouším.. :)
Debian Sid 32bit Gnome
Debian Wheezy 32bit Gnome
Debian Squeeze 32bit Gnome

Návod na Businesscard install

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #2 kdy: 21. 08. 2010, 09:27:19 »
Fajn, pak podej hlášení, abych to doladil ;)
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Offline Ota Trkola

  • Administrator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 738
  • Karma: 19
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #3 kdy: 22. 08. 2010, 16:08:26 »
Tak jsem zkoušel 2x kompilovat 2.6.35.3 a ani jednou jsem neuspěl. Nenaběhla mi grafika. Nicméně abych mohl zkusit další kompilaci, musím nějak vyčistit systém, páč mi za ty dvě kompilace narostl o 2,5GB a to jsem kernel odinstaloval a odstranil položky v /usr/src. Kam se teda ještě cosi ukládá při kompilaci a instalaci kernelu?
Debian Sid 32bit Gnome
Debian Wheezy 32bit Gnome
Debian Squeeze 32bit Gnome

Návod na Businesscard install

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #4 kdy: 22. 08. 2010, 17:17:42 »
Co máš za grafiku? Jakej ovladač k ní používáš a odkud? Nejde mi ovladač z balíku nvidia-glx, ale ovladač 256.44 mi funguje normálně.

2.5GiB? Kde jsi to pro Satana splašil ;D? Vždyť i zdrojáky kernelu mají sotva 400MiB. Jinak seznam souborů, který se při instalaci balíku rozbalej a posléze rozutečou po disku, jsou vidět ve vlastnostech balíku např. v Gdebi nebo v Synapticu.
« Poslední změna: 22. 08. 2010, 17:22:10 od Roman Horník »
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Offline Ota Trkola

  • Administrator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 738
  • Karma: 19
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #5 kdy: 22. 08. 2010, 17:22:24 »
Já mám Ati HD2600XT a používám otevřený ovladač radeon. Ale to zabrané místo je docela problém, páč mi jaksi došlo...:-\ Jinak těžko už to zjistím, když jsem balíky odstranil...
Debian Sid 32bit Gnome
Debian Wheezy 32bit Gnome
Debian Squeeze 32bit Gnome

Návod na Businesscard install

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #6 kdy: 22. 08. 2010, 17:27:12 »
Můžeš někam pastnout konfigurák svýho kernelu? (bacha, je docela velkej)

S tím místem Ti moc neporadím, ale jestli máš GNOME, koukni se na Baobab- ten Ti ukáže takovej koláč, v němž uvidíš, jak je která složka velká ;).
« Poslední změna: 22. 08. 2010, 17:28:35 od Roman Horník »
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Offline Ota Trkola

  • Administrator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 738
  • Karma: 19
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #7 kdy: 22. 08. 2010, 17:33:43 »
Konfigurák, kterej jsem použil je tady. Jiank to místo jsem samozřejmě zkoumal přes baobab, ale na nic jsem nepřišel. Ale budu s tím muset cosi učinit, nemám už skoro žádné prázdné místo.
Debian Sid 32bit Gnome
Debian Wheezy 32bit Gnome
Debian Squeeze 32bit Gnome

Návod na Businesscard install

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #8 kdy: 22. 08. 2010, 17:37:11 »
Co trochu pročistit disk BleachBitem? Jak velkej disk vlastně máš?
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #9 kdy: 22. 08. 2010, 18:08:13 »
Nevím, zkus to.
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Offline Ota Trkola

  • Administrator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 738
  • Karma: 19
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #10 kdy: 22. 08. 2010, 18:19:08 »
BleachBit byl dobrej tip. Uvolnil mi místa víc než bych čekal. / mi slezlo z 5.2GB na 2.6GB, doufám, že mi tam ještě něco  systémových souborů zbylo.. ;D Jinak hlavní problém v místě byl ve složce /root/.local/share/Trash/files, kde byly schovaný hromady pozůstatků po kompilaci.
Debian Sid 32bit Gnome
Debian Wheezy 32bit Gnome
Debian Squeeze 32bit Gnome

Návod na Businesscard install

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #11 kdy: 22. 08. 2010, 18:29:16 »
Takže jsi to měl nalámaný v koši Roota :)

Já špatný nápady nemám, nebyl jsem k tomu naprogramován  8) :P
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Offline Ota Trkola

  • Administrator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 738
  • Karma: 19
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #12 kdy: 22. 08. 2010, 18:35:34 »
Nevím, zkus to.

Toto jsi nějak upravoval? Našel jsi tam nějakej zásadní průser?
Debian Sid 32bit Gnome
Debian Wheezy 32bit Gnome
Debian Squeeze 32bit Gnome

Návod na Businesscard install

Online Roman Horník

  • Global Moderator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 424
  • Karma: 6
  • गुरू
    • Zobrazit profil
    • Pár mých foteček
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #13 kdy: 22. 08. 2010, 18:46:58 »
Upravoval, něco jsem tam snad našel, ale radši to zkus, ATInu nemám. Vysekal jsem z toho pár exotických ovladačů, který s největší pravděpodobností nepotřebuješ. Ten předchozí konfigurák jsi nějak u ovladačů modifikoval?
Verze Debianu, řazeno sestupně podle stability: Stable → Testing → Unstable → Ubuntu
Registered user #462370
I'm only wearing black until they make something darker

Offline Ota Trkola

  • Administrator
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 738
  • Karma: 19
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #14 kdy: 22. 08. 2010, 18:48:35 »
Ne je to tovární konfigurák ze současnýho jádra 2.6.32-5.
Debian Sid 32bit Gnome
Debian Wheezy 32bit Gnome
Debian Squeeze 32bit Gnome

Návod na Businesscard install