GNU/Linux >> Znalost Linux >  >> Debian

Jak zkompilovat jádro – způsob Debianu

Na této stránce

  1. 1 předběžná poznámka
  2. 2 Vytvoření balíčku .deb jádra
    1. 2.1 Nainstalujte požadované balíčky pro kompilaci jádra
    2. 2.2 Stáhnout zdroje jádra
    3. 2.3 Použití oprav na zdroje jádra (volitelné)
    4. 2.4 Konfigurace jádra
    5. 2.5 Build The Kernel
    6. 2.6 Instalace nového jádra
  • 3 Vytvoření jádra tradičním způsobem
    1. 3.1 Nainstalujte požadované balíčky pro kompilaci jádra
    2. 3.2 Stáhnout zdroje jádra
    3. 3.3 Použití oprav na zdroje jádra (volitelné)
    4. 3.4 Konfigurace jádra
    5. 3.5 Sestavení a instalace jádra
    6. 3.6 Kroky po instalaci
  • 4 odkazy
  • Každá distribuce má nějaké specifické nástroje k sestavení vlastního jádra ze zdrojů. Tento článek je o kompilaci jádra na systému Debian (Etch). Popisuje, jak vytvořit vlastní jádro pomocí nejnovějších neupravených zdrojů jádra z www.kernel.org (vanilla kernel), abyste byli nezávislí na jádrech dodávaných vaší distribucí. Také ukazuje, jak opravit zdrojové kódy jádra, pokud potřebujete funkce, které tam nejsou.

    Neposkytuji žádnou záruku, že to pro vás bude fungovat!

    1 předběžná poznámka

    Popíšu dva způsoby kompilace nového jádra. Při použití první metody získáte balíček .deb jádra, který lze nainstalovat do systému a který můžete sdílet s ostatními a nainstalovat na jiné systémy Debian Etch.

    Druhou metodou je kompilace jádra "tradiční" cestou. Tento způsob funguje na jakékoli distribuci Linuxu, ale samozřejmě neskončíte s balíčkem .deb jádra.

    2 Sestavení balíčku .deb jádra

    Tato kapitola ukazuje, jak sestavit jádro a skončit s balíčkem .deb, který můžete nainstalovat a sdílet s ostatními.

    2.1 Instalace požadovaných balíčků pro kompilaci jádra

    Nejprve aktualizujeme naši databázi balíčků:

    apt-get update

    Poté nainstalujeme všechny potřebné balíčky takto:

    apt-get install kernel-package ncurses-dev fakeroot wget bzip2 build-essential

    2.2 Stáhnout zdroje jádra

    Dále si stáhneme požadované jádro do /usr/src. Přejděte na www.kernel.org a vyberte jádro, které chcete nainstalovat, např. linux-2.6.21.3.tar.bz2 (všechna jádra 2.6 najdete zde:http://www.kernel.org/pub/linux/kernel/v2.6/). Poté si jej můžete stáhnout do /usr/src takto:

    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2

    Poté rozbalíme zdrojové kódy jádra a vytvoříme symbolický odkaz linux do adresáře zdrojů jádra:

    tar xjf linux-2.6.21.3.tar.bz2
    ln -s linux-2.6.21.3 linux
    cd /usr/src/linux

    2.3 Použití oprav na zdroje jádra (volitelné)

    Někdy potřebujete ovladače pro hardware, který nové jádro ve výchozím nastavení nepodporuje, nebo potřebujete podporu pro virtualizační techniky nebo nějakou jinou převratnou technologii, která se ještě nedostala do jádra. Ve všech těchto případech musíte opravit zdrojové kódy jádra (za předpokladu, že je k dispozici oprava...).

    Nyní předpokládejme, že jste si stáhli potřebný patch (v tomto příkladu tomu říkám patch.bz2) do /usr/src. Takto jej použijete na zdroje jádra (musíte být stále v adresáři /usr/src/linux):

    bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch.bz2 | patch -p1

    První příkaz je pouze test, nedělá nic s vašimi zdroji. Pokud neukazuje chyby, můžete spustit druhý příkaz, který opravu skutečně aplikuje. Nedělejte to, pokud první příkaz ukazuje chyby!

    Můžete také použít předzáplaty jádra na zdroje jádra. Pokud například potřebujete funkci, která je dostupná pouze v jádře 2.6.22-rc3, ale pro toto jádro ještě nebyly vydány úplné zdrojové kódy. Místo toho je k dispozici patch-2.6.22-rc3.bz2. Tuto opravu můžete použít na zdroje jádra 2.6.21, ale ne na jádro 2.6.21.1 nebo 2.6.21.2 atd. To je vysvětleno na http://kernel.org/patchtypes/pre.html:

    Přípravné opravy jsou ekvivalentem alfa verzí pro Linux; žijí v testovacích adresářích v archivech. Měly by být aplikovány pomocí obslužného programu patch(1) na zdrojový kód předchozího plného vydání s číslem 3dílné verze (například předzáplata 2.6.12-rc4 by měla být aplikována na zdroje jádra 2.6.11, nikoli , například 2.6.11.10.)

    Pokud tedy chcete zkompilovat jádro 2.6.22-rc3, musíte si stáhnout zdrojové kódy jádra 2.6.21 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21. tar.bz2) v kroku 3 namísto jádra 2.6.21.3!

    Takto aplikujete opravu 2.6.22-rc3 na jádro 2.6.21:

    cd /usr/src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
    cd /usr/src/linux
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1

    2.4 Konfigurace jádra

    Jako základ pro vaše nové jádro je dobré použít konfiguraci vašeho aktuálního fungujícího jádra. Proto zkopírujeme stávající konfiguraci do /usr/src/linux:

    make clean && make mrproper
    cp /boot/config-`uname -r` ./.config

    Pak spustíme

    make menuconfig

    který vyvolá konfigurační menu jádra. Přejděte na Načíst alternativní konfigurační soubor a jako konfigurační soubor vyberte .config (který obsahuje konfiguraci vašeho aktuálního pracovního jádra):

    Poté procházejte nabídku konfigurace jádra a proveďte své volby. Až budete hotovi a vyberete Konec, odpovězte na následující otázku (Přejete si uložit novou konfiguraci jádra?) Ano:

    2.5 Sestavení jádra

    Chcete-li sestavit jádro, spusťte tyto dva příkazy:

    make-kpkg clean
    fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

    Za --append-to-version=můžete napsat libovolný řetězec, který vám pomůže identifikovat jádro, ale musí začínat mínus (-) a nesmí obsahovat mezery.

    Nyní buďte trpěliví, kompilace jádra může trvat několik hodin v závislosti na konfiguraci jádra a rychlosti procesoru.

    2.6 Instalace nového jádra

    Po úspěšném sestavení jádra můžete najít dva balíčky .deb v adresáři /usr/src.

    cd /usr/src
    ls -l

    Na mém testovacím systému se jmenovaly linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb (který obsahuje skutečné jádro) a linux-headers-2.6.21.3-custom_2.6.21.3- custom-10.00.Custom_i386.deb (který obsahuje soubory potřebné, pokud chcete později zkompilovat další moduly jádra). Nainstaluji je takto:

    dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
    dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb

    (Nyní můžete dokonce přenést dva soubory .deb do jiných systémů Debian Etch a nainstalovat je tam úplně stejným způsobem, což znamená, že tam nemusíte znovu kompilovat jádro.)

    A je to. Konfigurační soubor bootloaderu GRUB /boot/grub/menu.lst byl automaticky upraven a v /boot byl vytvořen ramdisk pro nové jádro.

    Nyní restartujte systém:

    shutdown -r now

    V zaváděcím řádku vyberte své nové jádro (ve výchozím nastavení by mělo být vybráno):

    Pokud vše půjde dobře, mělo by přijít s novým jádrem. Zda skutečně používá vaše nové jádro, můžete zkontrolovat spuštěním

    uname -r

    Mělo by se zobrazit něco jako

    2.6.21.3-custom

    Pokud se systém nespustí, restartujte jej a na zaváděcí výzvě vyberte své staré jádro. Nyní se můžete znovu pokusit zkompilovat funkční jádro. Nezapomeňte odstranit stanzy nefunkčního jádra z /boot/grub/menu.lst.

    3 Sestavení jádra tradičním způsobem

    Tato kapitola popisuje jiný přístup, který lze použít na libovolném systému Linux (kromě podrobností, jako je vytvoření ramdisku nebo aktualizace zavaděče). Samozřejmě neskončíte s balíčkem .deb jádra.

    3.1 Instalace požadovaných balíčků pro kompilaci jádra

    Nejprve aktualizujeme naši databázi balíčků:

    apt-get update

    Poté nainstalujeme všechny potřebné balíčky takto:

    apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

    3.2 Stáhnout zdroje jádra

    Dále si stáhneme požadované jádro do /usr/src. Přejděte na www.kernel.org a vyberte jádro, které chcete nainstalovat, např. linux-2.6.21.3.tar.bz2 (všechna jádra 2.6 najdete zde:http://www.kernel.org/pub/linux/kernel/v2.6/). Poté si jej můžete stáhnout do /usr/src takto:

    cd /usr/src
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.3.tar.bz2

    Poté rozbalíme zdrojové kódy jádra a vytvoříme symbolický odkaz linux do adresáře zdrojů jádra:

    tar xjf linux-2.6.21.3.tar.bz2
    ln -s linux-2.6.21.3 linux
    cd /usr/src/linux

    3.3 Použití oprav na zdroje jádra (volitelné)

    Někdy potřebujete ovladače pro hardware, který nové jádro ve výchozím nastavení nepodporuje, nebo potřebujete podporu pro virtualizační techniky nebo nějakou jinou převratnou technologii, která se ještě nedostala do jádra. Ve všech těchto případech musíte opravit zdrojové kódy jádra (za předpokladu, že je k dispozici oprava...).

    Nyní předpokládejme, že jste si stáhli potřebný patch (v tomto příkladu tomu říkám patch.bz2) do /usr/src. Takto jej použijete na zdroje jádra (musíte být stále v adresáři /usr/src/linux):

    bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch.bz2 | patch -p1

    První příkaz je pouze test, nedělá nic s vašimi zdroji. Pokud neukazuje chyby, můžete spustit druhý příkaz, který opravu skutečně aplikuje. Nedělejte to, pokud první příkaz ukazuje chyby!

    Můžete také použít předzáplaty jádra na zdroje jádra. Pokud například potřebujete funkci, která je dostupná pouze v jádře 2.6.22-rc3, ale pro toto jádro ještě nebyly vydány úplné zdrojové kódy. Místo toho je k dispozici patch-2.6.22-rc3.bz2. Tuto opravu můžete použít na zdroje jádra 2.6.21, ale ne na jádro 2.6.21.1 nebo 2.6.21.2 atd. To je vysvětleno na http://kernel.org/patchtypes/pre.html:

    Přípravné opravy jsou ekvivalentem alfa verzí pro Linux; žijí v testovacích adresářích v archivech. Měly by být aplikovány pomocí obslužného programu patch(1) na zdrojový kód předchozího plného vydání s číslem 3dílné verze (například předzáplata 2.6.12-rc4 by měla být aplikována na zdroje jádra 2.6.11, nikoli , například 2.6.11.10.)

    Pokud tedy chcete zkompilovat jádro 2.6.22-rc3, musíte si stáhnout zdrojové kódy jádra 2.6.21 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21. tar.bz2) v kroku 3 namísto jádra 2.6.21.3!

    Takto aplikujete opravu 2.6.22-rc3 na jádro 2.6.21:

    cd /usr/src 
    wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc3.bz2
    cd /usr/src/linux
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1 --dry-run
    bzip2 -dc /usr/src/patch-2.6.22-rc3.bz2 | patch -p1

    3.4 Konfigurace jádra

    Jako základ pro vaše nové jádro je dobré použít konfiguraci vašeho aktuálního fungujícího jádra. Proto zkopírujeme stávající konfiguraci do /usr/src/linux:

    make clean && make mrproper
    cp /boot/config-`uname -r` ./.config

    Pak spustíme

    make menuconfig

    který vyvolá konfigurační menu jádra. Přejděte na Načíst alternativní konfigurační soubor a jako konfigurační soubor vyberte .config (který obsahuje konfiguraci vašeho aktuálního pracovního jádra):

    Poté procházejte nabídku konfigurace jádra a proveďte své volby. Až budete hotovi a vyberete Konec, odpovězte na následující otázku (Přejete si uložit novou konfiguraci jádra?) Ano:

    3.5 Sestavení a instalace jádra

    Chcete-li sestavit jádro, spusťte tyto příkazy:

    make all
    make modules_install
    make install

    Nyní buďte trpěliví, kompilace jádra může trvat několik hodin v závislosti na konfiguraci jádra a rychlosti procesoru.

    3.6 Kroky po instalaci

    Nové jádro je nyní nainstalováno, ale stále potřebujeme ramdisk pro naše nové jádro (jinak systém s největší pravděpodobností nenabootuje!) a musíme o našem novém jádře informovat zavaděč GRUB.

    Nejprve uděláme toto:

    depmod 2.6.21.3
    apt-get install yaird

    Poté vytvoříme ramdisk pomocí následujícího příkazu:

    mkinitrd.yaird -o /boot/initrd.img-2.6.21.3 2.6.21.3

    Konfigurace GRUB je v Debian Etch velmi snadná. Vše, co musíme udělat, je spustit

    update-grub

    To detekuje nové jádro a ramdisk a aktualizuje /boot/grub/menu.lst za nás.

    Nyní restartujte systém:

    shutdown -r now

    Na zaváděcí výzvě vyberte své nové jádro (mělo by být vybráno ve výchozím nastavení). Pokud vše půjde dobře, mělo by přijít s novým jádrem. Zda skutečně používá vaše nové jádro, můžete zkontrolovat spuštěním

    uname -r

    Mělo by se zobrazit něco jako

    2.6.21.3

    Pokud se systém nespustí, restartujte jej a na zaváděcí výzvě vyberte své staré jádro. Nyní se můžete znovu pokusit zkompilovat funkční jádro. Nezapomeňte odstranit stanzy nefunkčního jádra z /boot/grub/menu.lst.

    • Debian:http://www.debian.org
    • Archiv jádra Linuxu:http://www.kernel.org

    Debian
    1. Vytváření linuxových jader způsobem Debian

    2. Jak změnit profilový obrázek v Debianu 10

    3. Nejlepší způsob, jak zkompilovat jádro pro procesor I7?

    1. Jak sestavit linuxové jádro v 21. století

    2. Jak nainstalovat Budgie Desktop na Debian

    3. Jak zkontrolovat HZ v terminálu?

    1. Jak nainstalovat plochu Pantheon na Debian

    2. Jak nainstalovat hlavičky jádra na Debian

    3. Jak nainstalovat nejnovější MySQL v Debianu 10