#!/bin/sh # $Id: root.sh,v 1.5 2015/02/27 19:26:09 asau Stab $ set -e _progname="${0##*/}" usage="usage: ${0##*/} {create|delete|start|stop} path" while getopts "" opt; do case $opt in \?) echo "$usage" 1>&2; exit 1;; esac done shift $(expr $OPTIND - 1) if [ $# -lt 2 ]; then echo "$usage" 1>&2; exit 1; fi create_root () { : ${1:?usage: "$0" path} path="$1" : ${OBJDIR:=/usr/obj} : ${RELEASEDIR:="${OBJDIR}"/releasedir} : ${SETSDIR:="${RELEASEDIR}"/"$(uname -m)"/binary/sets} : ${SETS:="base comp etc text"} : ${SETS:="base comp etc games man misc text"} set -e mkdir -p "$path" cd "$path" for s in ${SETS}; do pax -zrpe -f "${SETSDIR}/$s.tgz"; done (cd dev && sh MAKEDEV std fd ptm random) } delete_root () { : ${1:?usage: "$0" path} path="$1" rm -rf "$path" } start_root () { : ${1:?usage: "$0" path} path="$1" mount_ptyfs ptyfs "${path}"/dev/pts } stop_root () { : ${1:?usage: "$0" path} path="$1" umount "$path"/dev/pts } root () { local cmd path cmd="$1" path="$2" case "$1" in create) create_root "$2";; delete) delete_root "$2";; start) start_root "$2";; stop) stop_root "$2";; esac } root ${1:+"$@"}