Nieuwe kernel? Vragen om moeilijkheden!

door Maurice Heuveling

Tja, je schijnt er niet aan te ontkomen. Soms moet je patchen, soms moet je een compleet nieuwe kernel compileren... Wat een kernel is? Dat kun je hier duidelijk lezen.

Achtergrond

Ik heb een Celeron 300, welke ik in wilde richten als server. Ik had hier een basis Gentoo installatie opgezet, en was aan het zoeken naar informatie om er een echte server van te maken.

Mijn dagelijks werk doe ik op een notebook (momenteel nog hoofdzakelijk Windows XP Pro :( ), maar ook die dingen kunnen technische en/of mechanische problemen krijgen. Er is een knopje kapot, en wel diegene die de functie van de rechtermuistoets heeft. Lekker onwerkbaar, dus dit ding moet weg voor reparatie. Ikke bellen, krijg ik te horen dat Acer momenteel een maand(!!!) over reparatie doet :-O

Tja, je moet wel, dus de server moet dan maar tijdelijk geen server worden, want een maand zonder pc is een maand niet geleefd!

Gentoo stond er al werkend op met een 2.4.22 kernel. Werkt prima en hoefde ook geen grafische interface te hebben. Maar nu is het toch wel handig als ik grafisch kan werken! De 2.6 kernel is onlangs uitgekomen en er wordt gezegd dat ie ook sneller is geworden. Dus dan moest ik van me zelf maar eens de nieuwste 2.6 kernel installeren!

Aan de slag!

Als beginnend Linux gebruiker, heb ik tijdens de installatie automatisch de kernel laten configureren. Alles werkte, dus lekker laten staan. Ik heb/had nog geen enkele ervaring met compileren van een kernel, al ben ik niet bang om wat uit te proberen. Bovendien schijn je in Linux geen enkele fout te kunnen maken die je niet meer ongedaan kunt maken, dus een goede reden om te beginnen!

Natuurlijk begin je met inlezen. Welke kernel wil je gebruiken, welke kernels worden er binnen jouw distributie aangeboden en hoe moet je ze installeren? Gewapend met een heleboel tabs open in Mozilla Firefox (op mijn notebook), ben ik maar begonnen.

Ik dacht dat de mm-sources (momenteel binnen Gentoo in een 2.6.5-rc1 versie) wel leuk zou zijn, dus ik geef de opdracht tot:

emerge mm-sources

Enige tijd later staat er ergens op mijn hardeschijf dus een nieuwe kernel te wachten om gecompileerd te worden.

Gentoo biedt de mogelijkheid om met een programma dat "Genkernel" heet de kernel automatisch samen te stellen. Ik ben eigenwijs en wil dat dus handmatig doen! Tijdens mijn zoektocht had ik gelezen dat je op 3 verschillende manieren je kernel kan samenstellen.

  1. make config: je krijgt dan via de console per onderdeel de vraag wat je ermee wilt doen.
  2. make menuconfig: je krijgt dan een grafisch menu te zien (gebaseerd op ncurses), waar je alle kanten op kunt bladeren en aanpassen. Een stuk vriendelijker dan methode 1 dus.
  3. make xconfig: je kunt dan vanuit een window (mits je een grafisch systeem hebt) grafisch je kernel samenstellen. Lijkt me als visueel ingesteld iemand wel errug mooi!

Inmiddels had ik al wel een werkend grafisch systeem, te weten Fluxbox. "Make xconfig" ingetikt op de console die ik geopend heb binnen Fluxbox en krijg nu een mooi schermpje te zien waarin ik me uit kan leven.


make xconfig

Zo gezegd, zo gedaan en ik heb een hoop vinkjes gezet, verwijderd en het n en ander in modules gezet. Toch vond ik het allemaal niet zo overzichtelijk werken... :( Maar goed, ik denk toch een aardige kernel te hebben samengesteld.

De volgende stap is om het compileren te laten beginnen. De commando's die je moet gebruiken voor de 2.6 kernel zijn ietwat gewijzigd ten opzichte van de 2.4 kernel. Nu volstaat een:

make && make modules_install

Op de console zie ik een hele hoop actie en enige tijd later wordt ik geprompt dat Gentoo vindt dat ie klaar is.

Nu moet dus de kernel zelf nog genstalleerd worden. Dat wil zeggen, je moet er nog voor zorgen dat de nieuwe kernel gebruikt wordt als je de pc opstart. Er is een gezegde die zegt: "Gooi geen oude schoenen weg vr je nieuwe hebt", dus zorg je er wel voor dat je oude kernel bewaard wordt. Er moest ook een mogelijkheid zijn om de oude kernel ook in je bootloader (in mijn geval GRUB) te laten staan, zodat je direct de oude kernel kan booten. Ik wist zo gauw niet hoe en stond te popelen om de nieuwe kernel te gebruiken!

Toch eerst een backup gemaakt van de oude kernel met:

mv /boot/bzImage /boot/bzImage.old

Een volgende stap is dan het kopieren van de nieuwe kernel image naar de boot partitie door middel van:

cp /usr/src/linux-beta/arch/i386/boot/bzImage /boot

Mijn bootloader hoefde ik niet te veranderen, dus rebooten!

Kernel panic!!! Krijg een melding dat ie mijn ReiserFS partitie niet kan mounten!

Shit, dat is mijn root-partitie... Ik heb toch wel het ReiserFS bestandssysteem aangezet? Of niet?

Maar nu kan ik dus niets met het systeem! Had ik nu toch maar de oude kernel in mijn bootloader gezet :(

Knoppix is here to save the world!

Ik heb diverse malen gelezen dat Knoppix uitermate geschikt is om systemen te redden als deze niet werken. Gelukkig heb ik ooit zo'n cd'tje gedownload, dus nogmaals rebooten met de cd-rom in de lade.

Grafisch kan ik weinig met Knoppix op deze oude Celeron met 4-speed cd-romspeler, het inlezen gaat tergend langzaam. Gelukkig kun je door middel van "Knoppix 1" op de bootprompt in een speciale status opstarten die echt alleen maar basis is en dus met de console. Consoles zijn niet eng, maar je moet wel weten wat je in moet typen.

Na wat googelen vond ik een stukje text waarmee je kon "chrooten", naar wat ze zeggen overschakelen naar het systeem op je hardeschijf of zo iets vaags.

Ik had niets te verliezen, dus de volgende commando's gebruikt:

mount /dev/hda3 /mnt/hda3

waarmee ik mijn rootpartitie mount.

chroot /mnt/hda3

zorgde ervoor dat ik me daadwerkelijk op mijn hardeschijf bevond!

Nu moest ik nog mijn bootpartitie mouten, dus

mount /dev/hda1 /boot

zorgde daarvoor.

Als eerste heb ik uitgezocht hoe ik de 2.4.22 kernel in mijn bootloader kan opnemen. De aanpassing was ergelijk simpel, waarom had ik dat niet eerder gedaan? Het is gewoon een kwestie van de oude regels kopiren en een verwijzing aan te passen van "bzImage" naar in mijn geval bzImage.old (ik weet het, dit kan netter).

Vervolgens heb ik maar "make menuconfig" gebruikt om de nieuwe kernel aan te passen. Ah, dat ziet er overzichtelijk uit!


make menuconfig

Kijken bij filesystems leert me dat ik ReiserFS als module heb aangevinkt!!! Dat was niet goed zichtbaar vanuit "xconfig"!!! grrr... Vlug aangepast, de kernel opnieuw laten compileren en opnieuw installeren. Reboot time!

2e poging

Tadaa!!! Hij start door! Hmm, ik zie nog wel ff een error voorbij flitsen..., er is een fout bij bringing up eth0, dus mijn netwerkkaart werkt niet. Gelukkig boot ie wel verder en kan ik inloggen als root. Opnieuw "make menuconfig" leert me dat ik de verkeerde netwerkaart heb aangevinkt :(. Gauw weer veranderd en nogmaals het hele riedeltje doorlopen van compileren, installeren en opnieuw opstarten.

3e poging

Yes!!! Eth0 is up!!! Ik kan nu gewoon pingen wat ik wil, dus operatie reparatie is gelukt. Trots zie ik met [code]uname -a[/code] dat ik nu werk met kernel 2.5.5-rc1-mm1 :) . Nu nog wat met de instellingen van de kernel prutsen tot ik het geheel optimaal denk te hebben. Het gaat hierbij om trial and error, maar ik heb nu in ieder geval een werkende basis.

En verder?

Tja, ik moet zometeen kunnen internetten, mailen, mijn instant message contacten bijhouden en toch ook wel brieven kunnen typen. Fluxbox staat er reeds op. "Emerge mozilla-firebird" levert mij een zeer prettige internetbrowser op. Maar ik wil toch eigenlijk meer... Op forum.nedlinux.nl las ik dat iemand Slackware met een 2.6 kernel en KDE 3.2 heeft draaien op een Celeron 366. Ik ga het proberen met een Celeron 300.

Sado-masochistisch? Geen idee, maar daar kom ik dan wel achter...

Emerge KDE

en hij staat nu al een dag te compileren... Hoelang moet ik nog?

De geleerde lessen

Als je fouten maakt, leer er dan van! Hier volgen mijn lessen:

  1. Bereid je goed voor. Zoek en lees documentatie die jou kan helpen.
  2. Zorg dat je de oude kernel opneemt in je bootloader vrdat je een nieuwe kernel installeert.
  3. Heb altijd een live-cd zoals Knoppix bij de hand.
  4. Xconfig is voor mij niet handig, gebruik voortaan menuconfig.
  5. Zorg dat je vooraf precies weet welke hardware je hebt.
  6. Probeer, probeer en win!
  7. Geeft nooit op!

En vindt je zelf een kernel compileren toch te eng? Gebruik dan een hulpmiddel die het automatisch voor je doet. Het resultaat is een iets minder getuned kernel, maar hoogstwaarschijnlijk wel een die gelijk werkt.

 

© 2002-2008 - Linux-box.nl en bijdragende auteurs