Script chroot.sh
Jump to navigation
Jump to search
#!/bin/sh # # NAME /srv/config/chroot.sh # VERSION 1.5.1 # REQUIRED mount, findmnt, chroot # ### BEGIN INIT INFO # Provides: chroot.sh # Required-Start: $remote_fs $local_fs $syslog # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Chroot Environment # Description: A chroot environment used to host # a separate copy of the software system. ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin CHROOT=/srv/CHROOT RUNPATH=/srv/config SCRIPT="${RUNPATH}/linuxrc.sh" case "$1" in start) mkdir -p "${CHROOT}/lib/modules" test -e "${CHROOT}/dev/kmsg" || touch "${CHROOT}/dev/kmsg" findmnt "${CHROOT}/proc" > /dev/null || mount -t proc none "${CHROOT}/proc" -o rw,nosuid,nodev,noexec,relatime findmnt "${CHROOT}/sys" > /dev/null || mount -t sysfs none "${CHROOT}/sys" -o rw,nosuid,nodev,noexec,relatime findmnt "${CHROOT}/sys/fs/cgroup" > /dev/null || mount -t cgroup2 none "${CHROOT}/sys/fs/cgroup" -o rw,nosuid,nodev,noexec,relatime findmnt "${CHROOT}/dev/pts" > /dev/null || mount -t devpts none "${CHROOT}/dev/pts" findmnt "${CHROOT}/lib/modules" > /dev/null || mount -o bind,ro /lib/modules "${CHROOT}/lib/modules" findmnt "${CHROOT}/boot" > /dev/null || mount -o bind,ro /boot "${CHROOT}/boot" findmnt "${CHROOT}/dev/kmsg" > /dev/null || mount -o bind,ro /dev/kmsg "${CHROOT}/dev/kmsg" /usr/sbin/chroot "${CHROOT}" env -i TERM=linux HOME=/root bash --login --posix -c "${SCRIPT} ${RUNPATH} start" RET_CODE=$? ;; stop) /usr/sbin/chroot "${CHROOT}" env -i TERM=linux HOME=/root bash --login --posix -c "${SCRIPT} ${RUNPATH} stop" RET_CODE=$? findmnt "${CHROOT}/dev/kmsg" > /dev/null && umount "${CHROOT}/dev/kmsg" findmnt "${CHROOT}/boot" > /dev/null && umount "${CHROOT}/boot" findmnt "${CHROOT}/lib/modules" > /dev/null && umount "${CHROOT}/lib/modules" findmnt "${CHROOT}/dev/pts" > /dev/null && umount "${CHROOT}/dev/pts" findmnt "${CHROOT}/sys/fs/cgroup" > /dev/null && umount "${CHROOT}/sys/fs/cgroup" findmnt "${CHROOT}/sys" > /dev/null && umount "${CHROOT}/sys" findmnt "${CHROOT}/proc" > /dev/null && umount "${CHROOT}/proc" ;; restart) /usr/sbin/chroot "${CHROOT}" env -i TERM=linux HOME=/root bash --login --posix -c "${SCRIPT} ${RUNPATH} stop" sleep 3s /usr/sbin/chroot "${CHROOT}" env -i TERM=linux HOME=/root bash --login --posix -c "${SCRIPT} ${RUNPATH} start" RET_CODE=$? ;; status|reload|force-reload) echo "Error: '$1' not supported" >&2 RET_CODE=1 ;; *) echo "Usage: $0 {start|stop|restart}" RET_CODE=1 ;; esac exit "${RET_CODE}" # End