▶ Kompilace jádra - podrobný návod [Aktualizováno]

Založil Roman Horník, 21. 08. 2010, 00:53:05

Předchozí téma - Další téma

Roman Horník

#15
Ono je taky možný, že se ovladač z xserver-xorg-video-ati (nebo co používáš) nesnese s kernelem. Máš něco v logu Xorg.*.log?

Zkoušel jsi proprietární ovladač?
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

Ota Trkola

#16
Právě jsem odstartoval kompilaci, tak uvidíme. Používám xserver-xorg-video-radeon a problém by být neměl, uvidím.

Citace od: Roman Horník kdy 22. 08. 2010, 19:57:15Zkoušel jsi proprietární ovladač?

V poslední době ne a ani se na to nechystám.

Roman Horník

Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

Ota Trkola

Jsem spokojenej s open source ovladačem, takže není důvod.

Roman Horník

Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

Roman Horník

Citace od: Ota Trkola kdy 22. 08. 2010, 20:04:52
Právě jsem odstartoval kompilaci, tak uvidíme. Používám xserver-xorg-video-radeon a problém by být neměl, uvidím.

Jak to dopadlo?
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

Roman Horník

Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

Ota Trkola

Citace od: Roman Horník kdy 22. 08. 2010, 23:22:58
Citace od: Ota Trkola kdy 22. 08. 2010, 20:04:52
Právě jsem odstartoval kompilaci, tak uvidíme. Používám xserver-xorg-video-radeon a problém by být neměl, uvidím.

Jak to dopadlo?

Dopadlo to úplně stejně jako předtím. Obrazovka plná barevných bodů. No nic, zkusím to jindy. Teď řeším nákup mininoteknihy na který bude běhat debian, tak nemám čas.

koljin

Ahoj. Dá se samotná kompilace provádět i pod normálnim uživatelem, a ne rootem?

Roman Horník

Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

ulo

Tak jsem chtěl zkompilovat kernel (vybral jsem kernel 2.6.35.3) podle návodu od Romana (mimochodem moc pěkně a přehledně napsané ;-) ), ale ještě bych do toho návodu doplnil, že je potřeba mít nainstalované všechny tyto věci:
build-essential bin86 kernel-package libncurses5 libncurses5-dev fakeroot

Já totiž defaultně od instalace v Lennym neměl libncurses5-dev, fakeroot, bin86 a kernel-package. Bez nich mi nechtěla kompilace začít a házelo to chyby (i když s tím bin86 si nejsem jist, jestli je potřeba - assemblerovský překladač či co to je).

Nakonec jsem teda zatím skončil neúspěchem a zastavilo se to s chybou při snaze o kompilaci driveru lguest, ale nevzdám to :-)

Jinak jsem se ještě někde dočetl, že pokud nechci, aby kernel měl třeba 40MB a moduly 700MB, tak v menu Kernel Hacking se má vypnout Kernel Debugging (zatím jsem nezkoušel, ale protože mě čekají další pokusy, tak to určo vyzkouším).

Nu a teď mám ještě dotaz.
Četl jsem, že možná bude potřeba před kompilací nového kernelu odstranit starý link k linux adresáři a vytvořit nový (např.):
# rm -rf linux && ln -s linux-2.6.35 linux

Je toto vůbec nutné dělat? Zřejmě se ti to, Romane, podařilo úspěšně zkompilovat i bez tohoto kroku, když ho tu neuvádíš...
PC-doma:  LinuxMint 17.2 KDE (64bit) - AMD Athlon II X2 270, MB ASUS M5A78L LE, RAM 4 GB, ATI Radeon HD4350
PC-práce: LinuxMint 17.2 KDE (32bit) - Intel Pentium 4, MB MSI 945G Neo, RAM 4 GB, GeForce 8400 GS
NB:  LinuxMint 17.1 KDE (32bit) - Acer TravelMate 3002
Servery:  Debian 6.0 Squeeze

Roman Horník

#26
Díky! Balík bin86 není potřeba (16-bitovej x86 assembler), ale ostatní jsem do návodu doplnil + GCC +CPP (kdyby náhodou).
Ani rm -rf linux && ln -s linux-2.6.35 linux[/size] nemusí bejt, přece v návodu nepoužívám žádný linkování. Pracuje se jenom v jedný složce, a tou je linux-2.6.3x.x, můžeš v ní pracovat kolikrát chceš. Z 2.6.35.4 jsem už udělal 6 balíků a funguje to bezchybně (naposledy včera; to mi pes zlikvidoval webkameru, tak jsem z jádra sebral její ovladač).

Co se Ti zobrazí za chybu při kompilaci lguest? Hoď to sem, uvidíme ;)


Edit Ota Trkola: odstranění citace předchozího příspěvku.
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

ulo

Supr, už rozumím, proč nepotřebujeme odstraňovat link na linux adr. Díky.

Tak jsem zkoušel kompilovat kernel 2.6.35.4 a skončilo to chybou:
...
CC      mm/memory.o
mm/memory.c:2796: error: redefinition of 'check_stack_guard_page'
mm/memory.c:2770: error: previous definition of 'check_stack_guard_page' was here
make[2]: *** [mm/memory.o] Error 1
make[1]: *** [mm] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.35.4'
make: *** [debian/stamp/build/kernel] Error 2


V menuconfig jsem nic neměnil a i když změnil, tak to skončilo touto chybou. Zkusím ještě jiný kernel...
PC-doma:  LinuxMint 17.2 KDE (64bit) - AMD Athlon II X2 270, MB ASUS M5A78L LE, RAM 4 GB, ATI Radeon HD4350
PC-práce: LinuxMint 17.2 KDE (32bit) - Intel Pentium 4, MB MSI 945G Neo, RAM 4 GB, GeForce 8400 GS
NB:  LinuxMint 17.1 KDE (32bit) - Acer TravelMate 3002
Servery:  Debian 6.0 Squeeze

Roman Horník

Je mi to trochu povědomý. Nesnažil ses jádro opatchovat? Jednou jsem to udělal, ale nejspíš blbě, pak jsem zjistil, že v oněch souborech byly duplicitní řádky, schválně se podívej do /usr/src/linux-2.6.35.4/mm/memory.c na řádky 2770 a 2796. Tyhle řádky a řádky pod nimi by měly bejt stejný. Jestli jo, můžeš se pokusit duplicitní řádky smazat.
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

ulo

jj je to tak, opatchovával jsem to (a asi taky blbě). Díky, podívám se na ty řádky.

Nicméně teď jsem zkusil starší kernel 2.6.34.6 a opět jsem skončil chybou s lguestem:


make[1]: Entering directory `/usr/src/linux-2.6.34.6/Documentation/lguest'
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE    lguest.c   -o lguest
lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c: In function 'create_thread':
lguest.c:1026: warning: implicit declaration of function 'eventfd'
make[1]: *** [lguest] Error 1
make[1]: Leaving directory `/usr/src/linux-2.6.34.6/Documentation/lguest'
make: *** [debian/stamp/build/kernel] Error 2
PC-doma:  LinuxMint 17.2 KDE (64bit) - AMD Athlon II X2 270, MB ASUS M5A78L LE, RAM 4 GB, ATI Radeon HD4350
PC-práce: LinuxMint 17.2 KDE (32bit) - Intel Pentium 4, MB MSI 945G Neo, RAM 4 GB, GeForce 8400 GS
NB:  LinuxMint 17.1 KDE (32bit) - Acer TravelMate 3002
Servery:  Debian 6.0 Squeeze