LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Showing revision 1

Xenomai Kernel Packages

John Morris (zultron on IRC) has put up a temporary Ubuntu package repository containing Xenomai packages. Here is more information.


The packages in this PPA are experimental, ready for alpha testing ONLY!


To enable the package repo and install the packages, these must be run as superuser:

 # Add the repository to /etc/apt/sources.list
 echo "deb http://distro.zultron.com/zultron/cadcam/debian precise main" >> /etc/apt/sources.list
 echo "deb-src http://distro.zultron.com/zultron/cadcam/debian precise main" >> /etc/apt/sources.list
 # update the package list
 apt-get update
 # Install the package containing the signing keys; answer 'y' to install despite missing keys
 apt-get install zultron-keyring
 # Install the xenomai run-time tools and headers (for building LCNC)
 apt-get install xenomai-runtime libxenomai-dev
 # Install the xenomai-patched kernel
 apt-get install linux-image-3.5.7-xenomai-


Please run the regression tests as described in XenomaiKernel to ensure Xenomai is working correctly. Please report both success and failure, with info about your hardware (especially 32/64 bit, CPU, number of CPUs and chipset) and a pastebin of the regression run to the mailing list.

Remaining problems

There are a few remaining problems to fix. Package dependencies are still missing, and there are a few more things on the wish-list aimed at package maintainers (see the README file in the git repo or source packages).

Future availability

John plans to continue maintaining the kernel .configs for Xenomai and to maintain packages for RedHat-like distros. For Ubuntu/Debian users, he is hiring someone to fix remaining problems, to build packages for all current releases, and to update the packages for future releases of Xenomai.

The Xenomai devs have expressed interest in hosting the RedHat packages on xenomai.org, and have begun packaging for Debian and Ubuntu. Between John's efforts, official Xenomai support, and the transparency of the packaging approach (see next section), sustained availability of updated packages will be ensured.

Packaging approach

The philosophy behind the kernel package is that it should be recreatable from scratch and easily upgradeable, so that there is never a situation where the LinuxCNC community is stuck on an old kernel.

All upstream sources are easily accessible and all changes are well-documented so that recreating the work from scratch is trivial.

The package is also easy to upgrade. When a new version of Xenomai is released for a newer kernel version, the new upstream distributions may be easily swapped in and a new package built. The steps are simple and should not require more than an hour, at most, excluding build time.

The several pieces combined to build this package are described below. Detailed instructions for building from scratch are in the README file in the git repo: http://github.com/zultron/kernel-rt-deb

Kernel source tree

The linux kernel source is the kernel.org vanilla source tarball.

Kernel package /debian directory

The /debian directory is placed inside the unpacked vanilla source. It is based on files generated from the make-kpkg utility, and contains minimal modifications to support Xenomai, as described below.

The /debian files are in a git repo here: http://github.com/zultron/kernel-rt-deb From this repo, which began from untouched output of make-kpkg, all changes are clearly observable.

Kernel .config files

The kernel .config files are in this git repo: http://github.com/zultron/kernel-tools They are separately maintained in a central place for both Debian and RedHat packages.

The kernel must be patched with i-pipe and Xenomai patches, both of which introduce new kernel .config options. Mixing a vanilla kernel .config with the Xenomai config produces a resulting .config where the vanilla and xenomai options cannot be distinguished. The /debian rules are therefore modified to keep the configuration separate where they can be tracked in git and updated from upstream sources, and merges them only at build time.

The base kernel .config files (for amd64 and i386) are extracted from the Ubuntu upstream v3.5 kernel. When a new Xenomai package is released and the kernel version updated, these files may be directly replaced with suitable files from the matching Ubuntu kernel packages. The Ubuntu kernel packages were chosen because they had a package with a matching kernel version, and because the .config files are well-tested to support an enormous variety of hardware.

The Xenomai kernel .config files contain the minimal changes to enable Xenomai and i-pipe, and provided by Gilles Chanteperdrix, a key Xenomai developer. The files contain a few extra settings to override unsuitable options in the base .config files. These are well-documented in the file with pointers to more information.

During the kernel build, the debian rules use kconfigtool.py to overlay the Xenomai configuration on top of the base configuration to create the final .config file used in the kernel build.

i-pipe and Xenomai patches

The i-pipe and Xenomai patches to the kernel source are provided in the Xenomai distribution tarball. The Xenomai source debian rules create the linux-patch-xenomai package, which puts the patches in /usr/src/kernel-patches/diffs/xenomai.

The kernel package /debian files are modified to apply those patches at build time to make updating easier: the package maintainer doesn't need to patch the kernel source manually.

Xenomai packages

The Xenomai packages are built from the release tarballs. There are just a few changes that must be made when building: debian/changelog must be updated, and the --enable-dlopen-skins and --enable-x86-tsc options must be added to CONFIG_OPTS in the debian/rules file.

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions | View current revision
Edited January 27, 2013 10:06 pm by Zultron (diff)
Published under a Creative Commons License