Kompilace linuxového Jádra

  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.
  • : Function split() is deprecated in /home/web/vydrar.net/subdomains/www/modules/filter/filter.module on line 1206.

Jádro
Je to "Jádro" systému :), nastavují se zde ovladače zařízení (Woknoidně řečeno).
tzn, pokud nemám v jádře ovladač na některé zařízení, přidám ho, zkompiluju jádro (pokud ovladač přidám jako modul, tak zkompiluju modul) a je to :)

Přecházíme na nové jádro
Může se Vám stát, že potřebujete přejít na nové jádro ať už z důvodu podpory nového hw, nebo protože chcete být IN :)
Nastává zde otázka, musím projít všechny položky a konfigurovat jádro celé znovu? je to práce tak na 30 minut... Nemusíte! (naštěstí).
Příklad:
Používám jádro 2.6.7 a nové na které chci přejít je 2.6.10. Stáhnu ho (viz níže), nakopíruji ho do /usr/src/

cp linux-2.6.10.tar.gz /usr/src/

rozbalím cd /usr/src/

tar -xzf linux-2.6.10.tar.gz 

zkopíruji konfigurační soubor

cd /usr/src/linux
cp .config /usr/src/linux-2.6.10 

a spustím make oldconfig, který vyhledá změny v novém jádře a zeptá se jaké hodnoty pro tyto změny nastavit.
Vypadá to asi takto:
Power Management Debug Support (PM_DEBUG) [N/y/?] (NEW)
Přednastavená hodnota je N (přednastavená je velkým písmenem) označení NEW je protože tato položka ve starém jádře není. Pokud zadáte otazník, dostanete krátký help co vlastně má tato položka nastarosti:

This option enables verbose debugging support in the Power Management
code. This is helpful when debugging and reporting various PM bugs,
like suspend support.

Stažení a příprava

Jádro lze stáhnout na www.kernel.org
Poslední jádro (v době kdy to píši) je 2.6.10 ke stažení je zde a má cca 44MB

Jádro je třeba stáhnout, rozbalit do /usr/src/linux-2.6.10 (podle verze) a udělat symlink na nové jádro tj:

cd /usr/src
ln -s linux-2.6.10 linux

Nyní své jádro najdete v adresáři /usr/src/linux/

Kompilace jádra
"vlezte" do adresáře s novým jádrem,

cd /usr/src/linux

a napište:

make menuconfig

V zobrazeném menu si můžete vybrat co vše se má kompilovat do jádra, případně co vše se má kompilovat v podobě modulů.
Položky označené * se kompilují přímo do jádra, položky označené M se kompilují jako moduly.
Příklad: potřebuji ovladač pro síťovou kartu s čipem RTL8139, ten najdete v:
Devide drivers --> Networking support --> Ethernet (10 or 100 Mbit) --> RealTek RTL-8139 PCI Fast Ethernet Adapter support.
Jakmile skončíte s výběrem, tak vyskákejte ven (pomocí ESC) a uložte konfiguraci.
Konfigurace se uloží do souboru .config v adresáři /usr/src/linux
Nyní budeme kompilovat jádro:

make bzImage

Po skončení je jádro uloženo jako soubor bzImage v adresáři /usr/src/linux/arch/architektura/boot/
(např :/usr/src/linux-2.6.10/arch/i386/boot/bzImage)

Přeložíme moduly:

make modules
make modules_install

Moduly se uloží do /lib/modules/verze_jádra/
Nakopírujeme nové jádro do adresáře boot pod novým jménem:

cd /usr/src/linux-2.6.10/arch/i386/boot/
cp bzImage /boot/bzImageNEW

Úprava Grubu

Nyní ještě musíme upravit spouštěč grub aby se nové jádro objevilo v menu.
V adresáři /boot/grub/ najdete soubor grub.conf ten je třeba pozměnit, resp přidat položku:

title Debian-NEW
        root (hd0,1)
        kernel /boot/bzImageNEW ro root=/dev/hda2

Přičemž title je jméno nové položky menu, root (hd0,1) označuje nultý hdd a první partition (protože na nulté je u mě jiný OS), řádek začínající kernel vypovídá o umístění nového kernelu.

Nepoužívám Grub ale Lilo
Je nutné editovat soubor /etc/lilo.conf a přidat následující:

image=/boot/bzImageNEW
        label=NoveJadro
        read-only
        root=/dev/hda2

Startovací partition tj položku root=/dev/hda2 zjistíte pomocí příkazu: df /boot
Změny uložte pomocí

./lilo

Konečná fáze
Pokud jste přidávali jenom modul, nemusíte kvůli tomu kompilovat jádro a upravovat menu, ani rebootovat, stačí vybrat modul, zkompilovat moduly a nechat je nakopírovat příkazem make modules_install na správné místo.
nový modul zavedete příkazem modprobe jméno_modulu tj: modprobe 8139too u mé síťové karty.
Pokud jste modifikovali položku s * tak je nutné rebootovat, pokud je vše ok a vyberete novou položku, měli byste nabootovat nové jádro i s novým ovladačem. Ověření verze jádra je možné pomocí příkazu uname -r
Pokud nové jádro nefunguje, máte vždy možnost se vrátit ke starému...
Hodně štestí...

Komentáře

kernel v debianu

co to tady delate?! :(
vzdyt debian si s tin tak hezky poradil: http://www.us.debian.org/releases/stable/i386/ch08s05.html.cs

ah jo :'(

kernel v debianu

Vyborne, konecne nekdo poukazal na to ze to jde i lepe!