Beginner: Prechod na jadro 2.4 (!Delsi)

Jaroslav Gratz xgratz01 na stud.fee.vutbr.cz
Čtvrtek Duben 12 23:25:07 CEST 2001


On Thu, 12 Apr 2001, Martin Smetak wrote:

> Mozna si dobre nerozumime(nebo spis ja nerozumim vam - musite na me
> breat ohledy). Pochopil jsem to tak,ze jste se dotazoval(i),jestli se
> pri kompilaci nebrali kernel-headers z jine verze nez kompiluji. Byl
> jsem poslan odkaz
> http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.2.tar.bz2, s
> dotazem,jestli jsem nepouzil tento kernel - a pokud ano,ze by meli byt
> vse ok,protoze v tomto baliku jsou vsechny potrebne soubory obsazeny.
> Tento balik jsem prave pouzil, proto jsem odpovidal : "Z toho plyne,
> ze je tedy vse v poradku".

V tom balíku jsou skutečně všechny hlavičkové soubory, to ale ještě
neznamená, že musí být nutně všechno v pořádku. Já tady mám třeba zdrojáky
standardního kernelu 2.2.16 a hlavičkové soubory k RH kernelu 2.2.16-3. RH
kernely patchuje a hlavičkové soubory nejsou shodné. Třeba cdrom.h
má v 2.2.16 délku 32038 bajtů a v RH 2.2.16-3 32131 bajtů a pozdější
datum. A teď demostrace, jak to udělat blbě:

[root na hackedhost /root]# cd /usr/src/
[root na hackedhost src]# rpm -qa | grep kernel-headers
kernel-headers-2.2.16-3
[root na hackedhost src]# ls -l linux-2.2.16/include/linux/cdrom.h
-rw-r--r--   1 root     root        32131 Jun 19  2000 linux-2.2.16/include/linux/cdrom.h
[root na hackedhost src]# rpm -e --nodeps kernel-headers
/usr/src/linux-2.2.16 nelze odstranit - adresář není prázdný
[root na hackedhost src]# rm -rf linux-2.2.16/
[root na hackedhost src]# bunzip2 -c /home/zaloha/kernel/linux-2.2.16.tar.bz2 | tar xf -
[root na hackedhost src]# chown -R root.root linux
[root na hackedhost src]# mv linux linux-2.2.16
[root na hackedhost src]# ls -l linux-2.2.16/include/linux/cdrom.h
-rw-r--r--   1 root     root        32038 Jun  7  2000 linux-2.2.16/include/linux/cdrom.h
[root na hackedhost src]# rpm -i /home/zaloha/kernel/kernel-headers-2.2.16-3.i386.rpm
[root na hackedhost src]# ls -l linux-2.2.16/include/linux/cdrom.h
-rw-r--r--   1 root     root        32131 Jun 19  2000 linux-2.2.16/include/linux/cdrom.h
[root na hackedhost src]#

Takže rozbalil jsem zdrojáky 2.2.16 a potom naistaloval balíček
kernel-headers-2.2.16-3, což je špatně, protože těď mám v include
hlavičkové soubory k mírně jinému kernelu a kdybych to chtěl kompilovat,
mohlo by to být ještě zajímavé (všechno to probíhá standarndě bez
chybových hlášek). Na kernel-headers je závislé glibc-devel, bez kterého
toho moc nezkompilujete, takže nějakou verzi kernel-headers máte na 99%
někde nainstalovanou taky.

> Ufff. Pokud tedy tento soubor neobsahuje "vse" potrebne pro
> kompilaci(nemyslim nastroje), pak to jiste v poradku neni, ale kde
> potom najdu opravdu balik, ktery bych mohl "jednoduse" skompilovat bez
> tohoz,abych k nemu tahal jeste kupu dalsich knihoven ? Sakra ted pisu
> jako nejakej BFU....mozna nic takovyho neni, berte to prosim jen jako
> dotaz,jestli neco takoveho existuje.

V http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.2.tar.bz2 jsou
všechny zdrojové a hlavičkové soubory, pak k tomu potřebujete nějaký C
kompilátor a standardní C knihovnu a hlavičkové soubory z ní
(glibc-devel).

> Nene, ja jsem vam to nechtel podstrcit jako vas nazor. Prijde mi dost
> dulezite,abyc pochpil podstatu problemu - pak uz s nim nebudu muset
> nikoho zatezovat. Me prislo divne,ze po ciste instalaci(RH) a ihned
> zapocate kompilaci(kernel) jsem na dvou stejne oznacenych
> distribucich(RH) dopadl dost odlisne. I pres to,ze verze kompilatoru

V nějakém předchozím mailu jste myslím psal, že máte přetaktovaného Durona
- hmm, takové počítače se chovají někdy dost divně, ono to třeba zdánlivě
normálně funguje, ale pak spustítě nějaký program, ve kterém je sekvence
instrukcí, která procesoru neudělá dvakrá dobře a v přetaktovaném stavu ji
někdy neprovede korektně a problém instalace v jednom ze tří prípadů
spadne by tomu celkem odpovídal. A nedal bych krk za to, že se nutně
muselo nainstalovat všechno korektně. Jo a podivné problémy při kompilaci
se taky objevují (ale spíš nedeterministicky).

> je naprosto shodna - chapu,ze jedna distribuce mohla byt nejak
> porusena/nekompletni, ale je mi divne,ze prave ta pozdejsi(tedy
> aktualne vystavena na internetu) me zlobi a ta puvodni jela OK.

No stavu "pořád to vypisovalo nějaké warningy a ne všechny moduly se
zavedou jak mají" bych teda OK neříkal :)

Jinak co říká rpm -qa | grep kernel ? Taky můžete zkusit:

1) rpm -e --nodeps kernel-headers
2) smazat adresář se zdrojáky kernelu
3) znovu rozbalit zdrojáky kernelu - možná budete muset udělat link
/usr/src/linux --> /usr/src/linux-2.4.2
4) zkusit to zkompilovat

Když to nepůjde, tak potom pátrat ve zdrojácích, kde je chyba.

J.G.

P.S.
Jestli to bylo těma hlavičkovýma souborama, tak má u vás za tak dlouhý
mail pivo :-)



Další informace o konferenci Linux