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.