Ontwikkeling voor meerdere Linux distributies mini-HOWTO
Ed
Hill
<ed@eh3.com>
Vertaald door: Ellen
Bokhorst
<bokkie@nl.linux.org>
In dit document wordt een korte uiteenzetting gegeven als hulp
bij het ontwikkelen en testen van gebruikersprogramma's voor meerdere
Linux distributies.
01-03-2001
0.9.1
14-08-2002
EH3
Kleine update voor het gebruik van X11 (sockets).
0.9
2001-12-03
EH3
Initiële versie.
Introductie
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 chroot truuk uiteengezet
die in veel gevallen tegemoet kan komen aan het kunnen booten in
verschillende Linux distributies voor een test- en ontwikkelomgeving.
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 chroot
die directory wordt geactiveerd voor het ontwikkelen/testen/debuggen
van je programma. Deze benadering werkt op voorwaarde dat:
De kernelversie van de "main" of "primaire" distributie die je gebruikt
moet (op z'n minst enigzins) compatibel zijn met de "secondaire" of
chroot'ed distributies en
Je applicatie is primair user-space (dwz geen kernel moduls) en is niet
min of meer afhankelijk van bepaalde kernelfeatures
(dwz. /proc functioneren).
Copyright en licentie
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ë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
http://www.gnu.org/copyleft/fdl.html.
Setup
We veronderstellen het volgende:
Dat een "main" of primaire Linux distributie reeds is geïnstalleerd
met een kernelversie 2.4.x of nieuwere kernelversie,
dat je een vrije partitie hebt met 2 -- 4 Gig beschikbare ruimte en
dat je voldoende diskruimte hebt voor de tweede installatie (en eventueel
daaropvolgend ontwikkelaars/testwerk).
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:
Maak als eerste een partitie aan op één van je harddisks
welke groot genoeg is (gewoonlijk is 2--4Gb voldoende) voor een basisinstallatie
van één van de secondaire Linux distributies.
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.
Reboot je primaire Linux distributie en mount de partitie met de
nieuwe geïnstalleerde "secondaire" distro. Kopieer (bijvoorkeur met
tar -cp of een andere methode die permissies
behoudt) alle bestanden vanaf de secondaire distro naar een lokatie zoals
/opt/distros/DISTRO_NAME.
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:
/opt/distros/redhat_6.2/
suse_7.2/
mandrake_8.1/
debian-potato/
slackware_8.0/
waarbij elke directory de complete set bestanden bevat als resultaat van
elke distributie-installatie.
Gebruiken van de secondaire distributies
Met de secondaire distributies geïnstalleerd, zijn de te
volgen stappen:
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
/proc en /tmp in de
secondaire distributie opnieuw moeten worden gemount met:
mount --bind /proc /opt/distros/redhat_6.2/proc
mount --bind /tmp /opt/distros/redhat_6.2/tmp
Het kan ook handig zijn (in plaats van kopiëren) de broncodestructuur
vanaf de primaire naar de secondaire distro te mounten:
mount --bind /home/USER/src/PROJECT /opt/distros/redhat_6.2/USER/src/PROJECT
Wordt root en gebruik:
xhost +localhost chroot /opt/distros/redhat_6.2
/bin/bash ter verkrijging van een shell met
één van de secondaire distro's. De opdracht
xhost is alleen nodig als je van plan bent
gebruik te gaan maken van X-Window applicaties.
Maak als laatste (zonodig) een gebruiker aan binnen de
chroot-ed shell en ontwikkel, bouw, en/of
test je applicatie binnen deze "aparte" Linux distributie! Je moet ook
de omgevingsvariabele DISPLAY nog instellen als
je graag gebruik wilt maken van X-applicaties.
Klaar! Je hebt nu een shell welke voor alle praktische
doeleinden, binnen de secondaire Linux distributie draait van je keuze.
Krediet
De ideeën in deze mini-HOWTO zijn oorspronkelijk niet van mij.
Ze zijn uit berichten van Ben Reed geplukt
(van OpenNMS ) naar
één van de
TriLUG mailing
lijsten. Ik vond de informatie zo handig dat ik dat idee voor anderen
wilde documenteren.