#!/bin/sh # VERSION 0.0.1 # Script creted by Ryabinin Sergey Vladimirovich # dev@brigar.ru # set -e help(){ printf "Usage: Create chroot $0 -c your_name_chroot Mount chroot $0 -m your_name_chroot Umount chroot $0 -u your_name_chroot Destroy chroot $0 -r your_name_chroot " } chroot_create(){ CHROOT_DIR="/chroot/$1" mkdir -p ${CHROOT_DIR} mkdir -p ${CHROOT_DIR}/dev mkdir -p ${CHROOT_DIR}/bin mkdir -p ${CHROOT_DIR}/libexec mkdir -p ${CHROOT_DIR}/lib mkdir -p ${CHROOT_DIR}/usr/lib mkdir -p ${CHROOT_DIR}/usr/ports mkdir -p ${CHROOT_DIR}/usr/bin mkdir -p ${CHROOT_DIR}/usr/sbin mkdir -p ${CHROOT_DIR}/usr/share mount -t nullfs -o ro,nosuid,noexec /usr/ports/ ${CHROOT_DIR}/usr/ports mount -t nullfs -o ro,nosuid /usr/lib/ ${CHROOT_DIR}/usr/lib mount -t nullfs -o ro,nosuid /libexec/ ${CHROOT_DIR}/libexec mount -t nullfs -o ro,nosuid /lib/ ${CHROOT_DIR}/lib mount -t nullfs -o ro,nosuid /usr/sbin/ ${CHROOT_DIR}/usr/sbin mount -t nullfs -o ro,nosuid /usr/bin/ ${CHROOT_DIR}/usr/bin mount -t nullfs -o ro,nosuid /bin/ ${CHROOT_DIR}/bin mount -t nullfs -o ro,nosuid /usr/share/ ${CHROOT_DIR}/usr/share mount -t devfs devfs ${CHROOT_DIR}/dev printf "Chroot created: ${CHROOT_DIR} and entered " chroot ${CHROOT_DIR} } chroot_destroy(){ CHROOT_DIR="/chroot/$1" umount -f ${CHROOT_DIR}/usr/lib umount -f ${CHROOT_DIR}/libexec umount -f ${CHROOT_DIR}/lib umount -f ${CHROOT_DIR}/usr/ports umount -f ${CHROOT_DIR}/usr/sbin umount -f ${CHROOT_DIR}/bin umount -f ${CHROOT_DIR}/usr/bin umount -f ${CHROOT_DIR}/dev umount -f ${CHROOT_DIR}/usr/share rm -rf ${CHROOT_DIR} echo "Chroot destroy: ${CHROOT_DIR}" } chroot_umount(){ CHROOT_DIR="/chroot/$1" umount -f ${CHROOT_DIR}/usr/lib umount -f ${CHROOT_DIR}/libexec umount -f ${CHROOT_DIR}/lib umount -f ${CHROOT_DIR}/usr/ports umount -f ${CHROOT_DIR}/usr/sbin umount -f ${CHROOT_DIR}/usr/bin umount -f ${CHROOT_DIR}/bin umount -f ${CHROOT_DIR}/dev umount -f ${CHROOT_DIR}/usr/share echo "Chroot umount: ${CHROOT_DIR}" } chroot_mount(){ CHROOT_DIR="/chroot/$1" mount -t nullfs -o ro,nosuid,noexec /usr/lib/ ${CHROOT_DIR}/usr/lib mount -t nullfs -o ro,nosuid,noexec /libexec/ ${CHROOT_DIR}/libexec mount -t nullfs -o ro,nosuid,noexec /lib/ ${CHROOT_DIR}/lib mount -t nullfs -o ro,nosuid,noexec /usr/ports/ ${CHROOT_DIR}/usr/ports mount -t nullfs -o ro,nosuid /usr/sbin/ ${CHROOT_DIR}/usr/sbin mount -t nullfs -o ro,nosuid /usr/bin/ ${CHROOT_DIR}/usr/bin mount -t nullfs -o ro,nosuid /bin/ ${CHROOT_DIR}/bin mount -t nullfs -o ro,nosuid /usr/share/ ${CHROOT_DIR}/usr/share mount -t devfs devfs ${CHROOT_DIR}/dev echo "Chroot mount: ${CHROOT_DIR}" } if [ "${#1}" -eq 0 ] || [ "${#2}" -eq 0 ]; then help fi if [ "${1}" = "-c" ] && [ "${#2}" -gt 0 ]; then chroot_create $2 fi if [ "${1}" = "-u" ] && [ "${#2}" -gt 0 ]; then chroot_umount $2 fi if [ "${1}" = "-r" ] && [ "${#2}" -gt 0 ]; then chroot_destroy $2 fi if [ "${1}" = "-m" ] && [ "${#2}" -gt 0 ]; then chroot_mount $2 fi