Toon posts:

Kernel recompile?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Daar ben ik weer... met nog een vraagje over Linux...

Ik heb nu dus een (bijna) spiksplinterschone RedHat7 install, en ik dacht 'goh laat ik mijn kernel eens recompilen' (ik heb een boek waar een en ander in uitgelegd staat).
Ik heb dus make xconfig gedaan, alles ingesteld (en natuurlijk ergens op een veilige plaats opgeslagen...) en vervolgens ben ik weer terug gegaan naar text mode. Dan een make dep en een make clean (is dat nou echt nodig?). Maar als ik dan make bzImage doe, wil ie niet compilen. Hij zegt iets over 'error ksyms.o(1)' (ofzo).
Het is overigens de bijgeleverde kernelversie (2.2.16-22) en de headerfiles stonden wel op de cd maar waren 2.4.0 ofzo... Ik heb het vermoeden dat die het probleem veroorzaken, maar om nou meteen 20 meg aan een nieuwe kernel te moeten downloaden... Bovendien zou je denken dat ze bij RedHat toch wel een werkende combinatie op de cds zouden zetten...

Can anyone help me (again :))?

  • vlabakje
  • Registratie: Juni 2000
  • Laatst online: 11-07 00:41
probeer het eens zonder de make clean

als dit hier staat heb ik een php-generated sig :)


Verwijderd

Topicstarter
same problem :(

  • _nethack
  • Registratie: September 2000
  • Laatst online: 18-08 19:05

_nethack

We're all MAD here

Probeer de kernel source rpm eens opnieuw te installeren. De header files staan nl. in dezelfde directory als de kernel source (alleen headers heb je nodig als je geen kernel wilt kunnen compilen maar wel andere software)
Als je eerst de 2.2.x kernel source hebt geinstalleerd, en daarna de 2.4.x header files is waarschijnlijk je kernel source f*cked up.

edit:

oh ja... was er niet iets met redhat 7.0 op dat gebied??? Hadden ze niet een foute devel versie van GCC meegeleverd waarmee je de kernel niet (goed) gecompiled krijg??

Sometimes you just have to sit back, relax, and let the train wreck itself


Verwijderd

klopt, bij redhat 7.0 zat een 'pre' gcc compiler. In de makefile van de kernel-source dus gcc -> kgcc van maken.

Verwijderd

Topicstarter
Dus gewoon zoeken naar 'gcc' (in de makefile) en dat veranderen naar 'kgcc'?

Ook gelijk maar nieuwe kernelsource dan :)

Verwijderd

Topicstarter
En dan zegt ie dat kgcc niet bestaat...

  • gekkie
  • Registratie: April 2000
  • Laatst online: 29-07 09:15
-make mrproper
-make menuconfig
-make dep
-make
-make install

en klaar is clara :)

(geem make clean na je make dep of make doen :) )

Verwijderd

Op zondag 04 maart 2001 22:29 schreef gekkie het volgende:
-make mrproper
-make menuconfig
-make dep
-make
-make install

en klaar is clara :)

(geem make clean na je make dep of make doen :) )
Zullen we dat maar even anders doen?

Make mrproper is alleen verstandig als je tussen verschillende kernelversies gaat compileren en je net een nieuwe versie hebt binnengehaald. Als je reeds met dezelfde source eenmaal een kernel hebt gecompileerd en je al eens "make mrproper" gedaan hebt, dan is "make clean", meer dan genoeg. Verder is een nadeel van make mrproper dat als je vanuit dezelfde kernelsource compileert als al eens eerder gedaan hebt, al je instellingen die je de keer ervoor gemaakt hebt via make (menu-,x-)config kwijt bent.

Het lijstje wordt dan:
make clean
make menuconfig of make xconfig of make config
make dep
make bzImage

Als je dingen als modules geconfigureerd hebt, nog gevolgd door:
make modules
make modules_install
Vergeet niet de "System.map" uit de source te kopieren naar /boot en het bestand bzImage in de directory arch/i386/boot vanuit de kernelsource directory naar je /boot directory. Vervolgens ff /etc/lilo.conf aanpassen aan de nieuwe situatie en als laatste even /sbin/lilo draaien.
Ik weet dat je dat laatste ook allemaal kan doen via "make bzLilo", maar meestal houdt je toch liever zelf de touwtjes in handen:)
Zeker als je een wat andere naamgeving wil gebruiken voor deze bestanden

Maar goed om even terug ontopic te komen.
De foutmelding bij het compileren dat ie kgcc niet kan vinden komt door het feit dat egcs niet geinstalleerd staat op je machine.

Er zijn twee dingen die je kan doen. De eerste die ik noem zou ik sowieso doen, wil je in het vervolg succesvol programma's compileren.

1) Vervang de brakke beta-versie (2.96.x) van gcc die Redhat erbij heeft gestopt|:( door de stable versie (op dit moment geloof ik 2.95.2.1). De beta-versie is veel te strict.

2) installeer egcs en verander zoals je inmiddels al gedaan hebt op de plaats waar de variabele "CC" wordt geinitialiseerd de waarde "gcc" door "kgcc"

Verwijderd

Topicstarter
Ondertussen heeft ie wel (zonder dat ik iets had veranderd...) kernel 2.4.2 gecompileerd.
Hij gaf wel veel warnings (over een preprocessor token :? - bij o.a. floppy.c, cdrom.c en usb.c).

Ik zal die egcs nog wel eens installeren + een andere versie van gcc.

Thanx voor de reacties btw.

edit:

Wat doet System.map eigenlijk?

Verwijderd

System.map bevat een lijst met kernel functies en hun adressen. Het wordt gebruikt voor debugging-processen.

Het bevat een tabel met symbolen die modules, die die interne symbolen nodig hebben, gebruiken.

Hoe het echt precies helemaal in elkaar steekt zou ik ook niet durven zeggen

  • gekkie
  • Registratie: April 2000
  • Laatst online: 29-07 09:15
Op maandag 05 maart 2001 01:51 schreef nelske het volgende:

[..]

Zullen we dat maar even anders doen?

Make mrproper is alleen verstandig als je tussen verschillende kernelversies gaat compileren en je net een nieuwe versie hebt binnengehaald. Als je reeds met dezelfde source eenmaal een kernel hebt gecompileerd en je al eens "make mrproper" gedaan hebt, dan is "make clean", meer dan genoeg. Verder is een nadeel van make mrproper dat als je vanuit dezelfde kernelsource compileert als al eens eerder gedaan hebt, al je instellingen die je de keer ervoor gemaakt hebt via make (menu-,x-)config kwijt bent.
klopt als een bus ... ware het niet dat er bij hem wat fout ging ... dus misschien wel handig om gewoon een zeer schone start te maken door een mrproper ... maar goed .. staat allemaal wel ergens in een "readme" of "install" filtje geleverd bij de source als het goed is ...

Verwijderd

Topicstarter
Ondertussen heb ik een werkende build van kernel 2.4.2 (joepie :)).
Maar... ik wil dus mijn nVidia module (NVdriver) updaten door de source rpm te downloaden, te compilen en te installeren, maar nu klaagt ie dat mijn kernelheaders niet helemaal in orde zijn. Voor de duidelijkheid: ik heb nu kernel 2.4.2 (waarvan de sources in mijn homedir/linux staan) en in /usr/src/linux alleen de include files van versie *2.4.2-1*. (kernel-headers-2.4.1-1.i686.rpm geloof ik). Waar haal ik nu de goeie headers vandaan? Gewoon de kernelsource daarheen uitpakken (na de andere headers gedelete te hebben)?

Sorry dat ik zo veel vraag, maar ik ben (en blijf waarschijnlijk nog wel een tijdje) een newbie in desperate need of assistance... ;)
Pagina: 1