Autor Téma: ▶ Kompilace jádra - podrobný návod (pro 2.6.x, 3.x, 4.x, 5.x) [Aktualizováno]  (Přečteno 46706 krát)

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Děvčátka a chlapci,

níže naleznete dostatečně podrobný návod, jak si zkompilovat vlastní jádro. Konfigurací a kompilací jádra lze do jisté míry měnit jeho vlastnosti, povolit funkce, které nejsou v distribučním jádru povoleny, upravit jejich chování a zakázat ty, které nepotřebujete, včetně tisíců ovladačů, pro vás jistě zbytečných. Tak lze jádro výrazně zmenšit, aby mělo co nejmenší dopad na systémovou paměť, může mít například jen čtvrtinovou velikost oproti jádru distribučnímu, přičemž o nic nepřijdete, ba naopak, váš systém může být o něco svižnější, výkonnější. Navíc můžete mít nejnovější jádro, které se může dostat ve standardní konfiguraci do repozitáře systému až za dlouhé týdny, takže třeba nemusíte čekat, až bude váš nový hardware podporován.
Nutno dodat, že se pravděpodobně málokomu může podařit korektně zkonfigurovat jádro napoprvé, zvláště, když je v něm provedena spousta zásahů, proto buďte velice trpěliví. Raději provádějte spoustu kompilací s malými a opatrnými modifikacemi než jednu velkou, stačí jen malá chybička díky nepozornosti, jádro či systém pak nemusí fungovat správně.
Nainstalovaná jádra hned neodinstalovávejte, mějte v zásobě alespoň jedno funkční ze stejné verze, z nějž pak můžete nabootovat a použít jeho konfiguraci. To se hodí tehdy, když naposledy zkompilované jádro odmítá poslušnost, kdy vám nefunguje klávesnice, nebo když se vám rozblikají LEDky na klávesnici, znamenající tzv. kernel panic, nebo tehdy, když budete muset disk zapojit na jiném hardwaru, který osekané jádro podporovat téměř jistě nebude.
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) nebo v konzoli. Jakmile ho spustíte, mějte ho až do finální instalace stále otevřený.
Není to žádná hrůza, kdyby to bylo příliš složité, tak o tom nepíšu. Návod je platný jak pro starší jádra 2.6 a 3.x, tak i pro jádra nová, řady 4.x a 5.x, pouze se díky evoluci některé položky přesunuly jinam.




Příprava
Základní ingrediencí je nepochybně zdrojový kód jádra Linux. Jedná se (v případě verze 5.0.3) o 67353 souborů a složek (starší jádra mají zpravidla méně), především textových, úhledně zabalených v archívu, majících po rozbalení dohromady zhruba 800MiB a po zaneřádění kompilací kolem 4GiB, takže ujistěte se, že máte na konkrétním oddíle minimálně 4-5GiB volného místa.
Ten si stáhneme ze serveru kernel.org, přičemž volíme raději stabilní jádro (v současnosti 5.0.3), s nestabilním občas mohou být problémy, nicméně to vůbec neznamená, že vždy a všude, takže se toho nebojte. Uložíme ho například na plochu, do domovské složky, nebo rovnou do /usr/src.

Protože budeme pracovat s právy roota (česky kořena), v terminálu přijmeme jeho identitu:

su -

Dále budeme potřebovat mít nainstalované dodatečné balíky, nainstalujeme si je pomocí:

apt install build-essential kernel-package libncurses6 libncurses-dev cpp gcc libssl-dev libelf-dev bison flex

místo apt můžete použít aptitude nebo apt-get (syntaxe je totožná)

Jestli chcete ve vlastnostech hotových balíků vidět svoje jméno, 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




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 5.0.3, tedy že si nechá říkat linux-5.0.3.tar.xz.

Nejprve, pokud jste to dosud neudělali, si otevřeme mnohými nenáviděný terminál (gnome-terminal, xterm,...) a získáme práva roota:

su -

Poté přejdeme do složky, v níž chceme pracovat, například /usr/src (tam končí zdrojáky jádra stažené přes správce balíků), a rozbalíme do ní archív 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 xf ~/Desktop/linux-5.0.3.tar.xz


Jestliže jste již tyto zdrojáky jádra kompilovali, je dobré celou složku zdrojáků jádra pročistit od binárního bordelu:

make-kpkg clean

Nyní potřebujeme konfiguraci aktuálně běžícího jádra. Nejdříve přejdeme do složky s rozbaleným jádrem:

cd linux-5.0.3

Použijeme konfiguraci jádra, na němž momentálně běžíme. Je to rozsáhlý textový soubor, bude uložen ve složce se zdrojáky pod názvem .config:

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

Pochopitelně místo config-`uname -r` můžete použít název konfiguráku z jiného jádra, například config-4.15.0-1-amd64

Teď se pustíme do nejsložitější fáze, do konfigurace, kterou je možné přeskočit tehdy, kdy na konfiguraci jádra nic měnit nechcete, pouze toužíte po novější verzi jádra.
Chcete-li konfigurovat, maximalizujte si raději okno terminálu, poté můžete začít:

make menuconfig

Pokud vám nic nechybí, v okně terminálu uvidíte takové krásné menu na modrém pozadí, jinak pokud by vám něco chybělo, měla by se zobrazit chybová hláška, podle níž byste se měli řídit, jestliže 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
---        Prázdné submenu


TIP!
Položky  označené jako EXPERIMENTAL, pokud o některou z nich nestojíte, 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 tak, jak to je. Téměř u každé položky je k dispozici nápověda (H), jinak UTFG

General setup (obecné nastavení): Tady si můžete nastavit třeba podporu pro swap, kompresní režim kernelu (doporučuji XZ), podpora pro initramfs/initrd, optimalizace kernelu pro velikost, typ alokátoru (SLAB, SLUB, SLOB, 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, nebo raději nehrabat

Enable the block layer: povolit blokovou vrstvu + volby související především s disky (třeba volba I/O plánovače, typů oddílů aj.). 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 (kvůli příliš častým přerušením); dá se zvolit jiná frekvence, ale je potřeba upravit soubor kernel/Kconfig.hz), podpora pro <4GiB RAM (nebo až 64GiB RAM pro 32-bity s PAE), emulace matematického koprocesoru (pro archivní procesory nemající FPU) atd. Zde se dá jednak trochu zmenšit jádro 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á jádro 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, ale to nejhorší už máme opravdu 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, možnosti debuggingu.

Security options: Bezpečnostní udělátka - většina uživatelů nepotřebuje upravovat.

Cryptographic API: Různé šifrovací algoritmy; co se podepisují jádra, pro úspěšnou kompilaci je dobré úplně na konci seznamu, v Certificates for signature checking → Additional X.509 keys for default system keyring buď dosadit vlastní klíč (viz UTFG), nebo tuto položku vyprázdnit.

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

Library routines: Nechat radši na pokoji, pokud nevíte, co činíte.

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>

TIP!
Pokud v tom umíte plavat a znáte svůj stroj dostatečně dobře, je tady ještě jedna fičura - připojte všechna vámi používaná zařízení a před konfigurací spusťte:
make localmodconfig
Tím na základě aktuálně použitých modulů deaktivujete většinu (nikoliv všechny) nepotřebných (ale bohužel někdy i potřebných) položek. Není to příliš dokonalé, takže si celou konfiguraci zkontrolujte.




3. Teď budete odpočívat, zatímco váš stroj zažije horoucí 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.

Rovnou se pustíme do kompilace samotné (nedoporučuje se mít přetaktovaný procesor, během kompilace se mnohem více zahřívá a hrozí zatuhnutí systému či nevratné poškození procesoru):

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


... kde -X je číslo "pokusu", např. -1 (5.0.3-1) a -jY je počet procesů, které se mají při kompilaci vykonávat naráz- toto je vhodné spíše pro víceprocesorové stroje a/nebo stroje s funkčním hyperthreadingem (SMT); doporučuje se použít ncpu+1.
Kdo má jednojádro, může tuto volbu vynechat.


4. Hotovo? Vytvořily se balíky? Zbývá je pouze nainstalovat, pro jistotu oba (hlavičky jsou potřeba např. pro 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í!



Aktualizováno 22. 3. 2019
« Poslední změna: 23. 03. 2019, 19:38:31 od Roman Horník »
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Ota Trkola

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

Návod na Netinst instalaci

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #2 kdy: 21. 08. 2010, 10:27:19 »
Fajn, pak podej hlášení, abych to doladil ;)
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Ota Trkola

  • Administrátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.261
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #3 kdy: 22. 08. 2010, 17: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 Gnome 64bit

Návod na Netinst instalaci

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #4 kdy: 22. 08. 2010, 18: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, 18:22:10 od Roman Horník »
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Ota Trkola

  • Administrátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.261
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #5 kdy: 22. 08. 2010, 18: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 Gnome 64bit

Návod na Netinst instalaci

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #6 kdy: 22. 08. 2010, 18: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, 18:28:35 od Roman Horník »
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Ota Trkola

  • Administrátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.261
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: * Kompilace kernelu- podrobnější návod
« Odpověď #7 kdy: 22. 08. 2010, 18: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 Gnome 64bit

Návod na Netinst instalaci

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #8 kdy: 22. 08. 2010, 18:37:11 »
Co trochu pročistit disk BleachBitem? Jak velkej disk vlastně máš?
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #9 kdy: 22. 08. 2010, 19:08:13 »
Nevím, zkus to.
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Ota Trkola

  • Administrátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.261
    • Zobrazit profil
  • Jabber: otas.pe@jabbim.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #10 kdy: 22. 08. 2010, 19: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 Gnome 64bit

Návod na Netinst instalaci

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #11 kdy: 22. 08. 2010, 19: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
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Ota Trkola

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

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

Návod na Netinst instalaci

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.326
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: ▶ Kompilace kernelu- podrobnější návod ◀
« Odpověď #13 kdy: 22. 08. 2010, 19: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?
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel Pentium G2020
* GPU: NVIDIA GTX650 1GD5
* MB: LenINovo IH61M
* RAM: 8GiB Deutsche Demokratische Republik 3

Offline Ota Trkola

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

Návod na Netinst instalaci