multistrap/examples/chroot.sh

41 lines
1.3 KiB
Bash
Executable file

#!/bin/sh
set -e
# The script is called with the following arguments:
# $1 = $DIR - the top directory of the debootstrapped system
# $2 = $ARCH - the specified architecture, already checked with dpkg-architecture.
# setup.sh needs to be executable.
TARGET=$1
# upstart support
if [ -x "$TARGET/sbin/initctl" ]; then
echo "initctl: Trying to prevent daemons from starting in $TARGET"
mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
echo \
"#!/bin/sh
echo
echo echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > "$TARGET/sbin/start-stop-daemon"
chmod 755 "$TARGET/sbin/start-stop-daemon"
fi
if [ -x "$TARGET/sbin/initctl" ]; then
echo "initctl: Trying to prevent daemons from starting in $TARGET"
mv "$TARGET/sbin/initctl" "$TARGET/sbin/initctl.REAL"
echo \
"#!/bin/sh
echo
echo \"Warning: Fake initctl called, doing nothing\"" > "$TARGET/sbin/initctl"
chmod 755 "$TARGET/sbin/initctl"
fi
# sysvinit support - exit value of 101 is essential.
if [ -x "$TARGET/sbin/init" && ! -f "$TARGET/usr/sbin/policy-rc.d" ]; then
echo "sysvinit: Using policy-rc.d to prevent daemons from starting in $TARGET"
mkdir -p $TARGET/usr/sbin/
cat > $TARGET/usr/sbin/policy-rc.d << EOF
#!/bin/sh
echo "sysvinit: All runlevel operations denied by policy" >&2
exit 101
EOF
chmod a+x $TARGET/usr/sbin/policy-rc.d
fi