declare -a OPTS_VTAG_CREATE=()
declare -a OPTS_VTAG_ENTER=()
declare -a OPTS_VMEMCTRL=()
+declare -a OPTS_VSPACE=()
declare -a STOPCMD_PREPARE=()
(xgentoo)
test -n "$RUNLEVEL_START" || RUNLEVEL_START="default"
+ RC_PATH=/usr/sbin:/usr/bin:/sbin:/bin
INITCMD_START=( env TERM=$TERM /lib/rcscripts/sh/init-vserver.sh "$RUNLEVEL_START" )
- INITCMD_STOP=( env -i TERM=$TERM RUNLEVEL=0 /sbin/rc shutdown )
+ INITCMD_STOP=( env -i PATH=$RC_PATH TERM=$TERM RUNLEVEL=0 /sbin/rc shutdown )
INITCMD_PREPARE=( $_FAKE_RUNLEVEL 3 /var/run/utmp )
;;
function _generateMemctrlOptions
{
- local vdir="$"
+ local vdir="$1"
local badness
getFileValue badness "$vdir/badness"
OPTS_VMEMCTRL=( --badness "$badness" )
}
+function _generateSpaceOptions
+{
+ local vdir="$1"
+ local d="$vdir"/spaces
+
+ test ! -e "$d"/pid || \
+ OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid )
+
+ test ! -e "$d"/net || {
+ OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net )
+ # network context and namespace don't make much sense
+ _HAVE_CHBIND_OPTIONS=1
+ CHBIND_CMD=()
+ }
+
+ local mask
+ getFileValue mask "$d"/mask || \
+ OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --mask "$mask" )
+}
+
## Usage: prepareInit <vserver-directory>
function prepareInit
{
_generatePersonalityOptions "$1"
_generateTagOptions "$1"
_generateMemctrlOptions "$1"
+ _generateSpaceOptions "$1"
if test -n "$_IS_FAKEINIT"; then
CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit )
# these are things that have to be accessible post-cleanup
for i in "$root" "$__SBINDIR" "$__PKGLIBDIR" "$vdir" \
"$__PKGSTATEDIR" "$__LOCKDIR" /usr/local /tmp "${skip[@]}"; do
- local real=`readlink -f "$i"`
+ local real=`getPhysicalDir "$i"`
test "$i" != "$real" || real=
for j in "$i" "$real"; do
while test -n "$j"; do
done
local -a list_umount
- while read dev path opts; do
+ while read -r dev path opts; do
test -n "$path" || continue
for i in "$root" /dev /proc; do
test "${path#$i}" != "$path" && continue 2