From 7eb693d2ff404feb11e9c4404e8f44eebf26e0c5 Mon Sep 17 00:00:00 2001 From: Jonatan Schlag Date: Sun, 23 Jun 2019 15:18:16 +0200 Subject: [PATCH] Add chroot wrapper Signed-off-by: Jonatan Schlag --- functions.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/functions.sh b/functions.sh index 6e28793..095e3dd 100644 --- a/functions.sh +++ b/functions.sh @@ -318,3 +318,35 @@ parse_cmdline() { 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" +} -- 2.39.2