<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN"[]>
<article id="Multi_Distro_Development">
  <articleinfo>
    <title>Ontwikkeling voor meerdere Linux distributies mini-HOWTO</title>
    <authorgroup>
    <author>
      <firstname>Ed</firstname>
      <surname>Hill</surname>
      <affiliation><address><email>&lt;ed@eh3.com&gt;</email></address></affiliation>
    </author>
    <author>
    <firstname>Vertaald door: Ellen</firstname>
    <surname>Bokhorst</surname>
    <affiliation><address><email>&lt;bokkie@nl.linux.org&gt;</email></address>
    </affiliation>
    </author>
    </authorgroup>
    <abstract>
      <para>In dit document wordt een korte uiteenzetting gegeven als hulp
      bij het ontwikkelen en testen van gebruikersprogramma's voor meerdere
      Linux distributies.
      </para>
    </abstract>
    <pubdate>01-03-2001</pubdate>
    <revhistory>
      <revision>
	<revnumber>0.9.1</revnumber>
	<date>14-08-2002</date>
	<authorinitials>EH3</authorinitials>
	<revremark>Kleine update voor het gebruik van X11 (sockets).</revremark>
      </revision>
      <revision>
	<revnumber>0.9</revnumber>
	<date>2001-12-03</date>
	<authorinitials>EH3</authorinitials>
	<revremark>Initi&euml;le versie.</revremark>
      </revision>
    </revhistory>
  </articleinfo>

  <sect1 id="Introduction"> <title>Introductie</title>

    <para>Als ontwikkelaar is het zo nu en dan nodig programma's op
    meerdere Linux distributies te coderen en/of testen. In deze mini-howto
    wordt een aardige <application>chroot</application> truuk uiteengezet
    die in veel gevallen tegemoet kan komen aan het kunnen booten in
    verschillende Linux distributies voor een test- en ontwikkelomgeving.
    </para>

    <para>In een notedop houdt de "truuk" in dat alle bestanden van
    een bepaalde linux distributie in een enkele directory worden
    geplaatst en dat dan middels <application>chroot</application> 
    die directory wordt geactiveerd voor het ontwikkelen/testen/debuggen
    van je programma. Deze benadering werkt op voorwaarde dat:
    </para>
    
    <orderedlist>
      <listitem>
	<para>
De kernelversie van de "main" of "primaire" distributie die je gebruikt
moet (op z'n minst enigzins) compatibel zijn met de "secondaire" of
<application>chroot</application>'ed distributies en
	</para>
      </listitem>
      <listitem>
	<para>
Je applicatie is primair user-space (dwz geen kernel moduls) en is niet
min of meer afhankelijk van bepaalde kernelfeatures
(dwz. <filename>/proc</filename> functioneren).
	</para>
      </listitem>
    </orderedlist>

    <sect2 id="Copyright"><title>Copyright en licentie</title>

      <para>
Dit document is 2001 auteursrechtelijk beschermd door Ed Hill III.  
Het is toegestaand dit document onder de voorwaarden van de GNU
Free Documentation licentie, versie 1.1 of later versie gepubliceerd
door de Free Software Foundation, te kopi&euml;ren, distribueren en/of aan
te passen; zonder Invariant secties, zonder Front-Cover teksten en zonder
Back-Cover teksten. Een kopie van de licentie is beschikbaar op
<ulink url="http://www.gnu.org/copyleft/fdl.html">
http://www.gnu.org/copyleft/fdl.html</ulink>.
      </para>

  </sect2>

  </sect1>

  <sect1 id="Setup"> <title>Setup</title>

    <para>We veronderstellen het volgende:</para>
    <orderedlist>
      <listitem>
	<para>
Dat een "main" of primaire Linux distributie reeds is ge&iuml;nstalleerd
met een kernelversie 2.4.x of nieuwere kernelversie,
	</para>
      </listitem>
      <listitem>
	<para>
dat je een vrije partitie hebt met 2 -- 4 Gig beschikbare ruimte en
	</para>
      </listitem>
      <listitem>
	<para>
dat je voldoende diskruimte hebt voor de tweede installatie (en eventueel
daaropvolgend ontwikkelaars/testwerk).
	</para>
      </listitem>
    </orderedlist>

    <para>Gegeven die veronderstellingen, volgt hierna een uiteenzetting
    van een manier om de meerdere secondaire Linux distributies op te
    zetten die zullen worden gebruikt voor ontwikkeling, testen, of andere
    doeleinden:
    </para>

    <orderedlist>
      <listitem>
	<para>
Maak als eerste een partitie aan op &eacute;&eacute;n van je harddisks
welke groot genoeg is (gewoonlijk is 2--4Gb voldoende) voor een basisinstallatie
van &eacute;&eacute;n van de secondaire Linux distributies.
	</para>
      </listitem>
      <listitem>
	<para>
Installeer de secondaire distro op deze partitie, maar voeg het niet toe
aan je bootconfiguratie. In deze installatie hoeven alleen die packages
te worden opgenomen die nodig zijn voor je doelapplicatie (of het testen
daarvan). Je kunt bijvoorbeeld applicaties zoals de X server of andere
ruimte opslokkende packages achterwege laten.
	</para>
      </listitem>
      <listitem>
	<para>
Reboot je primaire Linux distributie en mount de partitie met de
nieuwe ge&iuml;nstalleerde "secondaire" distro. Kopieer (bijvoorkeur met
<filename>tar -cp</filename> of een andere methode die permissies
behoudt) alle bestanden vanaf de secondaire distro naar een lokatie zoals
<filename>/opt/distros/DISTRO_NAME</filename>.
	</para>
      </listitem>
      <listitem>
	<para>
Herhaal de stappen 2--3 voor eventuele extra distributies die je wenst
te installeren. Het resultaat zou een directorystructuur lijkend op het
volgende moeten zijn:
	</para>
<programlisting>
/opt/distros/redhat_6.2/
             suse_7.2/
             mandrake_8.1/
             debian-potato/
             slackware_8.0/</programlisting>
	<para>
waarbij elke directory de complete set bestanden bevat als resultaat van
elke distributie-installatie.
</para>
      </listitem>
    </orderedlist>
  </sect1>

  <sect1 id="Use"> <title>Gebruiken van de secondaire distributies</title>

    <para>Met de secondaire distributies ge&iuml;nstalleerd, zijn de te
    volgen stappen:
    </para>

    <orderedlist>
      <listitem>
	<para>
Het is van belang een Linux kernel uit de 2.4 serie te gebruiken in de
"primaire" Linux distributie om voordeel te kunnen halen uit de
feature waarbij meerdere mountpoints kunnen worden aangemaakt wat in
de 2.4 serie is toegestaan. Voor veel taken zullen de bestandssystemen
<filename>/proc</filename> en <filename>/tmp</filename> in de 
secondaire distributie opnieuw moeten worden gemount met:
<programlisting>
mount --bind /proc /opt/distros/redhat_6.2/proc
mount --bind /tmp /opt/distros/redhat_6.2/tmp</programlisting>
	</para>
      </listitem>
      <listitem>
	<para>
Het kan ook handig zijn (in plaats van kopi&euml;ren) de broncodestructuur
vanaf de primaire naar de secondaire distro te mounten:
<programlisting>
mount --bind /home/USER/src/PROJECT /opt/distros/redhat_6.2/USER/src/PROJECT</programlisting>
	</para>
      </listitem>
      <listitem>
	<para>
Wordt root en gebruik:
<programlisting>
xhost +localhost chroot /opt/distros/redhat_6.2
/bin/bash</programlisting> ter verkrijging van een shell met
&eacute;&eacute;n van de secondaire distro's. De opdracht
<filename>xhost</filename> is alleen nodig als je van plan bent
gebruik te gaan maken van X-Window applicaties.
	</para>
      </listitem>
      <listitem>
	<para>
Maak als laatste (zonodig) een gebruiker aan binnen de
<filename>chroot</filename>-ed shell en ontwikkel, bouw, en/of
test je applicatie binnen deze "aparte" Linux distributie! Je moet ook
de omgevingsvariabele <filename>DISPLAY</filename> nog instellen als
je graag gebruik wilt maken van X-applicaties.
	</para>
      </listitem>
    </orderedlist>

    <para>Klaar! Je hebt nu een shell welke voor alle praktische
    doeleinden, binnen de secondaire Linux distributie draait van je keuze.
    </para>

  </sect1>

  <sect1 id="Credits"> <title>Krediet</title>

    <para>De idee&euml;n in deze mini-HOWTO zijn oorspronkelijk niet van mij.
    Ze zijn uit berichten van Ben Reed geplukt
   (van <ulink url="http://www.opennms.org/"> OpenNMS </ulink>) naar 
   &eacute;&eacute;n van de
    <ulink url="http://www.trilug.org/"> TriLUG </ulink> mailing
    lijsten. Ik vond de informatie zo handig dat ik dat idee voor anderen 
    wilde documenteren.
    </para>

  </sect1>

</article>



