Aktualizace jádra v Gentoo Linuxu
1.
Úvod
Jádro je jeden z mála balíků v Portage, které při aktualizaci vyžadují
ruční práci. Portage sice stáhne a nainstaluje zdrojové kódy, poté je však na
vás, abyste provedli samotnou kompilaci.
Přestože je tento návod určen uživatelům provádějícím pouze aktualizaci na
novější verzi téhož jádra, ocení jej také uživatelé přecházející z jednoho
balíku s jádrem na jiný.
Jako příklad zde budeme mluvit o balíčku gentoo-sources, popisované
postupy však lze použít také pro jiná jádra dostupná přes Portage.
2.
Proč aktualizovat jádro?
Obecně aktualizace jádra na další postupnou verzi v rámci stejné hlavní
řady nepřináší žádné zásadní změny. Pro aktualizaci jádra však existuje několik
důvodů. Jedním z nich je potřeba použít určitou konkrétní novou funkci nebo
ovladač; dalším důvodem je ochrana před bezpečnostními děrami nebo jen snaha
udržet systém co nejvíce aktuální a v pořádku.
I když nechcete průběžně instalovat každou nově vydanou verzi jádra,
doporučujeme aktualizaci provést alespoň občas. Důrazně doporučujeme provést
aktualizaci okamžitě, pokud nová verze jádra opravuje nějaký bezpečnostní
problém.
3.
Stažení nových zdrojových kódů prostřednictvím Portage
Zdrojové kódy jádra se aktualizují stejně jako jakýkoliv jiný balík -
s použitím nástroje emerge. Pro aktualizaci jádra se většinou
rozhodnete, když se nová verze zdrojových kódů objeví ve výpisu dostupných
aktualizací pro váš systém. Například:
Výpis kódu 3.1: Nové zdrojové kódy jádra ve výpisu dostupných aktualizací |
# emerge -Dup world
Calculating dependencies ...done!
[ebuild NS ] sys-kernel/gentoo-sources-2.6.9-r2 [2.6.8-r5]
|
Poznámka:
Označení "NS" v předchozím výpisu znamená, že zdrojové kódy nové verze
jádra budou nainstalovány do Nového Slotu, tzn. že staré jádro bude zachováno
do doby, než jej ručně odstraníte.
|
Nyní můžete pokračovat a provést instalaci, např.:
Výpis kódu 3.2: Aktualizace zdrojových kódů jádra |
# emerge -u gentoo-sources
|
Zdrojové kódy jádra budou nainstalovány do vlastního podadresáře uvnitř
/usr/src, v našem příkladu do
/usr/src/linux-2.6.9-gentoo-r2.
4.
Aktualizace symbolického odkazu /usr/src/linux
V Gentoo je potřeba, aby symbolický odkaz /usr/src/linux
ukazoval na zdrojové kódy právě bežícího jádra.
Portage může symbolický odkaz upravit automaticky při instalaci nových
zdrojových kódů. Stačí, když přidáte klíčové slovo symlink do nastavení
USE proměnné v /etc/make.conf.
Výpis kódu 4.1: Příklad nastavení USE proměnné v /etc/make.conf |
USE="symlink x86 3dnow 3dnowex X aac aalib adns alsa apache2"
|
Symbolický odkaz můžete spravovat také pomocí nástrojů z balíčku
app-admin/eselect:
Výpis kódu 4.2: Správa symlinku nástrojem eselect |
# emerge eselect
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.9-gentoo-r1
[2] linux-2.6.9-gentoo-r2
# eselect kernel set 1
|
Pokud chcete symbolický odkaz nastavit sami, následující příklad vám ukáže, jak
jej nastavit tak, aby ukazoval na linux-2.6.9-gentoo-r2:
Výpis kódu 4.3: Manuální aktualizace symbolického odkazu /usr/src/linux |
# cd /usr/src
# ln -sfn linux-2.6.9-gentoo-r2 linux
|
5.
Konfigurace, kompilace a instalace nového jádra
Pro všechny možnosti odkazujeme na postupy uvedené v
Gentoo referenční příručce, zejména
v kapitolách Konfigurace kernelu a Konfigurace bootloaderu.
Níže uvádíme stručný přehled požadovaných úkonů:
Možnost 1: automatické nastavení jádra pomocí skriptu genkernel
Pokud používáte genkernel, stačí pouze zopakovat kroky, které jste prováděli
během první instalace jádra do systému.
Běžným způsobem spusťte skript genkernel:
Výpis kódu 5.1: Spuštění skriptu genkernel |
# genkernel all
|
Pro změnu funkce skriptu genkernel můžete použít některé další parametry. Např.
pokud chcete dodatečně nastavit některé možnosti jádra pomocí menuconfig
a pokud chcete, aby genkernel automaticky zaktualizoval nastavení zavaděče
systému GRUB, potom spusťte genkernel takto:
Výpis kódu 5.2: Spuštění skriptu genkernel s nejběžnějšími parametry |
# genkernel --menuconfig --bootloader=grub all
|
Více informací najdete v Gentoo Linux
Genkernel Guide nebo v Gentoo
Handbooku. Mnoho možností skriptu genkernel lze nastavit
v konfiguračním souboru /etc/genkernel.conf
Možnost 2: ruční konfigurace
Nejdříve v adresáři se zdrojovými kódy jádra spusťte program
menuconfig:
Výpis kódu 5.3: Spuštění menuconfig |
# cd /usr/src/linux
# make menuconfig
|
Vyberte možnosti, které jsou vyžadovány pro váš hardware a operační prostředí.
Další informace o nastavení jádra najdete v kapitole Konfigurace
kernelu Gentoo Handbooku.
Dále zkompilujte jádro a zkopírujte jej do bootovacího oddílu na disku. Opět
postupujte podle Gentoo referenční
příručky, kapitoly Konfigurace bootloaderu. Pokud máte
/boot na zvláštním oddílu, ujistěte se ještě před kopírováním, že
je tento oddíl namountován! V opačném případě systém s novým jádrem
nenastartuje.
Výpis kódu 5.4: Kompilace a instalace nového jádra |
# make && make modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.9-gentoo-r2
|
Nakonec byste měli upravit nastavení zavaděče systému, tzn. přidat záznam pro
nové jádro (zatím neodstraňujte záznamy, které patří předchozím verzím jádra!).
Odmountujte oddíl /boot. Podrobné informace opět najdete
v Gentoo referenční příručce.
6.
Rekompilace externích modulů
Pokud používáte také moduly, které nejsou obsaženy ve zdrojových kódech
jádra, ale jsou dostupné jinde v Portage (např. ovladače ALSA či grafických
karet NVIDIA nebo ATI), po instalaci nového jádra musíte tyto moduly znovu
nainstalovat. Stačí jen znovu nainstalovat příslušné balíky prostřednictvím
emerge. Více informací najdete v kapitole Konfigurace kernelu
Gentoo handbooku.
K dispozici je jednoduchý nástroj sys-kernel/module-rebuild, který
jaderné moduly vytvořené pomocí samostatných ebuildů znovu přeloží (používá se
symlink /usr/src/linux). Použití je snadné — po instalaci spusťte
module-rebuild populate, tím do interní databáze vložíte seznam balíčků,
jež budou po aktualizaci jádra vyžadovat rekompilaci, a konečně po samotném
upgradu jádra spusťte module-rebuild rebuild, který potřebné moduly znovu
překompiluje.
Pro více informací spusťte module-rebuild bez dalších parametrů,
obdržíte výpis podporovaných příkazů.
7.
Restart systému s novým jádrem
Ukončete všechny aplikace a restartujte počítač. Pokud jste postupovali přesně
podle výše uvedeného postupu, v menu zavaděče systému by jako jedna
z nabídek mělo být uvedeno nové jádro. Vyberte toto nové jádro a nechte
systém nastartovat.
Doufáme, že váš počítač správně nastartoval s novým jádrem a vy se můžete
přihlásit do systému a pokračovat ve své práci. Pokud tomu tak je, potom jste
aktualizaci jádra úspěšně dokončili.
Pokud jste udělali nějakou chybu a systém s novým jádrem odmítá
nastartovat, restartujte počítač a zvolte možnost v menu zavaděče systému,
která náleží poslední funkční verzi jádra. Poté se vraťte ke kapitole
Konfigurace, kompilace a instalace nového jádra a
proveďte potřebné změny, abyste svou chybu opravili. V některých případech
není nutné restartovat s minulou verzí jádra (např. pokud jste jen
zapomněli do jádra přidat ovladač zvukové karty, síťové karty, atd.).
8.
Provoz více jader
Možná jste si všimli, že při instalaci zdrojových kódů nového jádra nejsou
zdrojové kódy stávajícího jádra odstraněny. Je to tak schválně, abyste mohli
přepínat mezi různými jádry.
Přepínání mezi jádry je jednoduché - pouze ponechte příslušné zdrojové kódy
v adresáři /usr/src/, zkompilované jádro bzImage
v oddílu /boot a v nastavení bootloaderu příslušný
záznam. Při každém startu systému se poté zobrazí nabídka, ze které si vyberete
tu verzi jádra, kterou chcete právě používat.
9.
Odstranění starších jader
Doufáme, že jste si s pomocí předchozích kapitol nastavili jádro
ke své spokojenosti a tudíž dále nemusíte uchovávat jeho předchozí verze.
Pro snadné odstranění zdrojových kódů konkrétního jádra kromě jeho nejnovější
verze využijte přepínač prune příkazu emerge. V příkladu
používáme jádro gentoo-sources:
Výpis kódu 9.1: Odstranění starších verzí |
# emerge -P gentoo-sources
|
V příslušném podadresáři adresáře /usr/src pak většinou ještě
zůstanou některé dočasné soubory, použité při kompilaci. Tyto soubory můžete
bez obav smazat příkazem rm.
Stejně tak můžete bez obav smazat také všechny moduly, které byly tímto starším
jádrem používány. To provedete odstraněním příslušných podadresářů
v adresáři /lib/modules/. Při mazání dávejte pozor, abyste
nesmazali moduly, které patří používaným jádrům!
Nakonec můžete namountovat oddíl /boot a smazat soubory
bzImage těch jader, která ze systému odstraňujete. Konečně
byste měli z konfiguračního souboru zavaděče smazat záznamy, které na tato
jádra odkazují.
10.
Pokročilé: použití konfiguračního souboru starého jádra pro
nastavení nového
Někdy si můžete ušetřit čas tím, že při nastavování nového jádra použijete
konfigurační soubor starého jádra. Tento postup nemusí být vždy bezpečný —
vzhledem k velkému množství změn mezi jednotlivými verzemi jádra nemusí být
použití předchozí konfigurace spolehlivé.
Jediným případem, kdy je toto přebírání konfigurace vhodné, je aktualizace
Gentoo jádra mezi revizemi téže verze. Například mezi
gentoo-sources-2.6.9-r1 a gentoo-sources-2.6.9-r2 budou jen velmi
malé rozdíly, a proto je většinou možné použít následující postup. Ovšem
v případě, který je od začátku tohoto dokumentu popisován jako modelový
příklad — přechod z 2.6.8 na 2.6.9 — tento postup není vhodný. Uživatelé si
někdy neuvědomují, že vzhledem k velkým změnám mezi oficiálními verzemi
jádra nelze níže uvedený postup vždy použít; tím se často dostávají do problémů,
protože pak mají v jádru nechtěně zakázány některé volby.
Pro opětovné použití starého konfiguračního souboru .config jej
zkopírujte a spusťte make oldconfig. V následujícím příkladu vezmeme
konfiguraci z gentoo-sources-2.6.9-r1 a použijeme ji pro
gentoo-sources-2.6.9-r2.
Výpis kódu 10.1: Opětovné použití staré konfigurace |
# cd /usr/src/linux-2.6.9-gentoo-r2
# cp ../linux-2.6.9-gentoo-r1/.config .
# make oldconfig
|
Výpis kódu 10.2: Použití staré konfigurace s genkernelem |
# cd /etc/kernels
# cp kernel-config-x86-2.6.9-gentoo-r1 kernel-config-x86-2.6.9-gentoo-r2
# genkernel all
|
V tuto chvíli můžete být dotázáni na nastavení voleb, které se proti minulé
verzi změnily. Poté můžete zkompilovat a nainstalovat nové jádro běžným
způsobem, bez nutnosti procházet celý proces nastavení jádra menuconfig.
Bezpečnější však bude, když nejprve zkopírujete starý konfigurační soubor a
následně spustíte make menuconfig. Vyhnete se tak problémům, které
s sebou nese make oldconfig, a zároveň z původní, staré
konfigurace co nejvíce převezmete. Stále sice bude na vás projít celý strom
nabídek, překontrolovat nové možnosti a odebrané funkce, avšak v rámci
menuconfig uvidíte nové volby v jejich kontextu a snadno si přečtete
jejich nápovědu. Tento postup je proto zpravidla bezpečný i pro upgrady mezi
jednotlivými verzemi jádra, třeba z 2.6.8 na 2.6.9. Způsob kompilace a
instalace kernelu se tímto postupem nijak nemění.
11.
Problémy po aktualizaci jádra?
Vzhledem k rychlému vývoji jádra Linuxu je nevyhnutelné, že některé změny
provedené mezi vydáními mohou způsobit určité problémy. Pokud máte jakékoliv
potíže s nejnovějšími verzemi jader podporovaných
v Gentoo, pak nám své problémy prosím nahlaste.
Obsah tohoto dokumentu je licencován pod licencí Creative Commons -
Attribution / Share Alike.
|