Script bash "CHROOTER"
#!/bin/bash #----------------------------------------------------------------------- # # Site 'ERMAIA - 15 août 2011 - Copie libre (sous licence GNU) # # CHROOTER sur une partition # #----------------------------------------------------------------------- # # # Nécessite le script complémentaire suivant : if test ! -x /usr/bin/montreFST.sh then echo; echo "___ Le fichier /usr/bin/montreFST.sh n'existe pas ou n'est pas exécutable___"; exit 1 fi # VERT="\\033[1;32m" NORMAL="\\033[0;39m" ROUGE="\\033[1;31m" ROSE="\\033[1;35m" BLEU="\\033[1;34m" BLANC="\\033[0;02m" BLANCLAIR="\\033[1;08m" JAUNE="\\033[1;33m" CYAN="\\033[1;36m" # # Usage if [[ $1 == "--help" ]] then clear echo -e "$VERT" cat <<EOF Version : 3.1.2.1 - Site 'ERMAIA Les deux scripts MONTER et CHROOTER interfacent les commandes MOUNT et CHROOT, en mode graphique (terminal virtuel) ou sur une console texte.. Ils sont écrits avec AWK et CDIALOG ; FSARCHIVER est utilisé pour lister les disques durs et les partitions. [ Un troisième script est nécessaire ('montreFST.sh')] Le script CHROOTER est appelé habituellement par le script MONTER [option : '--chroot']. Il peut être exécuté seul, dès lors que la partition à travailler est déjà montée sur /mnt/ et que l'on a utilisé comme nom de montage l'identifiant /dev/['partition'] : ('/mnt/sda1', par exemple) Option unique : --help = Cette aide succincte. EOF echo -e "$NORMAL" exit 0 fi # touch /tmp/final2.txt # # Voir les partitions existantes et celles qui sont montées (2 cas de figure : soit console graphique [tty --> pts], # soit console texte [tty --> tty], on filtre en conséquence. # tty | awk '$1~/pts/ { system("terminal --hide-toolbars --hide-menubar --geometry=90x30 --execute /usr/bin/montreFST.sh --graph &") }' # tty | awk '$1 ~/tty/ { system("/usr/bin/montreFST.sh") }' # # Boîte d'entrée clavier 'dialog' : partition sur laquelle on va chrooter # touch /tmp/dialoghdatmp && FICHTMP=/tmp/dialoghdatmp trap "rm -f $FICHTMP" 0 1 2 3 15 # # Donner un exemple de partition sur laquelle chrooter : Partition=`cat /tmp/Partition.txt` # dialog \ --backtitle "Bon, je fais un CHROOT sur quelle partition ?" --title "CHROOT " \ --ok-label "Valider" --cancel-label "Quitter" \ --inputbox "Entrer la reference de la partition cible (exemple :"$Partition")" 12 28 $Partition 2> $FICHTMP if [ $? != 0 ]; then echo $? exit $? fi # # Enlever les 'espaces' parasites sed 's/\s\{1,\}//' < $FICHTMP | sed 's/\s\{1,\}//' | sed 's/\s\{1,\}//' | sed 's/\s\{1,\}//' > /tmp/final2.txt Partition=`cat /tmp/final2.txt` # echo "===========" echo -e "$VERT" 'Partition = '"$NORMAL"$Partition echo "===========" # # Vérifier que '$Partition' est montée et est bien montée sur '/mnt/' if ! grep -wq "/dev/"$Partition /etc/mtab then clear echo ; echo "Erreur : "$Partition" n'est pas montée ; la partition doit d'abord être montée ; je sors (bien dépité)." exit 1 fi if ! grep -wq "/mnt/"$Partition /etc/mtab then clear echo ; echo "Erreur : "$Partition" doit être montée sur /mnt sous son propre nom : /mnt"$Partition" ; je sors (bien dépité)." exit 1 fi clear echo -e "$VERT" 'Préparation du chroot' "$NORMAL" sleep 1 # CHROOT dans une console echo -e "$VERT" 'Environnement matériel :' "$NORMAL" mount -v -t proc /proc /mnt/$Partition/proc mount -v -o bind /dev /mnt/$Partition/dev mount -v -o bind /dev/pts /mnt/$Partition/dev/pts mount -v -t sysfs /sys /mnt/$Partition/sys echo -e "$VERT" 'Montage optionnel :' "$NORMAL" mount -v -o bind /run /mnt/$Partition/run echo -e "$VERT" 'Accéder aux variables EFI, sur un système UEFI (GRUB etc ...) ' "$NORMAL" mount -v -o bind /sys/firmware/efi/efivars /mnt/$Partition/sys/firmware/efi/efivars echo -e "$VERT" 'Accéder à inrernet :' "$NORMAL" cp -v /etc/resolv.conf /mnt/$Partition/etc/resolv.conf echo -e "$VERT" 'Accéder aux applications graphiques :' "$NORMAL" xhost +local: # echo "===========" echo -e "$VERT" "Si l'on souhaite créer une 'Invite chroot', pour pouvoir différencier l'environnement chroot, taper dans la console de chroot la commande suivante :" "$NORMAL" echo 'export PS1=`echo -e "\\033[1;31m"`chroot_$PS1`echo -e "\\033[0;39m"`' echo -e "$VERT" "Pour utiliser des applications graphiques en chroot : Exporter la valeur de la variable DISPLAY, en tapant dans la console de chroot la commande suivante :" "$NORMAL" echo "export DISPLAY=$DISPLAY" echo echo -e "$VERT" "S'il est nécessaire de charger la configuration locale de bash, taper dans la console de chroot les deux commandes suivantes : :" "$NORMAL" echo " source /etc/profile" echo " source ~/.bashrc" echo -e "$JAUNE" "Console de CHROOT (taper 'exit' pour sortir) :" "$NORMAL" echo chroot /mnt/$Partition ``bash -i'' # umount -v --recursive /mnt/$Partition if [ $? != 0 ] then echo -e "$JAUNE" "Démonter à la main, ou taper la commande :" "$NORMAL" echo " umount -v --force --recursive /mnt/$Partition" fi # # exit 0 # #-----------------------------FIN------------------------------------ #
Copier
Captures d'écran - Script "CHROOTER"