142 lines
6.1 KiB
Plaintext
142 lines
6.1 KiB
Plaintext
Development for Multiple Linux Distributions mini-HOWTO
|
|
|
|
Ed Hill
|
|
|
|
<ed@eh3.com>
|
|
|
|
2001-03-01
|
|
Revision History
|
|
Revision 0.9.1 2002-08-14 Revised by: EH3
|
|
Small update for using X11 (sockets).
|
|
Revision 0.9 2001-12-03 Revised by: EH3
|
|
Initial version.
|
|
|
|
|
|
This document outlines a quick hack to aid in developing and testing
|
|
user-space programs for multiple Linux distributions.
|
|
|
|
-----------------------------------------------------------------------------
|
|
Table of Contents
|
|
1. Introduction
|
|
1.1. Copyright and License
|
|
|
|
|
|
2. Setup
|
|
3. Using the Secondary Distributions
|
|
4. Credits
|
|
|
|
1. Introduction
|
|
|
|
As a developer, there is occasionally a need to code and/or test programs on
|
|
multiple Linux distributions. This mini-howto outlines a neat chroot trick
|
|
that can, in many cases, obviate the need to reboot into different Linux
|
|
distributions to do testing or development.
|
|
|
|
In a nutshell, the "trick" is to place all the files from a particular linux
|
|
distribution into a single directory and then chroot into that directory to
|
|
develop/test/debug your program. This approach will work provided that:
|
|
|
|
1. The kernel version of the "main" or "primary" distribution that you are
|
|
running is (at least somewhat) compatible with the "secondary" or chroot
|
|
'ed distributions, and
|
|
|
|
2. Your application is primarily user-space (ie. no kernel modules) and does
|
|
not depend intimately on any particular kernel features (ie. /proc
|
|
behavior).
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
1.1. Copyright and License
|
|
|
|
This document is copyright 2001 by Ed Hill III. Permission is granted to
|
|
copy, distribute and/or modify this document under the terms of the GNU Free
|
|
Documentation License, Version 1.1 or any later version published by the Free
|
|
Software Foundation; with no Invariant Sections, with no Front-Cover Texts,
|
|
and with no Back-Cover Texts. A copy of the license is available at [http://
|
|
www.gnu.org/copyleft/fdl.html] http://www.gnu.org/copyleft/fdl.html.
|
|
-----------------------------------------------------------------------------
|
|
|
|
2. Setup
|
|
|
|
We assume that you already have:
|
|
|
|
1. One "main" or "primary" Linux distribution installed that is running a
|
|
2.4-series or newer kernel,
|
|
|
|
2. a free partition with 2--4Gigs available, and
|
|
|
|
3. sufficient disk space for the secondary installs (and any subsequent
|
|
development/testing work).
|
|
|
|
|
|
Given those assumptions, the following outline is one way to setup the
|
|
multiple secondary Linux distributions that will be used for development,
|
|
testing, or other purposes:
|
|
|
|
1. First, create or locate an unused partition on one of your hard drives
|
|
that is large enough (usually 2--4Gb is sufficient) to do a basic install
|
|
of one of the secondary Linux distributions.
|
|
|
|
2. Install the secondary distro into this partition but do not add it to
|
|
your boot configuration. Note that this install need only include the
|
|
packages that your target application (or tests) require. For instance,
|
|
you may be able to ignore applications such as the X server or other
|
|
space-hogs.
|
|
|
|
3. Reboot your primary Linux distribution and mount the partition containing
|
|
the freshly-installed "secondary" distro. Copy (preferably using tar -cp
|
|
or some other method that preserves permissions) all the files from the
|
|
secondary distro to a location such as /opt/distros/DISTRO_NAME.
|
|
|
|
4. Repeat steps 2--3 for any additional distributions that you wish to
|
|
install. The result should be a directory structure resembling:
|
|
/opt/distros/redhat_6.2/
|
|
suse_7.2/
|
|
mandrake_8.1/
|
|
debian-potato/
|
|
slackware_8.0/
|
|
|
|
where each directory contains the complete set of files resulting from
|
|
each distribution install.
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
3. Using the Secondary Distributions
|
|
|
|
With the secondary distributions installed, the steps to use them are:
|
|
|
|
1. It is important to use a 2.4-series or newer Linux kernel in the
|
|
"primary" Linux distribution in order to take advantage of the multiple
|
|
mount points feature that the 2.4-series permits. For many tasks, the /
|
|
proc and /tmp filesystems will have to be remounted in the secondary
|
|
distribution using:
|
|
mount --bind /proc /opt/distros/redhat_6.2/proc
|
|
mount --bind /tmp /opt/distros/redhat_6.2/tmp
|
|
|
|
2. Also, it can be helpful to remount (rather than copy) the source tree
|
|
from the primary to the secondary distro:
|
|
mount --bind /home/USER/src/PROJECT /opt/distros/redhat_6.2/USER/src/PROJECT
|
|
|
|
3. Become root and use:
|
|
xhost +localhost chroot /opt/distros/redhat_6.2
|
|
/bin/bash
|
|
to obtain a shell with one of the secondary distros. Note that the xhost
|
|
command is only necessary if you intend to use X-windows applications.
|
|
|
|
4. Finally, create a user (if necessary) within the chroot-ed shell and
|
|
develop, build, and/or test your application within this "separate" Linux
|
|
distribution! Not that you may also have to specify your DISPLAY
|
|
environment variable if you'd like to use X applications.
|
|
|
|
|
|
Done! You now have a shell that is, for all practical purposes, running
|
|
within the secondary Linux distribution of your choice.
|
|
-----------------------------------------------------------------------------
|
|
|
|
4. Credits
|
|
|
|
The ideas contained in this mini-HOWTO are not originally mine. They are
|
|
culled from posts by Ben Reed (of [http://www.opennms.org/] OpenNMS ) to one
|
|
of the [http://www.trilug.org/] TriLUG mailing lists. I found the information
|
|
to be so useful that I wanted to document the idea for others.
|