AUFS missing in Redhat Fedora, is there an alternative way of stacking directories?

I can't find Aufs in Redhat's Fedora, or any other stackable filesystem for that matter.

It seems this is due to relabelling limitations of SELinux.

Is there a way to achieve similar without resorting to file/dir copy.

I have the following list of directories:

/proj/online/src/main/java
/proj/online/src/main/resources
/proj/online/src/test/java
/proj/client/src/test/scala
/proj/common/src/main/resources
/proj/common/src/main/scala
/proj/common/src/test/resources
/proj/common/src/test/scala
/proj/integration/src/main/resources
/proj/integration/src/main/scala
/proj/integration/src/test/scala
/proj/mockfeedserver/src/main/scala
/proj/mockfeedserver/src/test/scala
/proj/server/src/main/scala
/proj/server/src/test/scala
/proj/foit/src/main/resources
/proj/foit/src/main/scala
/proj/foit/src/test/resources
/proj/foit/src/test/scala

I want to present the following to the compiler*:

/tmp/foo/src/main/scala /tmp/foo/src/main/resources /tmp/foo/src/test/scala /tmp/foo/src/test/resources

With AUFS, I could have achieved this with a couple of commands such as this:

mount -t aufs -o br=r:/proj/common/src/main/scala=r:/proj/integration/src/main/scala=r:/proj/mockfeedserver/src/main/scala=r:/proj/server/src/main/scala=r:/proj/foit/src/main/scala=r -o udba=reval none /tmp/foo/src/main/scala 

So that would have mounted /tmp/foo/src/main/scala as the composite of all the src/main/scala directories.

Great, but I'm on Fedora! In the absence of AUFS or UnionFS I can't really see a way to achieve this. I've heard of mount rebinding before, can it help, or should I change my distribution?


FunionFS is available both on Fedora and in Red Hat EPEL. The package name, of course, is funionfs.


You can install pre-patcher Fedora kernel with aufs support from Copr repository or build a kernel with aufs support

Instructions for installing patcher Fedora kernel with aufs support:

sudo dnf copr enable gipawu/kernel-aufs
sudo dnf update

Instructions for building Fedora kernel with aufs support:

We will start with installing dependacies required to compile kernel

yum install gcc rpmbuild glibc-static git
git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
git clone http://git.code.sf.net/p/aufs/aufs3-standalone
cd linux-2.6
git checkout v3.8
cd ..
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-base.patch
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-proc_map.patch
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-standalone.patch
patch -d linux-2.6 -p1 < aufs3-standalone/aufs3-kbuild.patch

cd aufs3-standalone/
cp -ar fs/aufs ../linux-2.6/fs/
cp include/linux/aufs_type.h ../linux-2.6/include/linux/
cp include/uapi/linux/ ../linux-2.6/include/uapi/linux/

Now we’ll build kernel which is patched with aufs code.

Enable aufs support from Main menu–>File Systems –> Misc. Filesystems –> AUFS support

make menuconfig

Now, we can either compile the kernel directly or create an rpm

make modules_install
make bzimage
make install
make headers_install

or simple,

make rpm-pkg

and then install new kernel and kernel-headers rpm.

Reboot the system with new kernel.