Making your own UML RPMs
Here is an easy way of making your User Mode Linux RPMs. Two reasons why you may want to do this:
You need to download uml-custom.spec (last modified 7th December 2003). You can edit the file to request any version of UML (2.4.x, 2.5.x and 2.6 based releases).
Your system needs to be able to build rpms and C programs. This
generally means you need to have the
You need to have the developer libraries available that UML depends on
to compile. This is currently
First time setup
You should do your building as a non-root user. You will need to
tell rpm where to do stuff. In this example I am going to use a
subdirectory of my home directory -
%_topdir /home/rogerb/rpm %packager Roger Binns <email@example.com>
Now create the rpm directory structure:
$ cd /home/rogerb $ mkdir rpm $ cd rpm $ mkdir BUILD RPMS SOURCES SPECS SRPMS
Building the RPM
You need to decide how you want your UML kernel configured. In particular, options need to be chosen for what filesystems are included, if they are built as modules, some networking configuration etc. Use this table to decide:
Note: These options can be combined. For example if you
would like to copy your existing UML configuration, but also edit it,
you can use
You can now build the rpm. Using the above example, you can build your rpm like this:
$ CONFIGCOPY=yes CONFIG=xconfig rpmbuild -ba uml-custom.spec
When the rpm is fully built, it will appear below
If you already have a standard UML rpm installed, it must be uninstalled first as root.
# rpm -e user_mode_linux
You can now install your new UML rpm as root.
# rpm -i /home/rogerb/RPMS/i386/UML-2.4.18.custom.23um-1.i586.rpm
The last part of the filename will match the versioning information
Making changes and updates
If you want to produce another RPM with configuration changes, you should
If you don't increment the release number, then rpm will refuse to
upgrade. You can force rpm to install a new rpm even if it has the
same release number, or even if it is a downgrade by supplying the
# rpm -U --force rpm
I recommend you change host filesystem (hostfs) configuration setting to be yes or no, not a module (module is the default setting for some UML versions).
You may wish to change the configuration control settings in the spec file instead of supplying environment variables.
This spec file will automatically download the kernel and required sources files if they are not already in the sources directory. The kernel source is 25MB so it will take a long time over a modem.
When newer versions of UML come out, simply change the version numbers as appropriate in the .spec file.
You should change the
A source rpm is also produced and will be below
$ rpmbuild --rebuild UML-2.4.18.custom.23um-1.src.rpm
You can't do two concurrent builds of the same rpm (even different if they are different versions) as they will use the same build directory and stomp on each other.