diff options
Diffstat (limited to 'contrib/setup.d/99binfmt')
-rw-r--r-- | contrib/setup.d/99binfmt | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/contrib/setup.d/99binfmt b/contrib/setup.d/99binfmt new file mode 100644 index 00000000..21754520 --- /dev/null +++ b/contrib/setup.d/99binfmt @@ -0,0 +1,46 @@ +#!/bin/sh +# Copyright © 2011 Julian Andres Klode <jak@debian.org> +# +# schroot is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# schroot is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see +# <http://www.gnu.org/licenses/>. +# +##################################################################### + +set -e + +. "$SETUP_DATA_DIR/common-data" +. "$SETUP_DATA_DIR/common-functions" + + +if [ "$STAGE" != "setup-start" ] && \ + [ "$STAGE" != "setup-stop" ] && \ + [ "$STAGE" != "setup-recover" ]; then + exit 0 +elif ! which update-binfmts > /dev/null; then + info "Missing update-binfmts" + exit 0 +fi + +shell="${CHROOT_PATH}/bin/sh" + +for emulator in $(update-binfmts --find "$shell"); do + dst="${CHROOT_PATH}$emulator" + if [ ! -e "$emulator" ]; then + info "Missing emulator: $emulator" + else + [ -e "$dst" ] || touch "$dst" + mount --bind "$emulator" "$dst" + mount -o remount,ro "$dst" + fi +done |