original in nl Philip de Groot
Ik promoveer binnenkort aan de Universiteit van Nijmegen op het onderwerp chemometrie. Momenteel werk ik als bioinformaticus op het AMC in Amsterdam en onderhoud daarnaast mijn eigen (Nederlandstalige) Linux beginnerspagina: een van de vele initiatieven voor en door Linux adepten. Ik werk vaak en graag met Linux en schrijf regelmatig mijn ervaringen op.
Zo meteen zul je leren hoe je een eigen kernel binnenhaalt, configureert, compileert en installeert.
De indeling van het artikel is als volgt. Eerst wordt de installatie van de kernel broncode besproken (en waar deze source code op internet gevonden kan worden). Daarna wordt de grafische configuratie van de kernel besproken m.b.v. de screendumps. Als de kernel is geconfigureerd, vindt de uiteindelijke compilatie plaats. De gecompileerde kernel wordt daarna nog niet gebruikt! De kernel moet nog eerst geïnstalleerd worden voor gebruik met de bootmanager 'lilo' of gekopiëerd worden naar de partitie waar u 'loadlin' draait (met loadlin kunt u Linux opstarten onder DOS/Windows). Voor gebruik van de bootmanager dient het bestand '/etc/lilo.conf' aangepast te worden en moet het programmaatje 'lilo' gedraaid worden. Dan zijn er nog een aantal specifieke zaken, zoals PCMCIA (specifiek voor laptops). PCMCIA (kleine, creditcard-achtige insteekkaarten met bijvoorbeeld netwerkaansluitingen) is pas sinds kernel 2.4.x in de kernel zelf ondersteund. Voor oudere kernels moet PCMCIA apart gecompileerd en geïnstalleerd worden. Voor SuSE linux is er nog een ander specifiek probleem, namelijk de geluidsondersteuning via de ALSA drivers. Deze drivers zijn niet in de kernel opgenomen en moeten ook opnieuw gecompileerd en geïnstalleerd worden, omdat de originele drivers meestal niet meer werken. Alsof dat nog niet genoeg is kunt U met name bij de overgang naar een nieuwe kernel reeks, bijvoorbeeld van kernel 2.2.x naar 2.4.x, problemen krijgen met een aantal noodzakelijke kernel-utilities, de 'modutils' genaamd. Deze utilities bevatten de programmaatjes om bijvoorbeeld een kernel-module in te kunnen laden (wat modules zijn wordt onder Figuur 3 uitgelegd). Soms kan een nieuwe kernel niet met de oude 'modutils' overweg en dient U een recentere versie te compileren en te installeren. Dit laatste komt echter zelden voor, maar het is wel zo correct om deze 'valkuil' even aan te geven!
Als u nauwgezet de aanwijzingen in dit artikel opvolgt, kan er bijna niets foutgaan. De nieuwe kernel wordt aan 'lilo' toegevoegd of gekopiëerd naar de 'loadlin' partitie, waardoor u in geval van nood nog altijd de originele kernel kan opstarten en daarmee kan proberen het probleem op te lossen. Zelfs als u problemen zou ondervinden met de 'modutils' bij een nieuwe kernel kan u nog altijd de originele kernel opstarten en het probleem verhelpen, bijvoorbeeld door de 'modutils' alsnog te compileren en te installeren. Alle nieuwe versies van de 'modutils' zijn 'downwards compatible' met oudere kernels, waardoor ze altijd werken.
De kernel broncode staat doorgaans in de directory '/usr/src/linux/' geïnstalleerd, waarbij de directory 'linux' de huidige kernel source bevat. Het is altijd verstandig om deze kernel broncode te bewaren, bijvoorbeeld door de linux-directory te hernoemen:
cd /usr/src mv linux linux-2.2.18 (indien uw broncode versie 2.2.18 hebt)
cd /usr/src cp ~/linux-2.4.6.tar.bz2 ( ervan uitgaande dat desbetreffend bestand ) ( in uw home-directory ('~') staat ) bzip2 -d linux-2.4.6.tar.bz2 ( dit kan even duren ) tar -xvf linux-2.4.6.tar mv linux linux-2.4.6 ln -s /usr/src/linux-2.4.6 /usr/src/linux
cd /usr/src/linux make xconfig ( zie Figuur 1 )
Figuur 1: | De grafische interface voor het instellen van uw Linux kernel na de opdracht 'make xconfig'. |
Dit is het grafische hoofdmenu waarmee u de kernel kunt instellen. U moet op de verschillende opties klikken om de kernel verder in te stellen. Door te klikken op 'Save and Exit' worden uw instellingen definitief opgeslagen en kunt u de kernel echt compileren en installeren (zie Figuur 40). Zover zijn we nu echter nog niet.
Uiteraard is er bepaalde hardware die u wel heeft, maar die niet in dit voorbeeld behandeld wordt. Desalnietemin wordt het nu wel duidelijk hoe u zelf de hardware kunt instellen (en kan u controleren of bepaalde hardware ondersteund wordt in de kernel door zelf te gaan zoeken).
Figuur 2: | Het instellen van de 'code maturity level options'. |
Figuur 3: Het instellen van de
'loadable module support'.
(vanaf hier worden de screenshots gelinkt, je kan ze openen in een ander
venster om ze te bekijken)
Modules zijn stukjes kernel code (bijvoorbeeld drivers) die los
meegecompileerd worden. Dit betekent dat de code niet in de kernel zelf
zit, maar wel ingeladen kan worden (en dus beschikbaar wordt gemaakt aan de
kernel) op het moment dat u de code nodig heeft. Algemeen wordt aangeraden
om zoveel mogelijk kernel-code als module te compileren, omdat dan een
kleine, stabiele en snelle kernel overblijft. Maak niet de fout om het
ext2-bestandssysteem (of ReiserFS als u dat reeds gebruikt) als module te
compileren (zie Figuur 32)! De kernel kan dan zijn eigen bestandsysteem
niet lezen (dus geen modules of configuratiebestanden laden), hetgeen toch
wel een voorwaarde is voor een correct opstarten van Linux! U zult zien dat
ik persoonlijk nog relatief weinig met modules werk. Ik ben van mening dat
een lopende kernel al de hardware direct moet kunnen aanspreken (zonder
modules in te hoeven laden), vandaar. Dit is echter een kwestie van
persoonlijke voorkeur.
Figuur 4: Het instellen van de 'processor type and
features'.
U selecteert het type processor dat u heeft en geeft aan of de genoemde
opties voor u van toepassing zijn of niet. De '/dev/cpu' opties zijn erg
geavanceerd en worden door gewone gebruikers niet toegepast. Deze mag u
rustig uit zetten. 'High Memory Support' gaat pas spelen als u meer dan 1
gigabyte RAM computergeheugen hebt (NIET de ruimte op de harde schijf) en
staat normaal gesproken ook uit. De optie 'Math Emulation' moet u aanzetten
als u Linux draait op een 386 of 486SX systeem (dus zonder numerieke
coprocessor). Zonder coprocessor kan Linux niet draaien en moet u de
emulatie aanzetten. Nagenoeg alle moderne processoren hebben een
geïntegreerde numerieke coprocessor, dus deze optie staat standaard
uit. Het aanzetten van 'MTRR' is met name nodig als u gebruik maakt van een
videokaart die is aangesloten via een PCI of AGP bus. Dit om de snelle
datatoevoer beter te laten verlopen. Alle moderne systemen gebruiken een
videokaart via de PCI of AGP bus, dus deze optie dient meestal aan te
staan. Het is altijd veilig om deze optie aan te zetten, ook als uw systeen
geen PCI of AGP bus gebruikt voor de videokaart. Symmetric multi-processing
support (SMP) speelt pas als u een moederbord hebt met meer dan 1
hoofdprocessor (bijvoorbeeld een moederbord met 2 pentium II processoren
erop). Deze optie zorgt ervoor dat de kernel beide processoren zo optimaal
mogelijk belast. De laatste optie (APIC) is ook meestal van toepassing op
multiprocessor systemen en staat normaal gesproken uit.
Figuur 5:
De algemene kernel instellingen.
Hier specificeert u een aantal algemene instellingen van de kernel. Iedereen
zet altijd 'Networking support' aan omdat u dit altijd nodig heeft,
bijvoorbeeld voor internet. Linux is een netwerk geörienteerd systeem,
dat zonder deze optie niet goed kan draaien. Netwerk ondersteuning is ook
voor allerlei andere handelingen nodig die ogenschijnlijk weinig met
netwerken te maken hebben. Vandaar dat bij een uitgeschakelde 'Network
support' u het risico loopt dat de kernel zich niet laat compileren.
Kortom: aan laten staan! Alle moderne systemen gebruiken de PCI bus, dus de
PCI-gerelateerde opties zet u ook aan. De grijze tekst 'PCMCIA/CardBus
support' kunt u niet selecteren omdat u hebt aangegeven geen experimentele
code te willen gebruiken (zie Figuur 2). Als u een laptop gebruikt, kunt u
'PCMCIA/CardBus support' in de kernel gebruiken om bijvoorbeeld een netwerk
of een modem insteekkaart operationeel te maken (zie ook het kopje 'pcmcia
ondersteuning (laptops)'). 'System V IPC' stelt programma's in staat om te
communiceren en te synchroniseren, 'BSD process accounting' bewaart
informatie als lopende processen beëindigd worden, zoals de foutcode
waarmee een proces stopt en 'Sysctl support' geeft programma's de
mogelijkheid om bepaalde kernel-instellingen te wijzigen zonder de kernel
opnieuw te compileren of het systeem te herstarten. Uiteraard staan deze
opties normaal gesproken aan. De 'kernel core (/proc/kcore/) format' staat
voor moderne Linux distributies op 'ELF'. 'ELF' is het formaat waarin
verschillende systeembibliotheken zijn geschreven (stukjes programmacode
die voor het systeem beschikbaar zijn en door programma's aangeroepen
kunnen worden; vergelijkbaar met de windows .dll bestanden). 'ELF' is de
opvolger van het verouderde 'a.out' formaat en alle moderne Linux
programma's hebben de ELF bibliotheken nodig. Helaas is het voor sommige
verouderde programma's onontbeerlijk om de ondersteuning van het 'a.out'
formaat mee te nemen. Een voorbeeld hiervan is 'Word Perfect 8 voor
XWindows'. Dit is een echte XWindows/Linux applicatie, maar slechts
beschikbaar in het verouderde 'a.out' formaat. Zonder ondersteuning van het
'a.out' formaat, bijvoorbeeld als module, kan 'xwp' eenvoudigweg niet
draaien. 'MISC' heb ik ook meegenomen als module. In principe gebruik ik
dit niet, maar het is altijd handig om de code beschikbaar te hebben (met
name als u vaak 'java' of 'python' gebruik of als u de DOS emulator
'DOSEMU' vaak aanspreekt). 'Power Management support' en 'Advanced Power
Management BIOS support' (niet afgebeeld in Figuur 5) heb ik aanstaan om de
kernel in staat te stellen de computer automatisch uit te schakelen bij het
afsluiten van Linux. Bij de moderne ATX moederborden moet u minimaal deze
opties meecompileren om de computer automatisch uit te kunnen schakelen. De
overige power management functies staan uit omdat ze normaal gesproken niet
werken onder XWindows (dat bij mij standaard opgestart wordt als ik Linux
draai). In KDE en Gnome zijn standaard power management functies aanwezig
die u kunt instellen.
Figuur 6: Het instellen van de 'Memory Technology Devices'.
Deze optie hebt u nodig om bijvoorbeeld 'flash kaartjes' uit te kunnen lezen
onder Linux. Op dergelijke kaartjes staan bijvoorbeeld foto's die zijn
gemaakt
met een digitale fotocamera. U kunt dus onder Linux de kaartjes inlezen
(als u daarvoor de geschikte hardware hebt) en de foto's als .jpg-bestanden
naar de harde schijf kopiëren. Voor een normaal gebruik van de kernel
hebt
u deze optie niet nodig. In een later stadium kan de gewenste ondersteuning
altijd nog meegecompileerd worden.
Figuur
7: Het instellen van de parallelle poort.
De parallelle poort wordt normaal gezien gebruikt om printers en scanners
op aan te sluiten (voordat de USB technologie er was). Ikzelf heb een
printer aan de parallelle poort hangen en wil dus graag dat deze poort
onder Linux beschikbaar is. Let op: door het instellen van de parallelle
poort hebt u nog niet de mogelijkheid om te printen ingesteld (zie Figuur
28)!
Figuur 8: Het instellen van 'Plug & Play'.
Nagenoeg iedereen heeft een 'Plug & Play' systeem en wilt dus ook
ondersteuning hiervoor. Door deze optie aan te zetten kan de kernel de
'Plug & Play' devices zelf configureren en beschikbaar maken aan het
besturingssysteem. Soms is het noodzakelijk om in het BIOS de optie 'Plug &
Play OS' aan te zetten omdat anders Linux (maar ook Windows) de 'Plug &
Play' devices niet zelf kan instellen. De optie 'ISA Plug & Play support'
verwijst naar ISA kaarten, zoals de sound blaster AWE64, die wel 'Plug &
Play' zijn, maar die gebruik maken van de ISA bus. Voor de ISA bus is nooit
een 'Plug & Play' definitie gemaakt, waardoor het automatisch instellen van
deze kaarten vaak lastig is. Voordat kernel 2.4.x werd gebruikt moesten
Linux gebruikers het programma 'isapnp' aanroepen tijdens het opstarten
(uit het pakket isapnptools, doe rpm -qil isapnptools om de
bestanden hiervan te bekijken).
Dit programmaatje las het bestand '/etc/isapnp.conf' in met daarin alle
poorten, adressen en interrupts die door de desbetreffende kaarten werden
gebruikt. Als 'isapnp' niet werd gedraaid of als het bestand
'/etc/isapnp.conf'
niet correct was, was de kaart niet beschikbaar voor Linux en werkte
bijvoorbeeld het modem, netwerkkaart of de geluidskaart niet. Bovenstaande
procedure is nu geautomatiseerd door de optie 'ISA Plug & Play support' aan
te zetten (het bestand '/etc/isapnp.conf' wordt niet meer gebruikt; de
instellingen worden automatisch correct gedetecteerd). Onder SuSE 7.1 moest
ik na het compileren van kernel 2.4.x het bestand '/etc/isapnp.conf'
hernoemen
(in bijvoorbeeld '/etc/isapnp.conf.old') omdat zowel de kernel als 'isapnp'
dezelfde resources claimden met alle gevolgen vandien. Onder SuSE 7.1 (en
oudere versies) wordt 'isapnp' namelijk automatisch geactiveerd tijdens het
opstartproces (ook al heeft de kernel reeds de benodigde
ondersteuning). Gelukkig zijn deze problemen enkel van toepassing op oudere
systemen, daar nieuwere distributies standaard de isapnptools niet meer
gebruiken.
Figuur 9:
Het instellen van 'block devices.
Nagenoeg iedereen zal een floppy diskette willen gebruiken, dus de
bovenste optie staat aan (of in mijn geval als module geselecteerd).
Als er een verzoek wordt gegeven tot het benaderen van de floppy, dan
laadt de kernel automatisch de benodigde module (als uw distributie het
bestand '/etc/modules.conf' of '/etc/conf.modules' goed heeft
geconfigureerd,
wat normaal gesproken altijd het geval is). U hebt daar als gebruiker geen
omkijken naar, op voorwaarde dat u de instellingen in Figuur 3 correct hebt
overgenomen. Om de floppy te kunnen benaderen moet de kernel wel het floppy
bestandsysteem kunnen lezen. Daarvoor is het belangrijk dat u ook Figuur 32
correct overneemt. De overige opties spelen als u bijvoorbeeld gebruik
maakt
van IDE opslagmedia die via uw parallelle poort benaderd worden. Deze
opties
staan normaal gesproken uit, met wellicht de 'loopback device support' als
uitzondering. Als u CD's wilt branden onder linux maakt u meestal
eerst een image van de CD voordat u de CD daadwerkelijk brandt. Om de
inhoud
van zo'n image te kunnen bekijken, hebt u de 'loopback device' nodig.
Ikzelf
heb deze optie (5e regel van onderen) als module geselecteerd (niet
weergegeven
in Figuur 9).
Figuur 10: Het instellen van 'multiple devices'.
Raid en LVM ondersteuning worden normaal gesproken niet door Linux
thuisgebruikers toegepast. Raid houdt in dat het systeem 2 (of meer) harde
schijven bevat, waarop de informatie gelijktijdig wordt opgeslagen. Als 1
schijf crasht, draait de andere schijf vrolijk door en het systeem blijft
overeind. LVM houdt in dat het mogelijk is om bijvoorbeeld een harde schijf
erbij te plaatsen op zodanige wijze dat een bestaande partitie
ogenschijnlijk groter wordt. In de praktijk betekent dit dat u niet opnieuw
hoeft te partitioneren en een oude (bijvoorbeeld te kleine) partitie niet
hoeft te kopiëren naar de nieuwe partitie. Padnamen blijven ook
ongewijzigd, enzovoorts. Op zich een handige mogelijkheid, maar niet voor
de 'normale thuisgebruiker'.
Figuur 11: Het instellen van 'networking options'.
De optie 'Packet Socket' hebt u nodig om met netwerkonderdelen te kunnen
communiceren zonder dat er een netwerk protocol geïmplementeerd is in
de kernel. Over deze optie kan ik kort zijn: altijd selecteren! De meeste
opties staan uit, tenzij u bepaalde netwerkondersteuning nodig heeft. Ik
heb bijvoorbeeld 'Network packet filtering (replaces ipchains)'
geselecteerd omdat ik de standaard meegeleverde SuSE firewall gebruik. Een
firewall beschermt uw computer voor aanvallen van buitenaf, bijvoorbeeld
vanaf het internet. Voorwaarde is wel dat u de firewall goed hebt
geconfigureerd. Het spreekt voor zich dat het feit dat de beveiliging op
kernel-niveau plaatsvindt grote voordelen heeft! De nadere configuratie van
'network packet filtering' staat in Figuur 12 uitgelegd. 'Unix domain
sockets' hebt u nodig om netwerk verbindingen tot stand te brengen. Echter:
als u deze optie niet activeert, kan XWindows ook niet draaien. XWindows
gebruikt namelijk automatisch Unix sockets. Kortom: deze optie moet altijd
aan staan! 'TCP/IP networking' bevat de protocollen die op internet en ook
vaak op interne netwerken worden gebruikt. Normaal gesproken wilt u TCP/IP
ondersteuning geactiveerd hebben. Als u het moeilijk vind om te beslissen
of u een optie wel of niet moet selecteren, kunnen de helpteksten uitkomst
bieden. Bij twijfel is het mogelijk om in eerste instantie ondersteuning
mee te compileren en in een latere testfase weer te verwijderen. Bepaalde
opties als module compileren is natuurlijk ook een goede oplossing.
Figuur 12: Het instellen van het 'IP netfilter'.
Voor SuSE Linux is het voor een correcte werking van de firewall
noodzakelijk om de 'terugwaartse' (backwards) ondersteuning voor 'ipchains' in te
schakelen. Vandaar. Zie de handleiding van uw distributie voor informatie
over uw eigen instellingen (indien u een firewall gebruikt).
Figuur 13: Het instellen van 'telephony support'.
Dit is alleen belangrijk als u een telefonie-insteekkaart in uw computer hebt
zitten, bijvoorbeeld om telefoongesprekken over internet te kunnen voeren.
Voor de meeste thuisgebruikers staat deze optie uit.
Figuur 14: Het instellen van 'ATA, IDE, MFM en RLL support' (harde schijf communicatie protocollen).
Bijna iedereen heeft deze protocollen nodig om zijn harde schijven aan te
kunnen sturen, uitgezonderd systemen die louter SCSI-schijven hebben. Voor
de meeste gebruikers zal deze optie geactiveerd zijn. Als u klikt op de
regel eronder, krijgt u een submenu met daarin een aantal opties. Deze
opties worden hieronder besproken. In totaal zijn er maar liefs 3
screenshots gemaakt. Dit onderdeel is uiterst belangrijk en dient u
zorgvuldig in te vullen!
Figuur 15: Het instellen van 'ATA, IDE, MFM en RLL support': screenshot 1.
Iedereen die een apparaat via een IDE/ATAPI interface aanstuurt selecteert
de bovenste optie. Dit kunnen zijn: harde schijven, maar ook tape
streamers, ZIP diskette stations, CD lezers en CD branders. Alle moderne
computers hebben een IDE/ATAPI interface, dus standaard staat de bovenste
optie aan. De optie 'include IDE/ATA-2 DISK support' zorgt voor
ondersteuning van de harde schijven in een systeem. Deze optie dient dus
altijd aan te staan, tenzij u een SCSI-systeem hebt.
Figuur 16: Het instellen van 'ATA, IDE, MFM en RLL support': screenshot 2.
De optie 'include IDE/ATAPI CDROM support' zet u normaal gesproken aan als u
een ATAPI CDROM-drive hebt. Als u een CD-brander hebt, is het ook mogelijk
om IDE/ATAPI CDROM's te benaderen via SCSI emulatie. Echter, in de praktijk
levert dit vaak problemen op, bijvoorbeeld foutmeldingen tijdens het
mounten van CD's of tijdens het starten van de CD speler voor het
beluisteren van audio CD's. De beste methode is om beide opties, 'include
IDE/ATAPI CDROM support' en 'SCSI emulation support' aan te zetten, zoals
ook is aangegeven in Figuur 16. Door een aanpassing in '/etc/lilo.conf' kan
het apparaat aangewezen worden waarvoor de SCSI-emulatie van toepassing is
(meestal de CD-brander). De aanpassing betreft de toevoeging van de regel
'append="hdd=ide-scsi",' zie ook onder het kopje 'Lilo configureren.'
Aangezien ik een interne ZIP-drive heb die via een ATAPI interface met mijn
moederbord communiceert, heb ik de optie 'include IDE/ATAPI FLOPPY support'
aanstaan. Deze optie hebt u ook nodig om andere floppy-achtige drives te
activeren, zoals een LS120-drive. De meeste moederborden gebruiken 'PCI
IDE' om de harde schijven, cdroms en floppies aan te spreken, dus normaal
gesproken staat deze optie aan, evenals de twee mogelijkheden die het
gebruik van DMA mogelijk maken. DMA geeft apparaten direct toegang tot
het interne geheugen van de computer (dus zonder tussenkomst van de
processor), waardoor de IDE schijven sneller te benaderen zijn.
Normaal gesproken wilt u dat erg graag! De optie 'sharing PCI IDE interrupts
support' staat uit omdat u normaal gesproken deze optie niet nodig heeft.
Sommige IDE controllers staan het toe dat hun interrupts gedeeld wordt met
een ander computeronderdeel, bijvoorbeeld een exotische netwerkkaart.
Aangezien het delen van IDE interrupts prestatieverminderingen van de
gekoppelde schijven tot gevolg heeft, wilt u dit normaal gesproken niet
(uitgezonderd bij ernstige hardwareproblemen waarbij het delen van
interrupts de enige oplossing is).
Figuur 17: Het instellen van 'ATA, IDE, MFM en RLL support': screenshot 3.
Ik heb een Pentium II moederbord met een Intel chipset, dus uiteraard wil ik
de specifieke ondersteuning van deze chipset kunnen gebruiken. Als u zelf
de kernel opties invult, kunt u kiezen uit andere chipsets die niet in de
screenshot (Figuur 17) zijn opgenomen.
Figuur 18: Het instellen van 'SCSI support'.
Als u een SCSI kaart hebt, dient u uiteraard de opties te selecteren die u
nodig heeft. In bovenstaande screenshot staan alleen de opties die u moet
selecteren om uw ATAPI CD brander te activeren als u 'SCSI emulation
support' hebt geactiveerd (Figuur 16).
Figuur 19: Het instellen van 'I2O device support'.
Als u een I2O interface in uw computer heeft, dient u de benodigde selecties
te maken. Normaal gesproken heeft u dit niet en schakelt u 'I2O device
support' gewoon uit.
Figuur 20: Het instellen van 'network device support'.
Mijn ervaring is dat de kernel weigert te compileren als 'network device
support' uitstaat. Deze optie dient u dus altijd aan te zetten en de dummy
driver dient u ook altijd te selecteren (al dan niet als module). De dummy
driver wordt vaak gebruikt om Linux goed te laten draaien als er geen
fysiek netwerk aanwezig is, zoals bij thuisgebruikers vaak het geval
is. Ook als er wel een fysiek netwerk aanwezig is heeft komt de dummy driver nog
vaak van pas. In dit grafische menu kunt u ook selecteren wat voor type
netwerk en netwerkkaart u heeft. Een voorbeeld wordt in Figuur 21
uitgewerkt. Let op: als u wilt internetten via een modem dient u
ppp-support aan te zetten en één van de twee opties 'PPP support for async
serial ports' (COM poorten) of 'PPP support for sync tty ports' (voor
gehuurde snelle verbindingen over bijvoorbeeld een SyncLink adapter) te
selecteren. Doet u dit laatste niet dan krijgt u van de kernel de
foutmelding dat de ppp module niet bestaat (terwijl die wel is aangemaakt),
wat het erg lastig maakt de echte oorzaak te achterhalen. De beide
compressie keuzes kunt u zonder problemen selecteren. Als de kernel ze
nodig heeft worden ze gebruikt en anders niet.
Figuur 21: Het instellen van een 'ethernet device'.
In mijn geval is er sprake van een '10 of 100 MBit netwerkkaart' van het
merk '3COM'. De netwerkkaart chipset die in mijn situatie gebruikt wordt is
de '3c509/3c529'. Aangezien ik geen fysieke verbinding heb met een netwerk
(ik heb een netwerkkaart, maar al het netwerkverkeer loopt bij mij over een
modem) heb ik de driver als module gecompileerd (voor het geval ik de
netwerkkaart ooit eens nodig mocht hebben). Uiteraard selecteert u het type
netwerk en de netwerkkaart die u heeft; via uw Linux configuratie
programma's ('yast2' onder SuSE) moet u dan nog de netwerkverbinding zelf
correct configureren.
Figuur 22: Het instellen van 'amateur radio support'.
Als u gebruik wilt maken van 'amateur radio support' zet u deze optie aan en
selecteert u de benodigde driver. Normaal gesproken wordt deze optie niet
gebruikt.
Figuur 23: Het instellen van (draadloze) infrarood ondersteuning.
Als u een draadloos apparaat hebt, bijvoorbeeld een draadloze muis, dient u
hier de infrarood ondersteuning aan te zetten en de driver te
selecteren die u nodig hebt. De meeste desktop systemen hebben geen
draadloze muis of toetsenbord en deze optie is dus meestal niet van
toepassing.
Figuur 24: Het instellen van de ISDN ondersteuning.
Als u een ISDN-kaart in uw systeem hebt zitten, dient u hier de
ondersteuning voor deze kaart te selecteren. Het is belangrijk te weten wat
voor soort ISDN-kaart u hebt (chipset etc.) zodat u de juiste driver kan
kiezen.
Figuur 25: Het instellen van 'old CDROM drivers'.
In oudere systemen, bijvoorbeeld 486 of zelfs 386 systemen, is de CDROM
drive niet via de harde schijf IDE (ATAPI) controller aangesloten, maar via
een geluidskaart of een speciale insteekkaart. Om deze oude CD-drives te
kunnen gebruiken, dient u de desbetreffende driver te selecteren. Voor
moderne systemen is deze optie achterhaald (en dus overbodig).
Figuur 26: Het instellen van 'input core support'.
Dit is een van de belangrijkste uitbreidingen in de 2.4.x kernels: USB
ondersteuning. Het huidige kernel onderdeel is een 'tussenlaag' tussen de
kernel en sommige USB apparaten. In Figuur 38 ziet u de mogelijkheid om USB
apparaten te selecteren. In de help-teksten van sommige USB apparaten
(Figuur 38) staat aangegeven of u de 'input core support' nodig hebt.
Indien dit het geval is, dient u de huidige optie aan te zetten. Zoals
gezegd is dit onderdeel een 'tussenlaag' tussen de kernel en de
uiteindelijke USB ondersteuning. Vandaar de (op het eerste gezicht) wat
vreemd aandoende werkwijze. In mijn persoonlijke situatie heb ik 'input
core support' niet nodig, dus staat deze optie bij mij uitgeschakeld. Alle
moderne moederborden hebben een USB mogelijkheid, dus normaal gesproken zet
u deze optie, afhankelijk van uw USB apparaten, aan!
Figuur 27: Het instellen van de 'character devices': screenshot 1'.
De bovenste optie (virtual terminal) geeft u de mogelijkheid om een xterm te
openen (XWindows) of in tekstmodus in te kunnen loggen. Deze optie staat
normaal gesproken altijd aan! De 2e optie ('support for console on virtual
terminal') definieert waarheen kernel boodschappen (bijvoorbeeld meldingen
over ontbrekende modules, modules die niet correct functioneren,
kernelproblemen, enzovoorts) gestuurd moeten worden. Onder XWindows hebt u
vaak een apart window met de kernelboodschappen, maar in tekstmodus worden
deze boodschappen vaak naar de eerste virtuele terminal ('CTRL+ALT+F1')
gestuurd, zoals bijvoorbeeld de kernel berichten tijdens het opstarten!
Normaal gesproken staat deze optie dus aan. U kunt er ook voor kiezen om deze
boodschappen over de seriële poort te verzenden (naar bijvoorbeeld een
printer of een terminal; de 4e optie). U dient dan wel de seriële
poort te activeren via de 3e optie. Dit moet u ook doen als u de
seriële poort wilt kunnen gebruiken, bijvoorbeeld omdat u een
seriële muis hebt! De 3e optie ('standard/generic (8250/16550 and
compatible UARTs) serial support') staat normaal gesproken aan. Persoonlijk
heb ik gekozen voor een compilatie als module. In het SuSE opstartscript
wordt geklaagd over het ontbreken van de 'serial support' module tijdens
het opstarten, wat ik op deze wijze elegant heb opgelost (door er voor te
zorgen dat de module bestaat). Het instellen van de 'character devices' is
uiterst belangrijk! Als u dit niet goed doet, kan u met een niet werkend
systeem komen te zitten. Vandaar dat in de Figuren 28, 29 en 30 nog een
aantal overige opties worden besproken.
Figuur 28: Het instellen van de 'character devices': screenshot 2.
Als u op uw eigen machine op afstand een xterm wilt kunnen draaien
(bijvoorbeeld via 'telnet' of 'ssh') dan moet u de optie 'unix98 PTY
support' aanzetten. Op een standalone desktop systeem hebt u deze optie
normaal gesproken niet nodig, maar op de achtergrond lopen toch een aantal
processen die deze optie gebruiken. Het is verstandiger om deze optie toch
te activeren, al was het maar om foutmeldingen tijdens het opstarten (SuSE)
te voorkomen. 'Parallel printer support' heeft iedereen nodig die zijn
printer via de parallelle poort heeft aangesloten. Heel vaak is dit het
geval, met uitzondering van moderne USB printers. 'Support for console on
line printer' creëert de mogelijkheid om de kernel 'console'
boodschappen via de parallelle printer te laten lopen. Normaal gesproken
wilt u dit niet. De optie 'support for user-space parallel port device
drivers' hebt u nodig voor bepaalde apparaten die aan uw parallelle poort
zijn aangesloten. Normaal gesproken hebt u deze optie uitstaan. 'I2C
support' hebt u meestal niet nodig. Voor sommige video-bewerkingskaarten
hebt u deze driver nodig, maar dat kan in een later stadium altijd nog in
de kernel geïntegreerd worden (als u een correct werkende kernel
hebt). Merk op: I2C is wel nodig wanneer u systeeminfo zoals de temperatuur
van de processor en de rotatiesnelheid van de ventilatoren wilt kunnen lezen.
In dat geval moet u uiteraard ook 'hardware sensors support' activeren.
De opties voor muis- en joystickondersteuning selecteert u wanneer
dit voor u van toepassing is. Niet alle muizen hebben deze muisdriver nodig
(dit is in Figuur 29 verder besproken). 'QIC-02 Tape support' slaat op de
ondersteuning van dit type tape-drives. Met de huidige CD branders worden
nog weinig tape-drives gebruikt, waardoor deze optie meestal uitstaat.
Figuur 29: Het instellen van de 'character devices': Mice.
Als u een seriële muis gebruikt, hoeft u in dit onderdeel niets in te
stellen. Voor alle andere muistypen moet u hier wel de benodigde parameters
instellen. Als u gebruik maakt van een ORIGINELE bus muis, dan selecteert u
de bovenste optie met (daaronder) het bijbehorende type (of merk) busmuis.
Tegenwoordig hebben veel computers een ander type muis, die ten onrechte
'busmuis' of 'PS/2 muis' worden genoemd. Dit zijn muizen die vaak via
'/dev/aux' zijn aangesloten via een klein plugje, gelijk aan de
toetsenbordplug. Deze muis is ook vaak naast de toetsenbordplug (op de
computer) aangesloten. Om deze muis correct te laten functioneren,
selecteert u de opties 'mouse support (not serial and bus mice)' en 'PS/2
mouse (aka "auxiliary device" support)', zoals in Figuur 29 is
voorgedaan.
Figuur 30: Het instellen van de 'character devices': screenshot 3.
De opties die in de kernel configuratie tussen Figuur 28 en Figuur 30 staan
en die hier niet worden behandeld, zet u normaal gesproken uit. De optie
'Ftape, the floppy tape device driver' slaat op ondersteuning voor tape
drives die via de floppy controller zijn aangesloten. Ook al hebt u zo'n
tapedrive, dan nog is het niet essentieel om deze ondersteuning (in eerste
instantie) mee te compileren. De overige opties slaan op moderne 3D
videokaarten. Als u een videokaart hebt die via een AGP-bus is aangesloten,
kan u de AGP-ondersteuning aanzetten en de specifieke driver voor uw
videokaart (onder '/dev/agpgart (AGP support)') aanzetten. Merk op dat het
mogelijk is om een probleemloos werkend linux systeem te hebben zonder deze
opties, maar niet noodzakelijkerwijs. Mensen die een moederbord hebben met
een geïntegreerde videokaart (zoals de intel i815 chipset) MOETEN de
kernel driver gebruiken! Zo niet, dan zal XWindows versie 4.0 of hoger
(gebruikt bij de meest recente distributies) niet werken. In mijn
persoonlijke situatie heb ik wel een AGP-kaart, maar
deze kaart (een NVidia TNT2 kaart) wordt niet door een specifieke
kernelmodule ondersteund (NVidia weigert hardware specificaties openbaar
te maken, noodzakelijk voor de ontwikkeling van drivers). Voor mij heeft
het dus (helaas) weinig zin om de
AGP ondersteuning aan te zetten. Gelukkig werkt bij mij XFree 86 4.0 wel
zonder de kernel driver. 'Direct rendering support' slaat op een
nieuwe optie vanaf XWindows 4.0 voor een versnelling van de grafische
prestaties via de kernel. Ook hier geldt de voorwaarde dat uw specifieke
videokaart ondersteund dient te zijn (en dat u XFree86 4.0 of hoger
draait). Bovendien moet 'AGP support' ook geactiveerd zijn. Voor een
correct functioneren van de Linux kernel mag u ook deze opties rustig uit
laten staan.
Figuur 31: Het instellen van de 'multimedia devices'.
Deze optie zet u aan als u een video bewerkingskaart of een radiokaart in uw
computer hebt zitten. Uiteraard is dit onderdeel niet essentieel voor een
correct functioneren van de kernel.
Figuur 32: Het instellen van de 'file systems': screenshot 1.
In dit onderdeel selecteert u welke bestandsystemen de Linux kernel moet
kunnen lezen. Dit is belangrijk om bijvoorbeeld Windows schijven (of
diskettes) te kunnen lezen, maar ook het eigen Linux ext2 bestandsysteem
(of het nieuwe ReiserFS) moet u hier selecteren. Als u dat niet doet, kan
Linux eenvoudigweg niet opstarten (omdat de kernel niet vanaf zijn eigen
opstartschijf kan lezen). Dit is ook al in Figuur 3 aan de orde geweest. De
optie 'DOS FAT support' hebt u nodig om DOS/Windows diskettes en schijven
te kunnen lezen (dit geldt overigens niet voor Windows NT/Windows 2000
schijven; hiervoor is een aparte (alleen lezen) driver aanwezig wat
verderop in deze opties). De optie 'MSDOS fs support' hebt u nodig om
DOS/Windows schijven en diskettes te kunnen lezen en schrijven. Nagenoeg
iedereen wilt dit, dus deze opties staan meestal aan. 'VFAT' is de
ondersteuning voor het lezen van en het schrijven naar de lange
bestandsnamen onder Windows-95 of 98. Mijn persoonlijke systeem is een
zogenaamd 'dual boot' systeem, wat betekent dat ik zowel windows 98 als
Linux kan opstarten (via de Linux partitiemanager lilo, zie het kopje 'Lilo
configureren'). Vandaar dat ik ook deze optie heb geactiveerd. Als u CD's
wilt kunnen lezen die in het gangbare (windows) formaat zijn geschreven,
wat officieel de ISO 9660 standaard wordt genoemd, dient u deze optie te
activeren. De optie daaronder, de Joliet extensies, zijn een toevoeging van
Microsoft aan de ISO 9660 standaard en maakt het mogelijk om ook lange
bestandsnamen op CD's te gebruiken. Volgens de ISO 9660 standaard kunnen
alleen de officiële MS-DOS 8.3 bestandnamen gebruikt worden. Vrijwel
iedereen wil de hedendaagse CD's kunnen lezen, dus deze beide opties staan
normaliter aan. In Figuur 33 worden nog wat overige opties, waaronder het
Linux bestandsysteem ext2, belicht.
Figuur 33: Het instellen van de 'file systems': screenshot 2.
Het '/proc' bestandssysteem geeft u informatie over de status van het systeem,
bijvoorbeeld over welke interrupts in gebruik zijn. Deze optie staat
normaal gesproken altijd aan. Het 'Second extended fs support' is het
standaard Linux bestandssysteem zoals dat nu (nog) wordt gebruikt. Dit MOET
u zondermeer meecompileren (NIET als module)! 'ReiserFS' (de optie is niet
zichtbaar in de Figuren 32 en 33, maar kan wel in dit onderdeel
geselecteerd worden) is een alternatief voor het 'ext2' bestandssysteem en is
beter bestand tegen beschadigingen van de bestandsstructuur door
bijvoorbeeld het plotseling uitvallen van de computer en dergelijke.
Momenteel is ReiserFS nog in ontwikkeling en is daarom ook als
experimentele code aangemerkt. Desondanks ondersteunen de meeste recente
distributies het gebruik van ReiserFS en in de toekomst zal dit
bestandssysteem 'ext2' vaak gaan vervangen. Voor dit moment raad ik persoonlijk
het gebruik van ReiserFS nog even af. 'UDF file system support' hebt u
nodig als u onder windows het programma packetCD gebruikt, waarmee u 'on
the fly' bestanden kan kopiëren (en lezen) van CD's. Dit maakt van een CD
als het ware als een trage harde schijf, erg handig om informatie uit te
kunnen wisselen met andere PC's. Om deze packet CD's ook onder Linux te
kunnen lezen, moet u deze CD's mounten met het 'udf' bestandssysteem
(bijvoorbeeld met de opdracht 'mount -t udf /dev/scd0 /cdrom'). In dit
onderdeel moet u ook nog zaken regelen als 'Network file systems',
'partition types' en 'Native language support'. Met 'Network File Systems'
hebt u normaal gesproken niet te maken, tenzij uw computer onderdeel
uitmaakt van een groot netwerk. Dan dient u 'NFS File System Support' en
wellicht ook nog 'SMB file support' (voor Windows-netwerken) te activeren.
Om Linux op een computer
te kunnen draaien, hebt u deze opties niet nodig. De optie 'Partition
Types' is nogal geavanceerd en is niet noodzakelijk om de Linux kernel goed
te kunnen gebruiken. Deze optie kunt u het beste uitschakelen. 'Native
Language Support' wordt in de onderstaande 2 figuren (Figuur 34 en Figuur
35) verder uitgelegd.
Figuur 34: Het instellen van 'native language support': screenshot 1.
In dit menu selecteert u welke codetabel Linux moet gebruiken om DOS/Windows
bestandnamen goed te kunnen afbeelden. De codetabellen die in Figuur 34
staan afgebeeld hebben betrekking op de DOS bestandsnamen. Indien u gebruik
wilt kunnen maken van de langere bestandsnamen, dan dient u de NLS-tabellen
van Figuur 35 te gebruiken. De bovenste optie in Figuur 34, 'Default NLS
option', bepaalt welke tekens Linux standaard moet kennen. De optie
'iso8859-15' staat afgebeeld (en uitgelegd) in Figuur 35.
Figuur 35: Het instellen van 'native language support': screenshot 2.
De 'NLS ISO 8859-15' optie hebt u nodig om het Windows FAT en (CDROM Joliet)
bestandsysteem correct weer te kunnen geven (dus de juiste karakters in de
bestandnamen te verkrijgen; altijd handig natuurlijk). De selectie 'NLS ISO
8859-15' vertegenwoordigt Westerse talen inclusief de Euro en deze
codetabel moet nagenoeg altijd meegecompileerd worden. Tabel 'NLS ISO
8859-1' is de oude tabel voor de Westerse talen zonder het Euro-symbool.
Figuur 36: Het instellen van de 'console drivers'.
'VGA text console' geeft u de mogelijk om de tekstmodus te gebruiken in VGA
resolutie. Nagenoeg iedereen wilt deze mogelijkheid, dus deze optie staat
altijd aan. Alle moderne computers (uitgezonderd misschien wat oude 386
computers) hebben een VGA (compatible) kaart en hebben geen enkel probleem
met deze instelling. De tweede optie, 'video mode selection support', geeft
u de mogelijkheid om tijdens het opstarten van de kernel op te geven in
welke resolutie de Linux tekstmodus moet draaien. Dit kan handig zijn als u
meer karakters op een regel kwijt wil, maar normaal gesproken laat u deze
optie uit. De overige twee opties zijn experimenteel en het gebruik daarvan
raad ik af.
Figuur 37: Het instellen van het geluid.
In dit onderdeel dient u de geluidsondersteuning in te stellen. Als uw
distributie de ALSA geluidsdrivers gebruikt (zoals SuSE vanaf versie 6.3 en
hoger), dan hoeft u alleen maar 'sound card support' als MODULE te
selecteren. De ALSA drivers worden later gecompileerd en kunnen dan met de
Linux kernel samenwerken (zie ook het kopje 'SuSE en de ALSA
geluidsdrivers'). Als uw distributie de standaard kernel geluidsdrivers
gebruikt, dient u hier de juiste driver(s) voor uw geluidskaart te
selecteren. Nagenoeg alle merken geluidskaarten staan hier genoemd, dus
het selecteren van de juiste driver zou geen probleem mogen zijn. Als uw
geluidskaart goed werkt met de standaard kernel die bij uw distributie zit,
kan u ook het configuratieprogramma (bijvoorbeeld 'yast2'voor SuSE)
gebruiken om te achterhalen welke drivers voor uw geluidskaart worden
gebruikt. Al met al is dit onderdeel niet kritiek voor een correcte werking
van de kernel. Als hier iets mis gaat, hebt u geen geluid (maar dat is dan
ook alles).
Figuur 38: Het instellen van 'USB support'.
In mijn persoonlijke situatie heb ik wel een USB mogelijkheid op mijn
moederbord, maar maak ik er geen gebruik van. Echter, als ik alle USB
support zou uitschakelen, dan krijg ik een foutmelding van SuSE tijdens het
opstarten. SuSE biedt uiteraard standaard USB ondersteuning en probeert dus
logischerwijs de benodigde module(s) te laden (vandaar dat ik ook 'Support
for USB' als module heb geselecteerd). Om die (voor mij onbelangrijke)
foutmelding elegant op te lossen, compileer ik de driver die nodig is om
mijn USB-poorten op het moederbord te kunnen benaderen. Minimaal dient u
daarvoor 'Preliminary USB device filesystem' op 'y' te zetten en een
specifieke USB-driver te laden. Aangezien ik een wat verouderd Pentium II
moederbord heb, heb ik de 'UHCI (Intel PIIX4, VIA, ...)' driver als module
geselecteerd. Als u een recent moederbord hebt met een Intel chipset, dan
dient u de 'UHCI Alternate Driver (JE) support' module te selecteren. Voor
o.a. Compaq computers dient u 'OHCI support' als module te selecteren. In
principe hebt u slechts 1 van deze 3 modules nodig, maar in geval van
twijfel mag u ze alledrie selecteren. Uw Linux distributie heeft tijdens de
installatie al achterhaald welke driver u nodig hebt en laadt automatisch
de correcte module.
Met alleen het beschikbaar maken van de USB-poorten op uw moederbord bent u er nog niet. U dient namelijk ook drivers (modules) op te geven van de USB-apparaten die u op uw computer hebt aangesloten (uit de lijst die onder 'USB Device Class drivers' staat). Dit is een rechttoe-rechtaan onderdeel waar weinig mis kan gaan. Lees in geval van twijfel altijd de help-teksten.
Figuur 39: Het instellen van 'hacking'.
Over deze optie kan ik kort zijn: NIET selecteren! Dit wordt door
programmeurs gebruikt om bij een kernel crash nog bepaalde zaken uit te
proberen (zoals de cache van de harde schijf leegmaken) of om de oorzaak van
een kernel crash te achterhalen. Voor normale gebruikers heeft deze optie
geen enkel nut.
Figuur 40: | Save and Exit. |
make dep make clean ( voor oudere kernels ) make bzImage make modules make modules_installDat u de opdracht 'make dep' moest uitvoeren was in Figuur 40 al aangegeven. Uiteraard voert u deze commando's uit in de Linux source directory, normaal gesproken: '/usr/src/linux'. Voor oudere kernels uit de 2.0.x reeks (of ouder) moest ook nog de opdracht 'make clean' opgegeven worden, zodat verouderde bestanden verwijderd worden voordat een nieuwe kernel wordt gecompileerd. Deze opdracht was noodzakelijk om rare, niet te achterhalen, foutmeldingen te voorkomen (omdat verouderde object (.o) bestanden niet altijd werden vernieuwd). Met de opdracht 'make bzImage' wordt een nieuwe kernel gecompileerd maar nog niet geïnstalleerd. Er bestaan andere 'make' opdrachten om een kernel te compileren, zoals 'make bzlilo' of 'make zImage,' maar met deze opdrachten kunt u op onverwachte problemen stuiten. De meeste kernels zijn te groot om een 'make zImage' goed te laten verlopen: tijdens compilatie komt er een foutmelding en hebt u geen kernel. Bij de opdracht 'make bzlilo' dient het een en ander goed ingesteld te zijn in bijvoorbeeld '/etc/lilo.conf,' wat niet altijd het geval is. Vandaar dat deze twee opdrachten veiligheidshalve niet worden gebruikt. Met de opdracht 'make modules' worden de modules gecompileerd maar nog niet geïnstalleerd. Daar zorgt de opdracht 'make modules_install' voor die de modules in de directory '/lib/modules/2.4.6/' zet. 2.4.6 staat voor de huidige kernelversie en verandert als u een andere kernelversie compileert. Op deze wijze worden de bijbehorende modules automatisch in een aparte directory gezet zodat u nooit conflicten kunt krijgen met verouderde modules en dergelijke. Tijdens het opstarten 'weet' de Linux kernel in welke directory de gewenste modules staan. Als u kernel 2.4.6 al eerder hebt gecompileerd en nu opnieuw hercompileert worden de bestanden wel overschreven en blijven eventuele oudere modules staan (als ze volgens de kernel configuratie niet meer nodig zijn)! Normaal gesproken is dit echter geen probleem, maar het is altijd verstandig eerst even de oude modules te verwijderen voordat u de nieuwe installeert.
Om de kernel veilig te kunnen installeren, dient het lilo-configuratiebestand '/etc/lilo.conf' (eventueel) aangepast te worden en moet u de kernel en het bestand 'System.map' naar de correcte locatie kopiëren. Alsof dat nog niet genoeg is, moet u ook nog de opdracht 'lilo' uitvoeren. De alternatieve werkwijze is het gebruik van 'loadlin', waarmee u een Linux kernel onder Dos/Windows kunt opstarten. Beide opties worden hieronder verder uitgewerkt.
boot = /dev/hda vga = normal read-only menu-scheme = Wg:kw:Wg:Wg lba32 prompt timeout = 300 message = /boot/message other = /dev/hda1 label = win98 image = /boot/bzImage label = linux-2.4.6 root = /dev/hda3 append = "parport=0x378,7 hdd=ide-scsi" image = /boot/vmlinuz.suse label = suse root = /dev/hda3 append = "hdd=ide-scsi" initrd = /boot/initrd.suse
Het bovenstaande kan op ieder systeem (en iedere Linux distributie) afwijken. Vandaar dat ik nu eerst door dit configuratiebestand heenwandel. De bovenste 8 regels staan al goed en hoeft u normaal gesproken niet te veranderen. De 'boot' opdracht in de eerste regel geeft aan vanaf welke fysieke hardeschijf opgestart wordt (feitelijk verwijst 'boot' naar de locatie van de 'master boot record'). In mijn situatie dus vanaf /dev/hda: de eerste fysieke harde schijf. De optie 'vga' geeft aan dat een standaard VGA tekst modus wordt gebruikt met 80x25 karakters. De optie 'read-only' betekent dat de Linux partitie bij het opstarten eerst read-only wordt gemount. Tijdens het opstarten van Linux worden de partities gecontroleerd op fouten. Pas daarna worden de partities met zowel lees- als schrijfrechten opnieuw gemount. 'menu-scheme' regelt de kleuren van het 'lilo' menu tijdens het opstarten in de tekstmodus. Met 'lda32' is er een mogelijkheid om een besturingssysteem na de 1024ste cilinder (van de harde schijf) te booten op voorwaarde dat het BIOS dit ondersteunt (alle moderne systemen ondersteunen 'lba32'; zoniet kan een BIOS upgrade een oplossing bieden). Met de grote harde schijven van tegenwoordig is dit beslist geen overbodige luxe! 'prompt' dwingt 'lilo' met een prompt te komen zodat de gebruiker een besturingssysteem naar keuze kan selecteren. De optie 'timeout' geeft aan hoeveel milliseconden 'lilo' wacht op invoer aan de prompt voordat het standaard besturingssysteem wordt opgestart. Als er geen standaard besturingssysteem is ingesteld (zoals in bovenstaand voorbeeld) wordt het eerste besturingssysteem opgestart. In mijn geval is dat Windows98, zodat mensen die niet goed met Linux overweg kunnen standaard in een Windows omgeving terecht komen. De 'message' optie laat een bericht zien tijdens het uitvoeren van 'lilo'. Onder SuSE is dit een leuke Linux Pinguin als achtergrond met (uiteraard) de tekst 'SuSE Linux 7.1' (typt u maar eens in 'xv /boot/message' of 'gv /boot/message', of soms zelfs 'gimp /boot/message'; 'xv' of 'gv' (GhostView) zijn een shareware programma's waarmee u ondermeer allerlei afbeeldingen kunt bekijken). Merk op dat het bestand /boot/message niet aanwezig is op systemen die geen grafisch login-scherm hebben (b.v. oudere distributies), in dat geval zal de 'boot message' gewoon een stuk tekst zijn. In principe kunt u trouwens zelf een plaatje laten afbeelden tijdens het opstarten via 'lilo' (heb ik niet uitgeprobeerd)! Alle 'lilo' opties kunt u met de opdrachten 'man lilo' en 'man lilo.conf' nalezen in de manual pages van uw Linux systeem.
De overige opties regelen het opstarten van de verschillende besturingssystemen. U kunt maximaal 16 verschillende besturingssystemen of kernels laten opstarten, wat normaal gesproken ruim voldoende is. Met de regel 'label=' wordt de naam van het besturingssysteem geselecteerd. Windows98 (en ook oudere Windows versies en DOS, maar niet Windows NT of Windows 2000) staan altijd op de eerste primaire partitie, dus alleen een 'other' regel en een 'label' regel zijn voldoende voor een correct opstarten van deze besturingssystemen. In de tweede sectie (vanaf 'image=/boot/bzImage') wordt de nieuwe kernel ingesteld met als label 'linux-2.4.6'. Mijn Linux root directory is '/dev/hda3'. Met de regel 'append = "parport=0x378,7 hdd=ide-scsi"' wordt de kernel verteld om voor de parallelle poort het adres 0x378 en interrupt 7 te gebruiken en dat 'hdd' mijn CD brander is die via SCSI-emulatie aangestuurd dient te worden ('hdd' is systeem-specifiek; op uw systeem kan dat dus anders zijn). Het gebruik van een interrupt maakt het printen wat sneller (standaard gebruikt de Linux kernel het tragere 'polling'). Als u geen interrupt meer vrij hebt voor de parallelle (printer)poort, dan laat u deze regel weg. 'Polling' betekent dat de kernel het gebruik van een interrupt omzeilt, waardoor de parallelle poort toch gebruikt kan worden. Deze instelling is een kwestie van persoonlijke voorkeur. De laatste sectie (vanaf 'image = /boot/vmlinuz.suse') bevat de lilo-instelling zoals die door SuSE tijdens de configuratie is ingesteld (de regel append="hdd=ide-scsi" heb ik wel handmatig toegevoegd). Het bestand 'boot/vmlinuz.suse' is de standaard kernel die bij de distributie is geleverd en die u bij voorkeur ALTIJD bewaart voor eventuele noodgevallen! De regel 'initrd = /boot/initrd.suse' is alleen van toepassing op de standaard geïnstalleerde Linux kernel en regelt het inladen van een 'ramdisk' image: een virtuele schijf die in het geheugen wordt ingeladen. De 'ramdisk' bevat modules die noodzakelijk zijn voor een correct opstarten van Linux. Een distributiekernel moet nou eenmaal ontzettend veel verschillende soorten hardware kunnen aansturen, wat alleen kan door veel modules te gebruiken.
Hopelijk is u nu duidelijk waar u de nieuwe Linux kernel in dit voorbeeld naartoe moet kopiëren:
cp /usr/src/linux/arch/i386/boot/bzImage /boot cp /usr/src/linux/System.map /boot/System.map-2.4.6 liloOnder SuSE 7.3 kan de tweede kopieeropdracht ook als volgt uitgevoerd worden:
cp /usr/src/linux/System.map /boot( de originele System.map is reeds hernoemd )
rpm -bb /usr/src/packages/SPECS/alsa.spec cd /usr/src/packages/BUILD/alsa/alsa-driver-<versienummer>/ ./configure make installDe bovenste regel installeert de broncode, inclusief de drivers, in de '/usr/src/packages/BUILD/' directory. Bovendien worden de ALSA libraries en utilities meteen als rpm-bestand gecompileerd! Helaas worden de ALSA drivers NIET standaard meegecompileerd. U dient deze zelf met de hand te compileren en te installeren. De onderste twee opdrachten zorgen daarvoor. De './configure' opdracht zoekt de instellingen en bestandslocaties van uw systeem op en zet deze in een configuratiebestand. De opdracht 'make install' compileert alle ALSA drivers en installeert deze meteen voor de kernel (in de '/lib/modules/2.4.6/misc/' directory. Tijdens het opstarten van SuSE wordt nu automatisch de juiste geluidsdriver geïnstalleerd. Ik geef toe dat bovenstaande werkwijze enigszins omslachtig is. Alleen mensen die weten waar ze mee bezig zijn, kunnen de drivers vinden en de geluidsondersteuning in een nieuwe kernel inbrengen.
Als u geen SuSE gebruikt of als u een recentere versie van de ALSA drivers wilt gebruiken, dan kunt u deze drivers (samen met de 'libraries' en de 'utilities') downloaden van http://www.alsa-project.org. De startpagina van deze site bevat meteen links naar de verschillende te downloaden onderdelen. Ik ga nu uit van de compilatie van de ALSA drivers, maar de beschreven stappen zijn identiek voor de 'libraries' en de 'utilities.' Pak de drivers uit in een directory, bijvoorbeeld in '/usr/local/.' Ga naar deze directory (bijvoorbeeld '/usr/local/alsa-driver-<versienummer>/' en voer vervolgens de bovenvermelde stappen uit (beginnend met './configure'). Als uw distributie niet standaard gebruik maakt van de ALSA drivers, kan het mogelijk zijn dat u wat extra stappen moet ondernemen om de drivers correct werkend te krijgen. Helaas valt dit buiten het bestek van dit al zeer uitvoerige artikel, maar de ALSA FAQ (Frequently Asked Questions) die u apart kunt downloaden helpt u verder op weg.
cp /etc/rc.d/pcmcia /etc/rc.d/pcmcia.SuSE cp ~/pcmcia-cs-3.1.?.tar.gz /usr/src cd /usr/src tar -zxf ./pcmcia-cs-3.1.?.tar.gz make config make all make install cp /etc/rc.d/pcmcia.SuSE /etc/rc.d/pcmciaDe eerste en laatste regels lossen een probleem op onder SuSE. Het SuSE-initialisatiescript '/etc/rc.d/pcmcia' wordt overschreven door de 'make install' opdracht, waardoor het script onder SuSE niet meer correct functioneert. Door het originele script terug te kopiëren wordt het probleem opgelost. Mocht u onverhoopt toch het originele SuSE script overschreven hebben, dan dient u het pakket 'pcmcia' opnieuw te installeren uit onderdeel 'a1', het originele script te kopiëren naar een ander bestand, 'make install' opnieuw uit te voeren en het originele script terug te plaatsen.
Het nieuwe rpm-bestand voor pcmcia ondersteuning installeert u onder SuSE als
volgt:
rpm -i /cdrom/suse/zq1/pcmcia-3.1.?.spm cd /usr/src/packages rpm -bb ./SPECS/pcmcia-3.1.?.spec cd /RPMS/i386/ rpm -i --force ./pcmcia-3.1.?.rpm SuSEconfigIn de eerste regel ga ik ervan uit dat u de pcmcia-drivers zelfstandig vanaf de 6e of 7e CD installeert en dat de CDROM speler reeds gemount is via /cdrom. De 'rpm -i' opdracht installeert de broncode en de 'rpm -bb' opdracht compileert het pcmcia rpm-bestand. Vervolgens installeert u dit rpm pakket met de hand zoals elk gewoon rpm-bestand. Merk op dat u wel de optie '--force' moet meegeven omdat het programma 'rpm' anders terecht opmerkt dat 'pcmcia' reeds is geïnstalleerd (en het nieuwe bestand dus negeert). Zoals altijd dient u na het handmatig installeren van rpm-bestanden onder SuSE het programma 'SuSEconfig' (let op de hoofd- en kleine letters!) te draaien om eventuele gewijzigde instellingen te activeren. Dit laatste wordt door het SuSE setup programma YaST/YaST2 altijd automatisch uitgevoerd na het installeren of wijzigen van nieuwe pakketten, waardoor u dit normaal gesproken niet handmatig hoeft te doen.
Om pcmcia support goed te kunnen gebruiken, dient tijdens de kernelcompilatie 'network support' aan te staan, maar moeten alle overige netwerkkaartdrivers uitgeschakeld zijn. Als u wilt internetten dient u uiteraard ook 'TCP/IP support' aan te zetten, zoals al eerder is behandeld (zie Figuur 11).
insmod ( installeren van een module ), rmmod ( verwijderen van een module ) lsmod ( alle in gebruik zijnde modules tonen ),om maar een paar voorbeelden te noemen. Met de opdracht 'man lsmod' kunt u bijvoorbeeld kijken hoe deze opdracht nou precies werkt. Daar ga ik nu niet verder op in.
Het compileren en installeren van de 'modutils' is rechttoe-rechtaan:
cd /usr/src cp ~/modutils-2.4.6.tar.bz2 . ( ervan uitgaande dat desbetreffend ) ( bestand in uw home-directory ('~') staat ) bzip2 -d modutils-2.4.6.tar.bz2 ( dit kan even duren ) tar -xvf modutils-2.4.6.tar cd modutils-2.4.6 ( ga naar de directory waar de 'modutils' ) ( net zijn uitgepakt ) ./configure ( zoek systeemspecifieke instellingen op ) make ( compileer de 'modutils'. Omdat het erg klein is, gaat dit ) ( verrassend snel ) make install ( installeer de 'modutils' in de directory '/sbin/' )Merk opnieuw op dat het in dit voorbeeld toevallig is dat de 'modutils' en de kernel dezelfde versienummers hebben. Dit is alles wat u dient te doen. De nieuwe 'modutils' zijn klaar voor gebruik.
Er bestaat ook nog een aparte opdracht om de kernel 'boot messages' te kunnen bekijken, namelijk de opdracht 'dmesg'. Als u informatie nodig heeft die reeds van het scherm is 'afgescrold', dan kunt u met deze opdracht de 'kernel messages' ook nog nalezen. U moet wel de volgende opdracht gebruiken: 'dmesg > temp', waarmee alles in het bestand 'temp' wordt opgeslagen. Met de opdracht 'more temp' kan U het bestand vervolgens lezen.
Mocht u onverhoopt toch nog op onoverkomelijke problemen stuiten, dan bestaan er op internet een aantal Nederlandstalige Linux forums waarop u vragen kunt stellen. Normaal gesproken krijgt u vrij snel een zinnig antwoord terug waarmee u het probleem definitief kunt oplossen. Via een zoekmachine kunt u deze forums snel vinden.