#!/bin/sh # Copyright © 2011 Julian Andres Klode # # 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 # . # ##################################################################### set -e . "$SETUP_DATA_DIR/common-data" . "$SETUP_DATA_DIR/common-functions" . "$SETUP_DATA_DIR/common-config" if [ "$STAGE" != "setup-start" ] && \ [ "$STAGE" != "setup-stop" ] && \ [ "$STAGE" != "setup-recover" ]; then exit 0 elif ! which update-binfmts > /dev/null 2>&1; then info "Missing update-binfmts; not enabling binfmt support" 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; not enabling binfmt support" elif [ ! -e "$dst" ]; then ## [mdw] don't bind over an existing qemu. Two things go wrong: ## firstly, and more obviously, this forces the use of the host qemu, ## which may be too old to run more bleeding-edge code; and secondly, ## if the chroot's emulator is a symlink to a file in the host ## filesystem to be bound into the chroot, then this bind mount is ## never cleaned up. It's just a bad idea. touch "$dst" mount --bind "$emulator" "$dst" mount -o remount,ro,bind "$dst" fi done