Nemůžu přeložit jádro
Typická hláška pří zadání příkazu make zImage vypadá asi takto:
make[1]: as86: Comand not found
make[1]: *** [bootsect.o] Error 127
make[1]: Leaving directory /usr/src/linux/arch/i386/boot
make: *** [zImage] Error 2
Pro překlad čehokoliv potřebujete: zdrojové kódy, překladač,
hlavičkové soubory, knihovny.
- Zdrojový kód jádra je umístěn v adresáři /usr/src/linux.
Redhat nebo Debian ho má v balíku kernel-source
- Překladač: gcc (je v balíku egcs nebo gcc)
- Překladače assembleru:
as (balík binutils), as86 (bin86 nebo dev86)
- Program pro koordinaci závislostí:
make (make)
- Hlavičkové soubory a knihovny:
glibc-devel, kernel-headers
- Pro konfiguraci pomocí menuconfig:
ncurses, ncurses-devel
- Pro konfiguraci pomocí xconfig:
správně nainstalované X
- Pro patchování nových verzí:
patch
Jak najít chybějící soubor podle jména:
rpmFind
Vyhledávání souborů (knihoven) v rpm balíčcích
Typický příklad: Aplikaci nelze nainstalovat, protože chybí knihovna abc.o.
Ve kterém balíčku najdu tuto knihovnu?
Hlavní stránka projektu rpmFind
Na co ještě můžete narazit
- kernel too big
-
Přeložte jádro jako big (bzImage) nebo oddělte část ovladačů, které
nejsou potřeba při startu systému, do modulů.
Proč? Viz např.
jeden
příspěvek do konference
- problémy se souborem System.map
-
Soubor System.map uvádí mapování adres v jádře na symboly. Pro každé
jinak přeložené jádro je potřeba zvláštní soubor, po překladu zůstal v
adresáři /usr/src/linux. Tento soubor používají programy, které využívají
informace ze struktury /proc, jako např. ps s přepínačem
l - ve sloupci
WCHAN vypisuje jméno funkce volání jádra, ve které se program právě nachází.
Nejjistější je soubor po překladu jádra zkopírovat do adresáře /boot pod
jménem System.map-2.x.y, kde 2.x.y je číslo verze jádra.
Více viz ps(1), top(1), klogd(8)
- staré verze programů nutných k sestavení jádra
-
V souboru
linux/Documentation/Changes
jsou uvedeny nutné minimální verze programů
(Current Minimal Requirements), které se na překladu, sestavení a
následném nabootování podílí.
Máte-li některý z programů (balíčků) starší, riskujete hlášení, ze kterého nic
nepoznáte, nebo vám počítač nenabootuje.
Obvykle je nejjistější mít všechny balíčky z jedné verze distribuce.
Nezapomeňte:
po každé změně jádra je třeba upravit /etc/lilo.conf a spustit program
lilo. Pokud používáte nějaký sofistikovaný nástroj (linuxconf), měl by to
zajistit za vás.