Linux Cross-Target Support

The files provided here were used at DLS to generate embedded Linux systems for use with EPICS control. Note that all of these files have been configured to work specifically within the DLS development environment which has its own quirks.



If you are interested in using these tools or have any problems or questions, then please contact me and I'll try and improve the documentation!


Version iconSource Code Documentation
1.2 iconrootfs-1.2.tgz Rootfs 1.2 docs
1.0 iconrootfs-1.0.tgz Rootfs 1.0 docs

A git repository containing up to date work in progress for rootfs can be cloned by running the command:

git clone


The rootfs builder is a collection of scripts to automate the building and testing of a complete embedded Linux root filesystem. The documentation in the the docs directory is a bit fragmentary, so a quick overview of how the system works follows.

To build the documentation you'll need a copy of sphinx-build, just run make -C docs, and detailed documentation will be in docs/html/index.html.

The file CONFIG.example should be copied to a file called CONFIG.local and edited as appropriate -- this file is in Makefile format. The following symbols need to be defined:

ROOTFS_ROOT Where rootfs builds all of its files
TAR_DIRS Where rootfs will find the sources it needs. All component sources used by rootfs must already be present in one of these directories, the rootfs builder does not attempt to automatically do downloads!
TARGET Name of the target configuration to build. This names a configuration in the configs/ directory.

Once CONFIG.local has been set up and $(TAR_DIRS) has been populated the command ./rootfs toolkit must be run; this only needs to be done once. Note that rootfs builds everything from source, but does not automatically download anything.

The configs directory contains example configurations. The configuration specifies exactly what will be built into the target rootfs. The most developed config is colibri/CONFIG, so this is recommended as as starting point, but xlnx-xup/CONFIG is also a good example of a simpler configuration.

The packages directory contains detailed build instructions for cross compiling a variety of components, though in practice the most useful ones are busybox, dropbear, ntp and portmap. I'm afraid the Python build is incomplete (it's a pain to cross compile, and not used in our system).

The options directory contains options used to configure the precise content of the /etc directory. It's a bit clumsy at the moment (and the options/COMMON/resolv.conf file is clearly quite wrong!)

Finally the boot directory contains a selection of bootstrap strategies; you'll almost certainly need to add your own, or customise the nfs or initramfs strategy to suit.