#!/bin/bash # -*- coding: utf-8-unix -*- TEXTDOMAIN=vbootstrap TEXTDOMAINDIR=/usr/share/locale trap clean-vchroot EXIT Usage(){ cat<<EOF Usage: $(basename $0) [OPTION...] [COMMAND] - run command or shell in a chroot Options: --chroot: use specified chroot [version] (default: ${DEFAULT_VERSION}) $(/usr/sbin/vbootstrap | sed -e s/^Usage:.*// -e s/^E:.*//) EOF } ############################################################################## . /usr/share/vbootstrap/libvbuilder.sh check-parameter(){ [ -z "$*" ] && Usage && return 1 while [ ! -z "$*" ]; do case $1 in --help|help) Usage return 1 ;; --chroot) shift check-next-parameter $1 || return 1 ;; esac shift done return 0 } check-next-parameter(){ [ -z "$1" ] && echo $"E: Missing some parameters after $1" && return 1 [ $(echo $1 | grep '^-') ] && \ echo $"E: Missing some parameters after $1" && return 1 return 0 } clean-vchroot(){ # mount-chroot --umount /home mount-chroot --umount /tmp mount-chroot --umount vfs mount-chroot --umount archives_dir apt-get-update --host return 0 } main(){ setup-vbootstrap || return 1 __chroot="/usr/sbin/chroot ${BUILD_ROOT}" ## setarch ix86 if ix86 chroot on x86_64 host [ $with_ix86_on_x86_64 -eq 1 ] && \ __chroot="/usr/sbin/chroot ${BUILD_ROOT} setarch ${VARCH}" mount-chroot archives_dir mount-chroot vfs mount-chroot /tmp # mount-chroot /home apt-get-update --chroot ## copy host's configurations of /etc #passwd shadow group gshadow for i in resolv.conf hosts; do [ ! -f ${BUILD_ROOT}/etc/${i}.orig ] && \ cp -pf ${BUILD_ROOT}/etc/${i} ${BUILD_ROOT}/etc/${i}.orig && \ cp -pf /etc/${i} ${BUILD_ROOT}/etc done cp -Ppf /etc/localtime ${BUILD_ROOT}/etc $__chroot $* || return 1 return 0 } ############################################################################## # setup-vchroot || exit 1 setup-vbuilder || exit 1 check-parameter $* || exit 1 while [ $# -gt 0 ]; do tmpARG=$1 case $tmpARG in --chroot|-c) shift ;; *) break ;; esac case $tmpARG in --chroot|-c) VERSION=$1 ;; esac shift done main $* || exit 1 exit