#!/usr/bin/env bash set -eu UMOUNT=0; synopsis() { cat << EOF Usage : `basename $0` [-h] EOF } help() { cat << EOF `basename $0` monte (via fuse) le disque et configure fakechroot pour l'utiliser. `synopsis` -h : affiche cette aide EOF } usage() { synopsis exit 1 } args() { local opt while getopts "hu" opt; do case $opt in h) help; exit 0;; u) UMOUNT=1;; ?) usage;; esac done } vdnUmount() { fusermount -u $FAKECHROOT_DIR/unionfs || : fusermount -u $FAKECHROOT_DIR//unionfs-2/etc ||: fusermount -u $FAKECHROOT_DIR//unionfs-2/home ||: fusermount -u $FAKECHROOT_DIR//unionfs-2/tmp ||: fusermount -u $FAKECHROOT_DIR/unionfs-1 || : fusermount -u $FAKECHROOT_DIR/unionfs-2 || : fusermount -u $FAKECHROOT_DIR/part || : fusermount -u $FAKECHROOT_DIR/offset || : } # Programme principal VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh args "$@" FAKECHROOT_DIR=/tmp/vdn-fakechroot-$USER if [ $UMOUNT = 1 ]; then vdnUmount exit $? fi [ ! -d $FAKECHROOT_DIR/offset ] && mkdir -p $FAKECHROOT_DIR/offset || : bbfs $VDN_PATH/files $FAKECHROOT_DIR/offset [ ! -d $FAKECHROOT_DIR/part ] && \ mkdir $FAKECHROOT_DIR/part || : ext4fuse $FAKECHROOT_DIR/offset/DebianBuster-amd64.disk $FAKECHROOT_DIR/part -o allow_other [ ! -d $FAKECHROOT_DIR/unionfs-1 ] && mkdir -p $FAKECHROOT_DIR/unionfs-1 || : unionfs -o max_files=64000 -o allow_other -o relaxed_permissions $FAKECHROOT_DIR/part=RW $FAKECHROOT_DIR/unionfs-1 #rm -Rf $FAKECHROOT_DIR/unionfs-1/etc # -o uid=1000 -o gid=1000 [ ! -d $FAKECHROOT_DIR/unionfs-2/etc ] && mkdir -p $FAKECHROOT_DIR/unionfs-2/etc || : unionfs -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions /etc=RW $FAKECHROOT_DIR/unionfs-2/etc [ ! -d $FAKECHROOT_DIR/unionfs-2/home ] && mkdir -p $FAKECHROOT_DIR/unionfs-2/home || : unionfs -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions /home=RW $FAKECHROOT_DIR/unionfs-2/home [ ! -d $FAKECHROOT_DIR/unionfs-2/tmp ] && mkdir -p $FAKECHROOT_DIR/unionfs-2/tmp || : unionfs -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions /tmp=RW $FAKECHROOT_DIR/unionfs-2/tmp [ ! -d $FAKECHROOT_DIR/unionfs ] && mkdir -p $FAKECHROOT_DIR/unionfs || : ##unionfs -o cow -o max_files=64000 -o allow_other,use_ino,suid,dev,nonempty /=RW:$FAKECHROOT_DIR/part=RO $FAKECHROOT_DIR/unionfs set -x unionfs -o cow -o max_files=64000 -o allow_other,use_ino,suid,dev -o relaxed_permissions \ $FAKECHROOT_DIR/unionfs-2=RW:$FAKECHROOT_DIR/unionfs-1=RO $FAKECHROOT_DIR/unionfs #echo shell #bash #exit echo fakechroot:$FAKECHROOT_DIR/unionfs fakechroot -s chroot $FAKECHROOT_DIR/unionfs /bin/bash -i echo Press Enter to umont read vdnUmount #[ ! -d $FAKECHROOT_DIR/unionfs-home/home ] && mkdir -p $FAKECHROOT_DIR/unionfs-home/home || : #unionfs -o cow -o max_files=64000 -o allow_other,use_ino,suid,dev,nonempty $FAKECHROOT_DIR/part=RO $FAKECHROOT_DIR/unionfs #ls $FAKECHROOT_DIR/part # config fakechroot #PATH="$PATH:/bin:/usr/bin" #export FAKECHROOT_DIR #DIR=$FAKECHROOT_DIR/part #export FAKECHROOT_EXCLUDE_PATH=/tmp:/proc:/dev:/sys:/var/run:/home:/etc/passwd #export LD=$DIR/lib:$DIR/usr/lib:$DIR/usr/lib/x86_64-linux-gnu:$DIR/lib/x86_64-linux-gnu:/lib:/usr/lib:/usr/lib/x86_64-linux-gnu:/lib/x86_64-linux-gnu:$DIR/usr/lib/x86_64-linux-gnu/pulseaudio:$DIR/usr/lib/x86_64-linux-gnu:$DIR/lib/x86_64-linux-gnu:$VDN_PATH/distribs/lib #export GIO_MODULE_DIR=$DIR/usr/lib/x86_64-linux-gnu/gio #export LD_LIBRARY_PATH=$VDN_PATH/distribs/lib #echo "LD_LIBRARY_PATH:$LD_LIBRARY_PATH" #echo "### before fakechroot..." #echo "export LD_LIBRARY_PATH=$FAKECHROOT_DIR/part/lib/x86_64-linux-gnu" #/usr/bin/fakechroot -s /usr/sbin/chroot $FAKECHROOT_DIR/part $VDN_PATH/bin/vdn-exec-in-fakechroot $@ #/usr/bin/fakechroot -s /usr/sbin/chroot $FAKECHROOT_DIR/part /bin/bash -c "/bin/bash $VDN_PATH/bin/vdn" #fakechroot /usr/sbin/chroot $FAKECHROOT_DIR/part /bin/bash #proot -r $FAKECHROOT_DIR/part /bin/bash #/usr/bin/fakechroot /usr/sbin/chroot $FAKECHROOT_DIR/part $VDN_PATH/bin/vdn-exec-in-fakechroot ls #/usr/bin/fakechroot /usr/sbin/chroot $FAKECHROOT_DIR/part /bin/ls #/usr/bin/fakechroot /bin/bash -c "/usr/sbin/chroot $FAKECHROOT_DIR/part $VDN_PATH/bin/vdn-exec-in-fakechroot $@"