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ě stovek 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ší. 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 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 kvůli 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.
PřípravaZákladní ingrediencí je nepochybně zdrojový kód jádra Linux. Jedná se (v případě verze 5.12.12) o 76227 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 4-5GiB, takže
ujistěte se, že máte na konkrétním oddílu minimálně 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.12.12), 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 ho 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 libncurses6 libncurses-dev cpp gcc libssl-dev libelf-dev bison flexmísto
apt můžete použít
aptitude, nebo
apt-get (syntaxe je totožná).
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.12.12, tedy že si nechá říkat
linux-5.12.12.tar.xz.
Nejprve, jestliže jste tak dosud neučinili, si otevřeme terminál (gnome-terminal, xterm,...) a převtělíme se v 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.12.12.tar.xzNyní 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.12.12Použ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` .configPochopitelně 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-amd64Teď 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 menuconfigPokud vám nic nechybí, v okně terminálu uvidíte takové krásné menu na modrém pozadí, jinak, jestliže by vám něco chybělo, měla by se zobrazit chybová hláška, podle níž byste se měli řídit, jestliže ji 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é submenuTIP!
Položky označené jako EXPERIMENTAL, pakliže o některou z nich nestojíte, můžete klidně zakázatSezná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 UTFGGeneral 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.
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 -jY deb-pkg LOCALVERSION=-sid KDEB_PKGVERSION=$(make kernelversion)-X... kde
-X je číslo "pokusu", např. -1 (5.12.12
-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).
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.debNěkdy se stane, že se neaktualizuje GRUB, to se dá napravit snadno:
update-grubNo 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 19. 6. 2021