Suite à la discussion récente du côté anglais sur les utilitaires de remastérisation,
surtout à compter de la page 2,
http://murga-linux.com/puppy/viewtopic. ... ost#987156
j'ai produit, à la demande du membre Davids45, un script qui remplace la procédure
habituelle de remastérisation, et qui économise certainement du temps et
possiblement des maux de tête.
Au lieu de faire une remastérisation comme telle, ce script compacte le contenu du
pupsave en l'archive adrv_xxx.sfs. Si votre Puppy est trop ancien pour reconnaître
l'adrv_xxx.sfs, ce n'est pas grave, vous n'avez qu'à charger l'archive sfs résultante
au moyen de l'utilitaire sfs_load, comme vous feriez pour n'importe quel autre sfs.
Cette façon de faire est beaucoup plus rapide qu'une remastérisation et préserve
l'état virginal du Puppy -- ce que, pour ma part, je trouve important.
Alors voilà. Veuillez prendre la peine de lire les commentaires dans le script - et
au fur et à mesure de son exécution : ils devraient répondre à pas mal de vos
questions. Si vous en avez d'autres, n'hésitez pas à me les poser.
Le script comprend des garde-fous (non-non, c'est pas vous, le fou !) , mais
prenez tout de même les précautions d'usage : copie(s) de sauvegarde et le reste.
Joyeuses Pâques, et à la revoyure !
~~~~~~~~~~~~~~~
Code: Select all
#!/bin/bash
# /opt/local/bin/psave2adrv.sh -- Version bilingue FR-EN | Bilingual (EN-FR) version --
# Alternately, you can save this script in: | À la place, vous pouvez enregistrer ce script dans :
# /root/my-applications/bin/psave2adrv.sh
#
########## # Usage: (EN)
# First, enter the directory where your Pup is located and open a terminal there.
# Then type: psave2adrv.sh name-and-version-of-your-Pup
#
# Example: psave2adrv.sh xenial_7.0.6
# You have to change this variable to match the Pup's name and version.
#
########## # Usage : (FR)
# D'abord entrer dans le répertoire où se trouve votre Puppy et y ouvrir une console.
# Puis taper : psave2adrv.sh nom-et-version-de-votre-Puppy
#
# Exemple : psave2adrv.sh xenial_7.0.6
# Vous devez changer cette variable pour qu'elle corresponde au nom et à la version du Puppy.
####
# © musher0, 2018-03-31. GPL3 # https://opensource.org/licenses/GPL-3.0
####
# LANGVx="$LANG";LANG=en_CA # For tests. | Pour les tests.
if [ "$1" = "" ];then
case "${LANG:0:2}" in
fr) echo -e "\n \e[33m\e[4mVeuillez redémarrer avec le nom et la version de\e[24m
\e[4mvotre Puppy comme 1er paramètre après la commande.\e[24m
Par ex. : psave2adrv.sh \e[4mxenial_7.0.6\e[0m\n" ;;
en|*) echo -e "\n\t\e[33m\e[4mPlease restart with the name and version of\e[24m
\e[4myour Pup as the first parameter after the command.\e[24m
E.g.: psave2adrv.sh \e[4mxenial_7.0.6\e[0m\n" ;;
esac
exit
fi
ReceivingDir="adrv_$1"
mkdir -p $ReceivingDir # 1st part: copy # 1ère partie : copie
cd $ReceivingDir
rsync -avz --exclude .wh.* /initrd/pup_rw/* . # Don't forget the dot! # N'oubliez pas le point !
wait # To make sure the copy is finished before we start squashing.
# Pour que la copie soit terminée avant de commencer à construire l'archive squash.
cd .. # 2nd part: squash # 2e partie : construction de l'archive squash.
if [ -f $ReceivingDir.sfs ];then # Precaution
case "${LANG:0:2}" in fr) echo -e "\n\e[33m\e[4mSi on continue, l'archive $ReceivingDir.sfs\e[24m
\e[4mexistante sera détruite (effacée). -- Ça va ? --\e[24m\n
\e[4mTaper 'n' ou 'N' pour quitter; toute autre touche pour continuer.\e[0m\n" ;;
en|*) echo -e "
\e[33m\e[4mIf we continue, the existing $ReceivingDir.sfs\e[24m
\e[4mfile will be destroyed (erased). -- Is this ok? --\e[24m\n
\e[4mType 'n' or 'N' to exit; any other key to continue.\e[0m\n" ;;
esac
read Answer1
case "$Answer1" in n|N)exit ;;
esac
fi
mksquashfs $ReceivingDir/ $ReceivingDir.sfs -noappend -all-root -b 1048576 -comp xz -Xdict-size 100%
# The last part of this line < -b 104... etc. > insure pretty much maximum compression
# of the sfs archive. It takes a couple of minutes, depending on the size of the pupsave file.
# La dernière partie de cette ligne < -b 104... etc. > assure une compression quasi maximale
# de l'archive sfs. Cela prend +/- deux minutes, selon la taille du pupsave.
case "${LANG:0:2}" in fr) echo -e "\n \e[33m\e[4mEnlever $ReceivingDir/ ?\e[24m
\t\e[4mTaper 'o' or 'O' for 'oui', toute autre touche pour 'non'.\e[0m" ;;
en|*) echo -e "\n \e[33m\e[4mRemove $ReceivingDir/ ?\e[24m
\t\e[4mType 'y' or 'Y' for 'yes', any other key for 'no'.\e[0m" ;;
esac
read Answer2
case "$Answer2" in o|O|y|Y)rm -rf $ReceivingDir ;; # rmdir $ReceivingDir
esac
case "${LANG:0:2}" in fr)echo -e "\n \e[33m\e[4mC'est fait!\e[24m
\t \e[4mVeuillez redémarrer pour activer votre nouvel adrv.\e[24m
\t\e[7m\e[4mImportant -- \e[4mVeuillez ne pas charger le pupsave qui a \e[24m\e[27m
\t\e[7m\e[4mservi de base à l'adrv, pour éviter les dédoublements.\e[0m" ;;
en|*)echo -e "\n \e[33m\e[4mDone!\e[24m
\t\e[4mYou should now reboot to activate your new adrv sfs.\e[24m
\t \e[7m\e[4mImportant -- \e[4mMake sure to store ALL pupsave files\e[24m\e[27m
\t \e[7m\e[4mOUT OF THE WAY to be able to start afresh.\e[0m\n" ;;
esac
# LANG="$LANGVx" # For tests. | Pour les tests.
exit # Everything after this, bash will ignore. | Bash ignorera tout ce qui suit cet « exit ».
###########################
# To double-check: (optional) | Pour vérifier (optionnel)
# diff -q $ReceivingDir /initrd/pup_rw | more
#
# All the sub-dirs should have the mention "identical", except
# some ".wh.*" files and possibly file .usb-drive-log-probedisk
# in /initrd/pup_rw. This is normal.
#
# Tous les sous-répertoires devraient porter la mention « identique »,
# sauf certains fichiers « .wh.* » et possiblement le fichier
# .usb-drive-log-probedisk dans /initrd/pup_rw. Cela est normal.
###########################