
Building the current master branch fails with: #8 4.712 ninja: job failed: cc -Ilib/libfuse3.a.p -Ilib -I../lib -Iinclude -I../include -I. -I.. -fdiagnostics-color=always -Wall -Winvalid-pch -Wextra -std=gnu11 -O2 -g -D_REENTRANT -DHAVE_LIBFUSE_PRIVATE_CONFIG_H -Wno-sign-compare -D_FILE_OFFSET_BITS=64 -Wstrict-prototypes -Wmissing-declarations -Wwrite-strings -fno-strict-aliasing -Wno-unused-result -DHAVE_SYMVER_ATTRIBUTE -fPIC -pthread -DFUSE_USE_VERSION=317 '-DFUSERMOUNT_DIR="/usr/bin"' -MD -MQ lib/libfuse3.a.p/fuse_signals.c.o -MF lib/libfuse3.a.p/fuse_signals.c.o.d -o lib/libfuse3.a.p/fuse_signals.c.o -c ../lib/fuse_signals.c #8 4.713 ../lib/fuse_signals.c:19:10: fatal error: execinfo.h: No such file or directory #8 4.713 19 | #include <execinfo.h> #8 4.713 | ^~~~~~~~~~~~ #8 4.713 compilation terminated. #8 13.65 ninja: subcommand failed Use the latest stable version, which is 3.16.2 Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
fuse-overlayfs
An implementation of overlay+shiftfs in FUSE for rootless containers.
Usage:
$ fuse-overlayfs -o lowerdir=lowerdir/a:lowerdir/b,upperdir=up,workdir=workdir merged
Specify a different UID/GID mapping:
$ fuse-overlayfs -o uidmapping=0:10:100:100:10000:2000,gidmapping=0:10:100:100:10000:2000,lowerdir=lowerdir/a:lowerdir/b,upperdir=up,workdir=workdir merged
Requirements:
If you are not using the static build as explained in the next chapter, your system needs libfuse
> v3.2.1.
- On Fedora:
dnf install fuse3-devel
- On Ubuntu > v19.04:
apt install libfuse3-dev
Also, please note that, when using fuse-overlayfs
from a user namespace
(for example, when using rootless podman
) a Linux Kernel > v4.18.0 is required.
Static Build:
This project provides a convenient way to automatically perform a static build using a container. The result is a self-contained binary without dependencies, that can be copied across hosts.
-
Install
buildah
as explained here; -
Both the build and deploy host require the special device
/dev/fuse
; there are a few ways to obtain it:
- install
fuse2
orfuse3
using the package manager of your choice (dnf, apt, pacman, etc): the install script will usually create the device automatically; or - manually create the device with the command
mknod /dev/fuse -m 0666 c 10 229
(see this code)
-
Clone this repository, and switch to the top-level folder containing the file "
Containerfile.static.ubuntu
"; -
Launch the build with the command (note the single dot
.
at the end):
buildah bud -v $PWD:/build/fuse-overlayfs -t fuse-overlayfs -f ./Containerfile.static.ubuntu .
- Copy the resulting binary to your host:
sudo cp fuse-overlayfs /usr/bin/