Ontwikkeling voor meerdere Linux distributies mini-HOWTO

01-03-2001

Wijzigingen
Herziening 0.9.114-08-2002Herzien door: EH3
Kleine update voor het gebruik van X11 (sockets).
Herziening 0.92001-12-03Herzien door: EH3
Initiële versie.

In dit document wordt een korte uiteenzetting gegeven als hulp bij het ontwikkelen en testen van gebruikersprogramma's voor meerdere Linux distributies.


Inhoudsopgave
Introductie
Setup
Gebruiken van de secondaire distributies
Krediet

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:

  1. 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

  2. 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:

  1. Dat een "main" of primaire Linux distributie reeds is geïnstalleerd met een kernelversie 2.4.x of nieuwere kernelversie,

  2. dat je een vrije partitie hebt met 2 -- 4 Gig beschikbare ruimte en

  3. 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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:

  1. 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

  2. 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

  3. 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.

  4. 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.