Skip to content

Instantly share code, notes, and snippets.

@Ruinland
Created March 6, 2016 00:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ruinland/0d633a05c4f50783d2af to your computer and use it in GitHub Desktop.
Save Ruinland/0d633a05c4f50783d2af to your computer and use it in GitHub Desktop.
Lightweight rootfs for chroot using OverlayFS
#!/bin/sh
# Since we want to create a exact sandbox of host,
# choose root to be the lower directory.
container_dir=$(mktemp -d --tmpdir=$HOME)
printf '%s ...\n' "Creating container directory: $container_dir"
original_username=$(whoami)
mkdir -p $container_dir/{work,upper,overlay_root}
upper_dir=$container_dir"/upper"
work_dir=$container_dir"/work"
merged=$container_dir"/overlay_root"
lower_dir="/"
printf '%s ...\n' "Making required directories for OverlayFS mounting"
sudo mount -t overlay overlay -o lowerdir=$lower_dir,upperdir=$upper_dir,workdir=$work_dir $merged
sudo mount proc "$merged/proc" -t proc -o nosuid,noexec,nodev &&
sudo mount sys "$merged/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
sudo mount udev "$merged/dev" -t devtmpfs -o mode=0755,nosuid &&
sudo mount devpts "$merged/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
sudo mount run "$merged/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
sudo mount tmp "$merged/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
sudo chroot $merged su $original_username
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment