01-03-2001
Wijzigingen | ||
---|---|---|
Herziening 0.9.1 | 14-08-2002 | Herzien door: EH3 |
Kleine update voor het gebruik van X11 (sockets). | ||
Herziening 0.9 | 2001-12-03 | Herzien door: EH3 |
Initiële versie. |
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).
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.
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.
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 |
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.