done
}
+chroot_wrapper() {
+ local chroot_dir="${1}"
+
+ shift
+
+ local command
+
+ if [ ! -d ${chroot_dir} ]; then
+ log ERROR "Cannot chroot in a non directory ${chroot_dir}"
+ fi
+
+ mount proc "${chroot_dir}/proc" -t proc -o nosuid,noexec,nodev
+ mount sys "${chroot_dir}/sys" -t sysfs -o nosuid,noexec,nodev,ro
+ mount udev "${chroot_dir}/dev" -t devtmpfs -o mode=0755,nosuid
+ mount devpts "${chroot_dir}/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec
+ mount shm "${chroot_dir}/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev
+ mount /run "${chroot_dir}/run" --bind
+ mount tmp "${chroot_dir}/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
+
+ for command in "$@"
+ do
+ cmd chroot "${chroot_dir}" "${command}"
+ done
+
+ umount "${chroot_dir}/proc"
+ umount "${chroot_dir}/sys"
+ umount "${chroot_dir}/dev/pts"
+ umount "${chroot_dir}/dev/shm"
+ umount "${chroot_dir}/dev"
+ umount "${chroot_dir}/run"
+ umount "${chroot_dir}/tmp"
+}