<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//NL">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <META NAME="GENERATOR" CONTENT="lfparser_2.28">
 <META NAME="LFCATEGORY" CONTENT="KernelCorner">
 <TITLE>lf252, KernelCorner: Zelf de Linux kernel compileren</TITLE>
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-family:monospace,Courier }
 p.cl { color:#EE9500 }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; 
           border-style:none; border-width:medium; border-color:#FFD700; 
           padding:0.5cm;  text-align:center }
 p.code { width:80%; alignment:center; background-color:#aedbe8; 
          border-style:none; border-width:medium; border-color:#aedbe8; 
          padding:0.1cm;  text-align:left }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; 
          border-width:medium; border-color:#AAAAAA; padding:0.5cm ; 
          margin-top:0.1cm; margin-right:1cm; margin-left:1cm; 
          text-align:center }
 .mark  { background-color:#e6e6ff }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- this is used by a number of tools:
 =LF=AUTHOR: Philip de Groot
 =LF=CAT___: KernelCorner
 =LF=TITLE_: Zelf de Linux kernel compileren
 =LF=NUMBER: 252
 =LF=ANAME_: article252.shtml
 -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar -->
 <!-- top navegation bar -->
 <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif"
           alt="[LinuxFocus-icon]" width="319" height="45" align="left" 
           border="0"></TD>

           <TD class="top">
             <TABLE summary="topbar_1_links" width="100%">
               <TR align="right">
                 <TD class="top"><A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="2">Home</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="2">Map</FONT></A> &nbsp;|&nbsp; <A class=
                 "nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="2">Index</FONT></A> &nbsp;|&nbsp; <A class="nodec" href="../Search/index.html"><FONT color=
                 "#DDDDDD" size="2">Zoek</FONT></A> </TD>
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color=
           "#FFFFFF">Nieuws</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color=
           "#FFFFFF">Archieven</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Links/index.html"><FONT color=
           "#FFFFFF">Links</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">Over LF</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.5 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Dit document is beschikbaar in: <A href="../../English/July2002/article252.shtml">English</a> &nbsp;<A href="../../Castellano/July2002/article252.shtml">Castellano</a> &nbsp;<A href="../../ChineseGB/July2002/article252.shtml">ChineseGB</a> &nbsp;<A href="../../Deutsch/July2002/article252.shtml">Deutsch</a> &nbsp;<A href="../../Francais/July2002/article252.shtml">Francais</a> &nbsp;<A href="../../Italiano/July2002/article252.shtml">Italiano</a> &nbsp;<A href="../../Nederlands/July2002/article252.shtml">Nederlands</a> &nbsp;<A href="../../Turkce/July2002/article252.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT BIO ABOUT THE AUTHOR -->
<TABLE ALIGN=LEFT BORDER=0  WIDTH="190" >
<TR>
<TD>

<!-- 2pdaIgnoreStart -->
<!-- PALM DOC -->
<TABLE BORDER=0 hspace=4 vspace=4> <TR> <TD>
<font size=1> <img src="../../common/images/2doc.gif" width=34 align=left border=0 height=22 alt="convert to palm"><a href="http://cgi.linuxfocus.org/cgi-bin/2ztxt">Convert to GutenPalm</a><br>or <a href="http://cgi.linuxfocus.org/cgi-bin/2pda">to PalmDoc</a></font>
</TD> </TR> </TABLE>
<!-- END PALM DOC -->
<!-- 2pdaIgnoreStop -->
<br>
<img src="../../common/images/PhilipGroot.jpg" alt="[Philip de Groot]" height="102" width="79">
<BR>door  Philip de Groot <br> <small>&lt;philipg(at)authors.linuxfocus.org&gt;</small>
<BR><BR>
<I>Over de auteur:</I><BR>
<p>Ik promoveer binnenkort aan de <a href="http://www.kun.nl">Universiteit
 van Nijmegen</a>
 op het onderwerp <a
 href="http://www.sci.kun.nl/cac/index.html">chemometrie</a>. Momenteel
 werk ik als bioinformaticus op het AMC in Amsterdam en onderhoud daarnaast
 mijn eigen (Nederlandstalige)
 <A href="http://linux.loostad.com"> Linux beginnerspagina</A>: een
 van de vele initiatieven voor en door Linux adepten. Ik werk vaak en graag
 met Linux en schrijf regelmatig mijn ervaringen op.</p>
<!-- TRANSLATED TO nl -->
<!-- TRANSLATED TO STOP -->
<BR><i>Inhoud</i>:
<UL>
  <LI><A HREF="#252lfindex0">Inleiding</A></LI>
  <LI><A HREF="#252lfindex1">Installeren van de kernel broncode</A></LI>
  <LI><A HREF="#252lfindex2">Configureren van de kernel</A></LI>
  <LI><A HREF="#252lfindex3">De kernel compileren</A></LI>
  <LI><A HREF="#252lfindex4">Lilo configureren</A></LI>
  <LI><A HREF="#252lfindex5">Loadlin gebruiken</A></LI>
  <LI><A HREF="#252lfindex6">SuSE en de ALSA geluidsdrivers</A></LI>
  <LI><A HREF="#252lfindex7">pcmcia ondersteuning (laptops)</A></LI>
  <LI><A HREF="#252lfindex8">Het installeren van de 'modutils'</A></LI>
  <LI><A HREF="#252lfindex9">Werkt de kernel correct?</A></LI>
  <LI><A HREF="#252lfindex10">Tot slot</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=252&amp;lang=en">Talkback voor dit artikel</A></LI>
</UL>

</TD></TR></TABLE>
<!-- HEAD OF THE ARTICLE -->
<br>&nbsp;
<H2>Zelf de Linux kernel compileren</H2>
 <img src="../../common/images/illustration209.gif" hspace="30"
 width="241" height="249" alt="[illustratie]">
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>Kort</i>:
<P>
<p>Zo meteen zul je leren hoe je een eigen kernel binnenhaalt, configureert,
 compileert en installeert.</p>
<br><br><!-- HR divider --><table width="300" align="center" border="0">
<tr>
  <td bgcolor="#8282e0"><IMG src="../../common/images/transpix.gif" width="1" height="2" alt=""></td>
</tr>
</table>
<!-- BODY OF THE ARTICLE -->


<A NAME="252lfindex0">&nbsp;</A>
<H2>Inleiding</H2>

Waarom wilt U een nieuwe kernel zelf compileren en installeren? Een aantal
 redenen kunnen zijn:
<UL>
 <LI>De nieuwe kernel heeft betere hardware ondersteuning.</LI>
 <LI>De nieuwe kernel biedt bepaalde voordelen, zoals betere
 multiple-processor ondersteuning (SMP-ondersteuning) of de toevoeging van
 USB ondersteuning in de 2.4.x reeks.</LI>
 <LI>Programmeerfouten zijn in de nieuwe kernel opgelost.</LI>
 <LI>Een zelf gecompileerde kernel bevat geen overbodige ballast en is
 daardoor sneller en stabieler.</UL>
</UL>

Een probleem is dat het zelf compileren van een kernel veel computerkennis
 vereist. Daarom zal een beginnende Linux gebruiker niet zomaar zelf een
 kernel proberen te compileren. In dit artikel zijn screendumps gemaakt van
 de grafische procedure ('make xconfig') die de gebruiker in staat stelt om
 via een GUI (Graphical User Interface; een grafisch (muis
 ge&ouml;rienteerd) keuzemenu) de kernel in te stellen. Aan de hand van
 deze screendumps wordt  uitgelegd waarom in specifieke situaties voor
 bepaalde opties wordt gekozen  (of juist niet). In totaal zijn er 40
 screendumps gemaakt. Het lijkt wat  overdreven om alle deze screendumps te
 bespreken, maar het is de beste  manier om het functioneren van de kernel
 en het hoe en waarom van bepaalde kernel  opties duidelijk te maken. De
 screendumps zijn gebaseerd op kernel-2.4.6.  Op moment van schrijven is de
 nieuwste kernel 2.4.19. Op enkele extra  ingangen in de menu's na
 (ondersteuning van nieuwe hardware en dergelijke)  zijn de screenshots
 gelijk en is de kernel compilatie procedure hetzelfde.  Een goede raad:
 print deze pagina voordat je begint, dan heb je altijd alle  informatie bij
 de hand!

<p>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&iuml;nstalleerd worden voor
 gebruik met de bootmanager 'lilo' of gekopi&euml;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&iuml;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&iuml;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!</p>

<p>Als u nauwgezet de aanwijzingen in dit artikel opvolgt, kan er bijna
 niets foutgaan. De nieuwe kernel wordt aan 'lilo' toegevoegd of
 gekopi&euml;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.</p>

<p></p>

<A NAME="252lfindex1">&nbsp;</A>
<H2>Installeren van de kernel broncode</H2>

Voor alle handelingen hebt u 'root' privileges nodig, dus u dient als 'root'
 ingelogd te zijn op het systeem. Eerst en vooral dient u de kernel
 broncode (source code) te installeren, bijvoorbeeld vanaf de SuSE installatie CD. Deze staat
 in het onderdeel 'd' ('development') als pakket 'lx_kernel'. Het is aan te
 raden om de kernel broncode van uw distributie te installeren, omdat
 dan
 de grafische hulpmiddelen automatisch meege&iuml;nstalleerd worden. Daarna
 kunt u een tarball-archief met de nieuwste Linux kernel downloaden (via <a
 href="http://www.kernel.org/pub/linux/kernel/v2.4/">
 www.kernel.org/pub/linux/kernel/v2.4/</a>) en installeren,
 bijvoorbeeld het bestand 'linux-2.4.6.tar.bz2'. De modutils vindt u op <a
 href="http://www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/">www
.kernel.org/pub/linux/utils/kernel/modutils/v2.4/</a>. Merk op dat de
 versienummers van de 'modutils' niet overeenkomen met de versienummers van
 de kernel. Download gewoon van beide pakketten de meest recente versies.
 Het compileren en installeren van de 'modutils' wordt onder het kopje 'het
 installeren van de modutils' behandeld.

<p>De kernel broncode staat doorgaans in de directory
'/usr/src/linux/'  ge&iuml;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:
<pre>
<strong>cd /usr/src
mv linux linux-2.2.18 (indien uw broncode versie 2.2.18 hebt)
</strong>
</pre>
<br>
Vervolgens pakt u de nieuwste versie van de Linux kernel uit. Merk op dat
 het ingepakte bestand 'linux-2.4.6.tar.bz2' ALTIJD alles uitpakt in de
 'linux' directory. Als deze directory bestaat, wordt hij overschreven met
 alle nadelen vandien (zoals problemen bij het compileren, oude kernel
 instellingen die u kwijt bent, enzovoorts). In dit voorbeeld
 hernoem ik de 'linux' directory (na uitpakken van de kernel broncode)
 naar 'linux-2.4.6' en maak ik een symbolische link met de naam 'linux'
 die verwijst naar de directory 'linux-2.4.6'. Het voordeel van deze aanpak
 is dat in een oogopslag gezien kan worden welke kernel versie aanwezig is
 op het systeem. Bovendien is het makkelijker om een kernel-upgrade te
 installeren:<br>
<pre>
<strong>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
</strong>
</pre>
<br>
Vervolgens gaat u naar de directory waar de kernel staat:
<br>
<pre>
<strong>cd /usr/src/linux
make xconfig ( zie Figuur 1 )</strong>
</pre>
    <br>
     <a href="../../common/images/article252/make_xconfig.gif"><img
 src="../../common/images/article252/make_xconfig_th.gif" width="550"
 height="282" alt="De grafische
 interface voor het instellen van uw Linux kernel na de opdracht 'make
 xconfig'." align="middle"></a><br>

    <table>
      <tr>
        <td valign="top"><b>Figuur 1:</b></td>

        <td><b>De grafische interface voor het instellen van uw Linux
 kernel na de opdracht 'make xconfig'.</b></td>
      </tr>
    </table>

    <p>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.</p>

    <p></p>

    <A NAME="252lfindex2">&nbsp;</A>
<H2>Configureren van de kernel</H2>

Hieronder staan de verschillende screendumps met reeds ingevulde selecties
 (voor mijn persoonlijke situatie). Onder ieder plaatje staat een
 toelichting over waarom ik bepaalde opties heb gekozen. Door de voorbeelden
 aandachtig door te lezen begrijpt u waarom bepaalde opties gekozen worden
 en begrijpt u beter wat u zelf in uw specifieke situatie moet selecteren. U
 kunt ook een 'make xconfig' draaien onder uw eigen Linux distributie en de
 (Engelstalige!) help-teksten lezen die tevoorschijn komen als u op 'Help'
 klikt. In deze helpteksten staat ook vaak of u normaal gesproken de optie
 aan of uit hebt staan (in geval van twijfel). Deze helpteksten zijn een
 welkome aanvulling tijdens het configureren van de kernel.

    <p>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).</p>

    <p><img src=
    "../../common/images/article252/code_maturity_level_options.gif"
     width="578" height="166" alt=
    "Het instellen van de 'code maturity level options'." align=
    "middle"><br>
    </p>

    <table>
      <tr>
        <td valign="top"><b>Figuur 2:</b></td>

        <td><b>Het instellen van de
 'code maturity level options'.</b></td>
      </tr>
    </table>
In dit onderdeel maakt u de keuze of experimentele kernel opties gebruikt
 mogen worden of niet. Het kan soms noodzakelijk zijn om deze optie te
 activeren om hardware ondersteuning te krijgen (van recent verschenen
 insteekkaarten bijvoorbeeld), maar normaal gezien laat u deze optie uit
 staan. Experimentele code heeft een negatieve invloed op de stabiliteit van
 de kernel. In Figuur 1 ziet u de grijze opties 'IEEE 1394 (FireWire)
 support' en 'Bluetooth support'. Deze twee opties kunt u met de huidige
 instelling niet selecteren omdat het nog experimentele code
 betreft.</p>

    <p><a href=
    "../../common/images/article252/loadable_module_support.gif"><b>
    Figuur 3: Het instellen van de
 'loadable module support'</b></a>.<br>
(vanaf hier worden de screenshots gelinkt, je kan ze openen in een ander
 venster om ze te bekijken)<br>
 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.</p>

    <p><a href=
    "../../common/images/article252/processor_type_and_features.gif">
    <b>Figuur 4: Het instellen van de 'processor type and
 features'</b></a>.<br>
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&iuml;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.</p>

    <p><a href=
    "../../common/images/article252/general_setup.gif"><b>Figuur 5:
    De algemene kernel instellingen</b></a>.<br>
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&ouml;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&euml;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.</p>

    <p><a href=
    "../../common/images/article252/Memory_Technology_Devices.gif"><b>
    Figuur 6: Het instellen van de 'Memory Technology Devices'</b></a>.<br>
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&euml;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.</p>

    <p><a href=
    "../../common/images/article252/parallel_port_support.gif"><b>Figuur
    7: Het instellen van de parallelle poort</b></a>.<br>
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)!</p>

    <p><a href=
    "../../common/images/article252/plug_and_play_configuration.gif">
    <b>Figuur 8: Het instellen van 'Plug & Play'</b></a>.<br>
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 <kbd>rpm -qil isapnptools</kbd> 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.

 </p>

    <p><a href=
    "../../common/images/article252/block_devices.gif"><b>Figuur 9:
    Het instellen van 'block devices</b></a>.<br>
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).</p>

     <p><a href="../../common/images/article252/multi_device_support.gif">
     <b>Figuur 10: Het instellen van 'multiple devices'</b></a>.<br>
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&euml;ren naar de nieuwe partitie. Padnamen blijven ook
 ongewijzigd, enzovoorts. Op zich een handige mogelijkheid, maar niet voor
 de 'normale thuisgebruiker'.<p>

     <p><a href="../../common/images/article252/networking_options.gif">
     <b>Figuur 11: Het instellen van 'networking options'</b></a>.<br>
De optie 'Packet Socket' hebt u nodig om met netwerkonderdelen te kunnen
 communiceren zonder dat er een netwerk protocol ge&iuml;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.<p>

     <p><a href="../../common/images/article252/IP_netfilter_configuration.gif">
     <b>Figuur 12: Het instellen van het 'IP netfilter'</b></a>.<br>
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).<p>

     <p><a href="../../common/images/article252/telephony_support.gif">
     <b>Figuur 13: Het instellen van 'telephony support'</b></a>.<br>
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.<p><pre></pre>

     <p><a href="../../common/images/article252/ATA_IDE_MFM_RLL_support.gif">
     <b>Figuur 14: Het instellen van 'ATA, IDE, MFM en RLL support' (harde schijf communicatie protocollen)</b></a>.<br>
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!<p><pre></pre>

     <p><a href="../../common/images/article252/ATA_IDE_MFM_RLL_support.gif">
     <b>Figuur 15: Het instellen van 'ATA, IDE, MFM en RLL support': screenshot 1</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/ATA_IDE_MFM_RLL_block_devices_2.gif">
     <b>Figuur 16: Het instellen van 'ATA, IDE, MFM en RLL support': screenshot 2</b></a>.<br>
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).<p>

     <p><a href="../../common/images/article252/ATA_IDE_MFM_RLL_block_devices_3.gif">
     <b>Figuur 17: Het instellen van 'ATA, IDE, MFM en RLL support': screenshot 3</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/SCSI_support.gif">
     <b>Figuur 18: Het instellen van 'SCSI support'</b></a>.<br>
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).<p>

     <p><a href="../../common/images/article252/I2O_device_support.gif">
     <b>Figuur 19: Het instellen van 'I2O device support'</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/network_device_support.gif">
     <b>Figuur 20: Het instellen van 'network device support'</b></a>.<br>
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 &eacute;&eacute;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.<p>

     <p><a href="../../common/images/article252/ethernet_10_or_100_Mbit.gif">
     <b>Figuur 21: Het instellen van een 'ethernet device'</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/amateur_radio_support.gif">
     <b>Figuur 22: Het instellen van 'amateur radio support'</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/IrDA_infrared_support.gif">
     <b>Figuur 23: Het instellen van (draadloze) infrarood ondersteuning</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/ISDN_subsystem.gif">
     <b>Figuur 24: Het instellen van de ISDN ondersteuning</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/old_CDROM_drivers.gif">
     <b>Figuur 25: Het instellen van 'old CDROM drivers'</b></a>.<br>
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).<p>

     <p><a href="../../common/images/article252/input_core_support.gif">
     <b>Figuur 26: Het instellen van 'input core support'</b></a>.<br>
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!<p>

     <p><a href="../../common/images/article252/character_devices_1.gif">
     <b>Figuur 27: Het instellen van de 'character devices': screenshot 1'</b></a>.<br>
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&euml;le poort te verzenden (naar bijvoorbeeld een
 printer of een terminal; de 4e optie). U dient dan wel de seri&euml;le
 poort te activeren via de 3e optie. Dit moet u ook doen als u de
 seri&euml;le poort wilt kunnen gebruiken, bijvoorbeeld omdat u een
 seri&euml;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.<p>

     <p><a href="../../common/images/article252/character_devices_2.gif">
     <b>Figuur 28: Het instellen van de 'character devices': screenshot 2</b></a>.<br>
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&euml;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&iuml;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.<p>

     <p><a href="../../common/images/article252/character_devices_Mice.gif">
     <b>Figuur 29: Het instellen van de 'character devices': Mice</b></a>.<br>
Als u een seri&euml;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.<p>

     <p><a href="../../common/images/article252/character_devices_3.gif">
     <b>Figuur 30: Het instellen van de 'character devices': screenshot 3</b></a>.<br>
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&iuml;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.<p>

     <p><a href="../../common/images/article252/multimedia_devices.gif">
     <b>Figuur 31: Het instellen van de 'multimedia devices'</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/file_systems_1.gif">
     <b>Figuur 32: Het instellen van de 'file systems': screenshot 1</b></a>.<br>
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&euml;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.<p>

     <p><a href="../../common/images/article252/file_systems_2.gif">
     <b>Figuur 33: Het instellen van de 'file systems': screenshot 2</b></a>.<br>
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&euml;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.<p>

     <p><a href="../../common/images/article252/native_language_support_1.gif">
     <b>Figuur 34: Het instellen van 'native language support': screenshot 1</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/native_language_support_2.gif">
     <b>Figuur 35: Het instellen van 'native language support': screenshot 2</b></a>.<br>
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.<p>

     <p><a href="../../common/images/article252/console_drivers.gif">
     <b>Figuur 36: Het instellen van de 'console drivers'</b></a>.<br>
'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.<p>

     <p><a href="../../common/images/article252/sound.gif">
     <b>Figuur 37: Het instellen van het geluid</b></a>.<br>
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).<p>

     <p><a href="../../common/images/article252/USB_support.gif">
     <b>Figuur 38: Het instellen van 'USB support'</b></a>.<br>
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.<p>

<p>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.</p>

     <p><a href="../../common/images/article252/kernel_hacking.gif">
     <b>Figuur 39: Het instellen van 'hacking'</b></a>.<br>
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.<p>

<p><img src="../../common/images/article252/save_and_exit.gif"
 width="441" height="199" alt="Save and Exit." align="middle"><br>
</p>

<table>
  <tr>
    <td valign="top"><b>Figuur 40:</b></td>
    <td><b>Save and Exit.</b></td>
  </tr>
</table>
Oef! We zijn er doorheen geploegd. Nu de kernel nog even compileren en
 installeren. Dit wordt hieronder verder behandeld.

    <p><br>
    </p>

    <A NAME="252lfindex3">&nbsp;</A>
<H2>De kernel compileren</H2>

Als u op 'Save and Exit' hebt geklikt, worden de instellingen opgeslagen in
 het bestand './config' ('/usr/src/linux/.config'). Even terzijde: als u een
 kleine kernel upgrade doet, bijvoorbeeld van kernel 2.4.5 naar kernel
 2.4.6, dan is het handig om dit bestand even te bewaren en naar de nieuwe
 kernel source te kopi&euml;ren. Al uw oude instellingen zijn (meestal)
 bewaard, hetgeen u veel werk kan besparen. Op dezelfde manier is het soms
 handig om te starten met de configuratie van de 'standaard' kernel die
 in je distributie zit, waarvan je het bestand vaak kunt terugvinden als
 /boot/config (kopieer het naar ./.config om het te gebruiken).
 Maar let op, als u de kernel broncode hebt vernieuwd, en u om onduidelijke redenen
 problemen krijgt met het compileren van de kernel, verwijdert u dit bestand
 (uiteraard) als eerste! Natuurlijk hebt u veiligheidshalve de instellingen
 van uw correct werkende kernel opgeschreven en zorgvuldig bewaard. De
 procedure om vervolgens de kernel te compileren is als
 volgt:
<pre>
<strong>make dep
make clean ( voor oudere kernels )
make bzImage
make modules
make modules_install</strong>
</pre>
Dat 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&iuml;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&iuml;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.

    <p>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&euml;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.</p>


    <A NAME="252lfindex4">&nbsp;</A>
<H2>Lilo configureren</H2>

Het 'lilo' configuratiebestand vindt u meestal in de '/etc' directory als
 '/etc/lilo.conf'. Dit bestand kunt u met een normale ASCII editor openen,
 bijvoorbeeld met 'xemacs /etc/lilo.conf &amp;' (als u 'XEmacs' hebt
 ge&iuml;nstalleerd, wat tijdens de meeste installaties niet gebeurt). Vaak
 kunt u ook 'emacs' gebruiken of eventueel een andere teksteditor. Een
 'lilo' configuratiebestand ziet er bijvoorbeeld als volgt
 uit:
<pre>
<strong>
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
</strong>
</pre>
    <p>
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.</p>

    <p>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&iuml;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.</p>

    <p>Hopelijk is u nu duidelijk waar u de nieuwe Linux kernel in dit voorbeeld
 naartoe moet kopi&euml;ren:</p>
<pre>
<strong>cp /usr/src/linux/arch/i386/boot/bzImage /boot
cp /usr/src/linux/System.map /boot/System.map-2.4.6
lilo</strong>
</pre>
    Onder SuSE 7.3 kan de tweede kopieeropdracht ook als volgt uitgevoerd
 worden:
<pre>
<strong>cp /usr/src/linux/System.map /boot
</strong>
</pre>
    ( de originele System.map is reeds hernoemd ) <br>
Als u reeds een kernel met de naam 'bzImage' heeft en u wilt die kernel
 bewaren, dan kopieert u de nieuwe kernel als '/boot/bzImage-2.4.6' en zet u
 deze wijziging ook in '/etc/lilo/conf'. Het bestand 'System.map' wordt
 tijdens de compilatie altijd gecre&euml;erd en bevat de namen en
 instellingen van belangrijke kernel variabelen. De opdracht 'depmod -a'
 zorgt ervoor dat een bestand wordt aangemaakt, waarin alle afhankelijkheden
 staan van de kernel modules (relaties tussen kernel en module en modules
 onderling). Ook de informatie in '/etc/modules.conf' wordt meegenomen. De
 meeste Linux distributies (inclusief SuSE) zorgen ervoor dat tijdens het opstarten 'depmod
 -a' wordt gedraaid, maar voor de zekerheid is het
 verstandig om ervoor te zorgen dat het bestand /boot/System.map bestaat (en
 overeenkomt met de huidige kernelversie). De opdracht 'lilo' moet u nog
 uitvoeren om de nieuwe instellingen (of de nieuwe kernel) effectief te installeren.
 Als u reeds een bestand '/boot/bzImage' hebt en u overschrijft dit bestand
 met een nieuw gecompileerde kernel zonder 'lilo' te draaien, dan kan de
 nieuwe kernel niet meer opstarten. De oude (originele) distributiekernel
 die u hebt bewaard werkt dan nog wel, want die is immers niet overschreven!
 Op deze wijze kunt u op een verantwoorde wijze nieuwe kernels compileren
 en testen...
    <p></p>

    <A NAME="252lfindex5">&nbsp;</A>
<H2>Loadlin gebruiken</H2>

Als u 'loadlin' gebruikt om Linux op te starten, dan kent u ongetwijfeld de
 lokatie van dit handige programmaatje, bijvoorbeeld C:\loadlin. 'Loadlin'
 vindt u op de eerste CD in de 'dosutils' directory van nagenoegd iedere
 distributie. De nieuwe Linux kernel dient u ook naar de harde schijf
 ('C:\loadlin') te kopi&euml;ren; eventueel met een unieke naam. Met de
 opdracht:
    <div style="margin-left: 2em">
      <strong>loadlin bzImage</strong>
    </div>
wordt Linux vervolgens opgestart onder DOS (bijvoorbeeld door Windows98
 eerst op te starten in DOS modus). Als u de kernel zelf hebt gecompileerd, dan zijn
 de meeste instellingen zoals die in de kernel zelf zijn opgeslagen (zoals
 de locatie van de root partitie) normaal gesproken correct. Bovenstaande
 opdracht volstaat dan om probleemloos Linux op te starten. Als u in DOS
 gewoon de opdracht 'loadlin |more' intypt, dan krijgt u een helpscherm
 inclusief een link naar een 'loadlin-HowTo' op internet. Als u huiverig
 bent om met 'lilo' te stoeien, dan kunt u op deze wijze zonder risico de
 nieuw gecompileerde Linux kernel uitproberen. 'Loadlin' en 'bzImage' passen
 namelijk samen op een diskette (1.44 MB). Als u eerst DOS opstart via een
 opstartdiskette (met EMM386 ondersteuning) en daarna de 'loadlin+bzImage'
 diskette gebruikt om Linux op te starten, dan kan er werkelijk helemaal
 niets foutgaan! Uiteraard dient u wel een DOS opstardiskette te hebben.
    <p></p>

    <A NAME="252lfindex6">&nbsp;</A>
<H2>SuSE en de ALSA geluidsdrivers</H2>

SuSE gebruikt standaard de ALSA geluidsdrivers. Deze drivers zijn van betere
 kwaliteit dan de drivers van het OSS-project die standaard in de kernel
 zitten. Als u echt met geluid aan de slag gaat onder Linux, dan is het
 gebruik van de ALSA-drivers een "must"! De ALSA-drivers zitten niet bij de
 kernel broncode meegeleverd. Dit betekent dat de drivers apart
 gecompileerd en ge&iuml;nstalleerd dienen te worden. De ALSA-drivers
 zitten in de ALSA broncode in het onderdeel 'zq' van de SuSE
 distributie (als dit u niets zegt, lees dan even verder). Installeer ALSA
 via YaST of YaST2 zodat u de broncode beschikbaar hebt in de directory
 '/usr/src/packages/.' Om de ALSA drivers te compileren en te installeren
 gaat u als volgt te werk:
<pre>
<strong>rpm -bb /usr/src/packages/SPECS/alsa.spec
cd /usr/src/packages/BUILD/alsa/alsa-driver-&lt;versienummer&gt;/
./configure
make install</strong>
</pre>
De 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&iuml;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.

    <p>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 <A
 HREF="http://www.alsa-project.org">http://www.alsa-project.org</A>. 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-&lt;versienummer&gt;/' 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.</p>

    <p></p>

    <A NAME="252lfindex7">&nbsp;</A>
<H2>pcmcia ondersteuning (laptops)</H2>

Vanaf kernel 2.4.x is er ook pcmcia ondersteuning in de kernel. Echter, het
 gebruik van de kernel drivers wordt (in de offici&euml;le HOWTO) vooralsnog
 afgeraden. De komende tijd heeft het pcmcia (source) pakket zowel drivers
 als scripts om de pcmcia kaart werkend te krijgen voor zowel 2.0.x, 2.2.x
 en 2.4.x kernels. Mijn ervaring is dat na een kernel compilatie de pcmcia
 drivers niet meer werken, waardoor een hercompilatie noodzakelijk is.
 Afhankelijk van de distributie die gebruikt wordt, leiden er twee wegen
 naar Rome. De eerste methode is de broncode die bij de distributie
 meegeleverd is. Het installeren van de broncode en het compileren
 daarvan naar een rpm-bestand levert u een bestand op dat u kunt installeren.
 De andere methode is het downloaden, uitpakken, compileren en installeren
 van de meest recente versie van pcmcia (die kunt u vinden op <A
 HREF="http://sourceforge.net/projects/pcmcia-cs/">http://sourceforge.net/pr
ojects/pcmcia-cs/</A>):<br>
<pre>
<strong>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/pcmcia
</strong>
</pre>
De 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&euml;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&euml;ren naar een ander
 bestand, 'make install' opnieuw uit te voeren en het originele script terug
 te plaatsen.

    <p>Het nieuwe rpm-bestand voor pcmcia ondersteuning installeert u onder SuSE als
 volgt:<br>
    </p>
<pre>
<strong>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
SuSEconfig
</strong>
</pre>
In 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&iuml;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.<p>

    <p>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).</p>

    <p></p>

    <A NAME="252lfindex8">&nbsp;</A>
<H2>Het installeren van de 'modutils'</H2>

Zoals eerder vermeld bevatten de 'modutils' kleine programmaatjes die de
 kernel nodig heeft om de kernel-modules te kunnen beheren. Dit zijn dan
 programma's als:
<pre>
<strong>insmod ( installeren van een module           ),
rmmod  ( verwijderen van een module           )
lsmod  ( alle in gebruik zijnde modules tonen ),
</strong>
</pre>
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.

    <p>Het compileren en installeren van de 'modutils' is rechttoe-rechtaan:</p>
<pre>
<strong>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/'         )
</strong>
</pre>
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.

    <p></p>

    <A NAME="252lfindex9">&nbsp;</A>
<H2>Werkt de kernel correct?</H2>

De nieuwe kernel is geconfigureerd, gecompileerd en waarschijnlijk ook
 ge&iuml;nstalleerd via 'lilo'. U herstart het systeem en vraagt zich nu af
 hoe te controleren of de nieuw gecompileerde kernel goed functioneert. Als
 bepaalde hardware niet werkt, komt u daar snel genoeg achter tijdens het
 uitproberen. Echter, tijdens het opstarten drukt de kernel veel nuttige
 informatie af op het beeldscherm (voordat bijvoorbeeld de grafische login
 wordt opgestart). Deze informatie bevat o.a. automatisch gedetecteerde
 instellingen (poorten, IRQs, en dergelijke), maar ook foutmeldingen,
 bijvoorbeeld als een bepaalde driver (als module of als kernelonderdeel)
 niet correct ge&iuml;nitialiseerd kan worden. Door tijdens het opstarten
 goed op te letten, kunt u bepaalde problemen al snel detecteren. Bij SuSE
 linux gaat dit zelfs erg makkelijk: ieder 'kernelonderdeel' dat opgestart
 wordt krijgt uiterst rechts op het beeldscherm de melding 'done' (in het groen)
 als alles correct is verlopen of 'failed' (in het rood) als er ergens iets is
 misgegaan. Omdat deze meldingen erg snel over het scherm kunnen scrollen,
 worden eventuele foutmeldingen nog kort samengevat boven de 'login-prompt'.
 Deze login-prompt vindt u onder '&lt;Ctrl&gt;+&lt;Alt&gt;+F1' als u automatisch het
 grafische inlogscherm krijgt. U hebt nu in ieder geval een hint waar
 eventuele problemen zich kunnen voordoen, vooropgesteld dat de foutmelding
 voor u al relevant is. Foutmeldingen die lijken op 'Cannot find module' of
 'Cannot load module' duiden er meestal op dat u tijdens de kernelcompilatie
 enkele onderdelen niet hebt meegenomen die u wel nodig hebt. Even de
 kernelconfiguratie aanpassen en de kernel opnieuw compileren en installeren
 lost het probleem meestal vanzelf op. Merk op dat het niet noodzakelijk
 hoeft te zijn om de hele kernel te compileren. Als u alleen wat modules
 bent vergeten, volstaat 'make modules' en 'make modules_install'. Mocht u
 onverhoopt toch de hele kernel opnieuw moeten compileren, dan is er nog
 niet veel aan de hand. De meeste kernel source code is reeds in
 gecompileerde vorm aanwezig en alleen ontbrekende onderdelen hoeven opnieuw
 gecompileerd te worden. Kortom: de kernel iets aanpassen en opnieuw
 compileren gaat heel snel (in tegenstelling tot de eerste kernelcompilatie;
 dan mag u rustig een kopje koffie gaan drinken).

    <p>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 &gt; temp', waarmee alles in het bestand 'temp' wordt opgeslagen. Met
 de opdracht 'more temp' kan U het bestand vervolgens lezen.</p>

    <p></p>

    <A NAME="252lfindex10">&nbsp;</A>
<H2>Tot slot</H2>

Met deze 'handleiding' kunt u op verantwoorde wijze gaan experimenteren met
 kernel compilatie. De drempel om zelf met de kernel te gaan 'stoeien' is
 hopelijk zodanig verlaagd dat u enthousiast aan de slag gaat. Het correct
 configureren van de kernel vergt nog de meeste tijd. Tijdens het compileren
 kunt u rustig een spelletje 'patience' spelen of andere
 computerwerkzaamheden verrichten.

    <p>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.</p>

    <p></p>
  



<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Talkback voor dit artikel</h2>
Elk artikel heeft zijn eigen talkback pagina. Daar kan je commentaar geven of commentaar van anderen lezen:
<center>
<table border="0"  CELLSPACING="2" CELLPADDING="1">
 <tr BGCOLOR="#C2C2C2"><td align=center>
  <table border="3"  CELLSPACING="2" CELLPADDING="1">
   <tr BGCOLOR="#C2C2C2"><td align=center>
    <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=252&amp;lang=en"><b>&nbsp;talkback pagina&nbsp;</b></a>
   </td></tr></table>
</td></tr></table>
</center>

<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%">
<TR><TD ALIGN=CENTER BGCOLOR="#9999AA" WIDTH="50%">
<A HREF="../../common/lfteam.html">Site onderhouden door het LinuxFocus editors team</A>
<BR><FONT COLOR="#FFFFFF">&copy; Philip de Groot, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT>
<BR><a href="http://cgi.linuxfocus.org/cgi-bin/lfcomment?lang=nl&amp;article=article252.shtml" target="_TOP">Klik hier om een fout te melden of commentaar te geven</A><BR></TD>
<TD BGCOLOR="#9999AA">
<!-- TRANSLATION INFO -->
<font size=2>Vertaling info:</font>
<TABLE>
  <tr><td><font size="2">nl --&gt; -- : Philip de Groot <small>&lt;philipg(at)authors.linuxfocus.org&gt;</small></font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2002-06-27, generated by lfparser version 2.28</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>