Postez ici vos trucs & astuces.

chroot facile avec systemd

#21Messageil y a 3 ans

pour ceux qui ont un label sur chaque partition
un petit script qui liste les partitions par label, monte automatiquement la partition et lance systemd-nspawn (avec ou sans -b)

#!/usr/bin/env bash
pkgname='chrooter'
version="1.01"
excepts=('windows' 'RECOVERY' 'sauvegarde' 'EFI' 'MSR' 'ESP')

declare -A labels
get_labels()
{
    local label=$(mount -l | awk -F'[' '/^\/.*on \/ / {print $2}')
    excepts+=("${label:0:-1}") # ne pas monter la partition système
    local l="", i=0
    local dir="/tmp/mnt"
    mkdir -p "$dir"
    for l in /dev/disk/by-label/*; do
        label="${l##*/}"
        [[ "${excepts[@]} " =~ "${label} " ]] && continue
        mount "/dev/disk/by-label/${label}" "${dir}" &>/dev/null;
        if (( $? == 0 )); then
            if [ -d "${dir}/etc" ]; then
                labels[$i]="${label}"
                ((i++))
            fi
            umount "${dir}"
        fi
    done
    rmdir "$dir"
}

run()
{
    get_labels
    local i=0
   for p in "${!labels[@]}"; do
      printf "  %2s -> %s\n" "$i" "${labels[$i]}"
      ((i++))
   done
   
   echo -n "Numéro de la partition à monter :"
   read i
   part=${labels[$i]}
   if [ -n "$part" ]; then
        dir="/mnt/${labels[$i]}" # "/mnt/${pkgname}"
        mkdir -p "$dir"
        echo "monter : ${labels[$i]} dans ${dir}"
        mount "/dev/disk/by-label/${labels[$i]}" "${dir}"
        if (( $? == 0 )); then
            echo "sudo systemd-nspawn ${USER} -D ${dir}"
            sudo systemd-nspawn ${USER} -D "${dir}"
            umount "$dir"
        else
            echo "Erreur ! /dev/disk/by-label/${labels[$i]} non monté"
        fi
        rmdir "$dir"
   fi
}

main()
{
    unset USER
    while getopts "bh" flags; do
        case $flags in
         b)
            USER="-b"
            ;;
         h)
            echo -e "Usage: ${pkgname} [-b]"
            exit 0
            ;;
         *)
            exit 3
            ;;
      esac
   done

    (($EUID != 0)) && {
      echo "Impossible de faire cette opération sans avoir les droits root."
      exit 99
   }
   #run
   run "$@"
}

if [ "${BASH_SOURCE[0]}" == "$0" ]; then
   main "$@"
   exit 0
fi

chroot facile avec systemd

#22Messageil y a 3 ans

Je viens à titre d'exemple de mettre en ligne une petite vidéo d'une mise à jour d'Arch depuis Manjaro via systemd-nspawn.
Edit: Désolé pour les fôtes dor thaugrafes :mrgreen:

chroot facile avec systemd

#23Messageil y a 3 ans

:bjr:
l'inverse est aussi possible :
aujourd'hui, mise à jour faite à partir de arch de deux manjaro MAIS il ne faut pas avoir une mise à jour du noyau avec la distribution qui gère grub.

chroot facile avec systemd

#24Messageil y a 3 mois

Et depuis une linux mint ? pas de problème :
jbalibeux nous donne la solution

merci @jbalibeux pour le retour

Répondre