Forum Puppy Linux - Toutou Linux - Astuces - Aide

Forum Francophone de Puppy/Toutou Linux => Scripts => Discussion initiée par: jplt le Mercredi 06 Juin 2018, 19:07:08

Titre: Un script pour eviter de remasteriser
Publié par: jplt le Mercredi 06 Juin 2018, 19:07:08
Bonjour musher0,

j'ai testé ton script dans la bionic beaver pup , quand je redemarre mon pc je me retrouve avec le quick setup et mon bureau customisé n'est plus la !

Est ce normal ? ou je n'ai pas compris le principe de ton script ?
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Mercredi 06 Juin 2018, 21:31:03
Salut, jplt.

Je vais installer provisoirement la bionicPup de peebee pour voir ce qui se passe. 
Ça peut prendre un jour ou deux cependant, parce que j'ai une ou deux choses à faire avant.
Merci de ta patience.

À+
Titre: Re : Un script pour eviter de remasteriser
Publié par: jplt le Mercredi 06 Juin 2018, 21:40:05
Ok pas de soucis prend tout ton temps.
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Jeudi 07 Juin 2018, 00:20:23
Salut, jplt.

Gros merci pour ton retour.

J'ai téléchargé bionicPup-18_machin-no 3 et regardé le nom de ses fichiers.  Il a déjà un adrive.

Quel genre d'installation as-tu faite du bionicPup ? Frugale avec fichier pupsave, frugale avec répertoire pupsave, ou installation complète ? Mon script ne fonctionne que pour les installations frugales avec fichier pupsave.

Pendant le processus, te rappelles-tu avoir vu un message comme celui joint en image?

Sinon, cherche dans le répertoire du bionicPup un fichier sfs nommé adrv_bionic_quelquechose-bis.sfs ? Si un tel fichier « bis » existe, tu pourrais essayer de le charger en passant par sfs_load ?

En d'autres mots :
-- je retourne à ma table à dessin pour peaufiner ce script

Finalement, si tu fonctionnes avec un fichier pupsave, il devrait encore être là. Aucune section du script ne l'efface.

Désolé pour l'inconvénient. À+
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Jeudi 07 Juin 2018, 03:41:24
Rebonjour, jplt.

Notes de travail  (ne les lis pas si cela ne t'intéresse pas !) :
Il se pourrait qu'on puisse utiliser le nom ydrv_puplette_no.sfs si un tel fichier n'est pas utilisé. D'après le fichier init dans initrd.gz, c'est théoriquement possible.

Par contre, si dans dans son fichier pupsave on a un lien disons de /usr/share/fonts à /mnt/home/share/fonts parce qu'on a trop de fontes et qu'on ne veut pas encombrer le fichier pupsave, eh bien au redémarrage, toute écriture sur le bureau ROX apparaîtra sous forme de carrés, donc illisible. Semblablement pour /usr/share/backgrounds si on l'a lié à 
/mnt/home/share/backgrounds. Ou pour les thèmes GTK2. Pour les fonds d'écran et les thèmes, c'est pas trop grave,  on pourra corriger au second démarrage, mais pour les fontes, c'est capital de vérifier et pallier s'il y a lieu au moment de la conversion du fichier pupsave en adrv ou ydrv.

À suivre.
Titre: Re : Un script pour eviter de remasteriser
Publié par: jplt le Jeudi 07 Juin 2018, 11:46:16
J'ai remarqué que le adrv est chargé en dernier ! 
Sans remasteriser comment supprimer la fenetre du quicksetup ?
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Jeudi 07 Juin 2018, 11:52:56
Une chose à la fois, s.t.p.
Peux-tu répondre aux questions dans mon message précédent, s.v.p. ?
Merci.
Titre: Re : Un script pour eviter de remasteriser
Publié par: jplt le Jeudi 07 Juin 2018, 14:15:15
Citer
Quel genre d'installation as-tu faite du bionicPup ?
 
Frugall avec pupdave (tout maigrichons pour faire le test)
Citer
Pendant le processus, te rappelles-tu avoir vu un message comme celui joint en image?
 
J'ai triché un peu car j'ai pris la premiere version du script pour éviter le test sur la taille de MEV/RAM.

J'ai bien le fichier adrv bionicpup .
Titre: Re : Un script pour eviter de remasteriser
Publié par: jplt le Jeudi 07 Juin 2018, 14:25:08
Il semblerait que le ydrv soit deja pris par la bionicpup
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Jeudi 07 Juin 2018, 15:02:38
Merci pour les réponses et pour la capture d'écran, jplt.

Au sujet de la version du script : j'ai créé une nouvelle version pour une raison, voyez-vous ! :)

Mais pas grave, il va en falloir une autre, de version, parce que le confrère peebee vient de
nous compliquer les choses avec son Toutou Bionique : il utilise toutes les positions disponibles
(a, f, y et z) pour les *drv.

En un sens, c'était plus simple du temps où le Puppy chargeait automatiquement au
démarrage tous les sfs ayant le même numéro de version que lui. (Du temps de la
Puppy 4.12 de jrb, je crois. Ou était-ce la 4.20 ? ) Si on pouvait recréer ce genre de fonction.

J'ai aussi épluché le script bash nommé init dans l'archive initrd.gz et j'ai vu la mention d'un
fichier nommé myfiles.sfs. Je ne l'ai jamais vu « en action » par contre, dans aucun Puppy.
Peut-être regarder cela de plus près aussi.

Si tu voulais une solution rapide, jplt, pour ton Toutou Bionique, c'est raté, j'en ai peur.
Désolé.

Comme j'ai dit, retour à la table à dessin.  À+
Titre: Re : Un script pour eviter de remasteriser
Publié par: jplt le Jeudi 07 Juin 2018, 15:49:55
Je pense que tu dois parler de "mydrv-1.2.3.sfs" ?

Je vais tester sur une autre puppy alors.

Bon dessin.
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Jeudi 07 Juin 2018, 22:52:14
Ah ? Tu connais ça ? Ça fait quoi ?
Merci d'avance.
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Dimanche 10 Juin 2018, 13:53:24
Salut jplt.

Juste un mot pour te dire que je crois avoir fait cette nuit une percée relativement à ce script. Il reste 2-3 choses à résoudre, mais le principal bobo, celui de l'écriture en carrés et du ROX inanimé, etc. était, je crois, le suivant : une fois qu'on a créé le adrv ou le ydrv (car peu importe [autre bonne nouvelle !]), il nous faut quand même un petit pupsave, vide. Quand on le charge, tout va bien ! Encore quelques tests, et quelques sous-scripts, et je crois que j'aurai quelque chose de bien à offrir.

Merci de ta patience et À+.
Titre: Re : Un script pour eviter de remasteriser
Publié par: augras le Dimanche 10 Juin 2018, 14:01:20
Bonjour musher0,
Comme tu le sais j'ai utilisé ton script pour éviter de remasteriser sur une xenial7.5 : tout fonctionne bien depuis que... ça fonctionne (ça a été un peu compliqué au début mais tu as tout solutionné) sauf les impressions alors qu'avec le dossier de sauvegarde d'origine je peux imprimer.
Un mystère de plus !
Philippe
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Dimanche 10 Juin 2018, 23:49:05
J'ai tout solutionné ? Moi ? C'est très flatteur. 

Mais tu pourrais pas être un peu plus précis ? C'est quoi au juste que j'ai solutionné ? :lol:

C'est rigolo, dit comme ça, mais je suis sérieux. C'était quoi tes problèmes que j'ai solutionnés ? Avant que je tombe dans les explications du genre « C'est par l'intervention du Saint-Esprit ! » ;)

Aussi, un clown désinformateur a sérieusement joué avec mes nerfs sur l'autre forum concernant ce script. Je suis retombé sur mes pattes, mais j'avais temporairement perdu de ma capacité de concentration.

Merci d'avance de faire un petit rappel.
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Lundi 11 Juin 2018, 02:20:52
Bonsoir à toutes et à tous.

En accompagnement au présent script, on trouvera à https://augras.eu/puppy_forum/index.php?topic=88.new#new
deux petits scripts pour créer de petits pupsaves.

Merci de votre attention et bonne fin de journée.
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Lundi 11 Juin 2018, 14:27:51
C'est ok, augras. Pas besoin de faire un rappel, je suis retourné sur le forum Murga/Puppy, et je me le suis fait moi-même ! Désolé pour la demande dans le message précédent

Je suis remonté jusqu'au fil anglo où j'ai présenté la version initiale du présent script -- avec laquelle le confrère DavidS45 a connu du succès, d'ailleurs. Pour mémoire, c'est soit "ASRI Éducation", soit "Sailor Enceladus", qui a lancé l'idée et présenté un 1er script pour ce faire. Ces deux prototypes semblent introuvables, cependant, malgré une soirée de recherches.

Ce que j'essaie de faire maintenant, c'est une espèce de script "best practice" (pratique exemplaire) qui essaie de réagir / interagir selon que l'utilisateur a un fichier ou un répertoire pupsave. Maintenant que j'ai rapaillé les comptes rendus d'expérience et les notes de travail, ça devrait aller mieux.

À+.
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Vendredi 15 Juin 2018, 23:09:47
Bonjour tout le monde.

Je n'en suis pas encore à cette distinction entre fichier et répertoire pupsave; aussi il reste à solutionner le problème soulevé par jplt, à savoir quoi faire quand toutes les positions de ?drv sont occupées.

Mais je suis satisfait du résultat à ce jour de cette version  0.5 du script. (Voir capture ci-dessous.) Il crée un sfs nommé adrv-bis.sfs qu'il suffit de renommer en adrv_version-du-Puppy.sfs si la position adrv n'est pas prise.  Petite note en passant, la ligne rsync de ce script est inspirée d'une ligne similaire dans le script "refractasnapshot" de la distro Refracta.

Si vous avez une minute pour « donner une go » à ce script et me faire un petit retour, je vous en serais reconnaissant. N'oubliez pas de lire les commentaires s.v.p. avant de poser des questions au sujet de ce script. Merci.

À+

#!/bin/bash
####
# /opt/local/bin/psave2adrv-0.5.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-0.5.sh
#
########## # Usage: (EN)
# First, enter the directory where your Pup is located and open a terminal there.
# Then type: psave2adrv-0.5.sh name-and-version-of-your-Pup
#
# Example: psave2adrv-0.5.sh xenial_7.0.6
# You have to change this variable to match the Puppy's name and version.
# However, if you already are in the Puppy's folder,
# you can type: psave2adrv-0.5.sh .
#
########## # Usage : (FR)
# D'abord entrer dans le répertoire où se trouve votre Puppy et y ouvrir une console.
# Puis taper : psave2adrv.0-5.sh nom-et-version-de-votre-Puppy
#
# Exemple : psave2adrv-0.5.sh xenial_7.0.6
# Vous devez changer cette variable pour qu'elle corresponde
# au nom et à la version du Puppy.
# Cependant, si vous êtes déjà dans le répertoire du Puppy,
# vous pouvez taper : psave2adrv-0.5.sh .
####
# © musher0, 2018-03-31. GPL3 # Rév. : 2018-06-10, 11 et 15
# Q.v. https://opensource.org/licenses/GPL-3.0 for original text in English.
##########
#    Ce programme est libre : vous pouvez le redistribuer ou modifier selon les termes de la
#  Licence Publique Générale GNU publiée par la Free Software Foundation (v. 3 ou toute
#  version ultérieure choisie par vous).
#        Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE
#  GARANTIE, ni explicite ni implicite, y compris des garanties de commercialisation ou
#  d'adaptation à un but spécifique. Pour obtenir plus    de détails, veuillez vous reporter au
#  texte de cette licence à https://opensource.org/licenses/GPL-3.0 pour le texte officiel, à
#    http://www.linux-france.org/article/these/gpl.html pour une traduction et à
#    https://fr.wikipedia.org/wiki/Licence_publique_générale_GNU pour une explication en français.
################
####
# LANGVx="$LANG";LANG=en_CA # For tests. | Pour les tests.
clear
case "${LANG:0:2}" in
    fr) echo -e "\n\e[32m\e[4m    Script pour faire un « adrv » d'un \e[7mfichier\e[27m « pupsave ».    \e[0m" ;;
    en|*) echo -e "\n\e[32m\e[4m    Script to make an 'adrv' out of a 'pupsave' \e[7mfile\e[27m.    \e[0m" ;;
esac

if [ "$1" = "" ];then
    case "${LANG:0:2}" in
          fr) echo -e "\n\t\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-0.5.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.: psave2adrv0.5.sh \e[4mxenial_7.0.6\e[0m\n" ;;
      esac
    exit
fi
# Mises en garde : # Word of caution:
case "${LANG:0:2}" in
          fr) echo -e "\n\t\e[33mAvez-vous :
    -- émondé votre contenu (c.-à-d. enlevé les fichiers
    et répertoires vides ou superflus) ?

    Cela a-t-il été fait ? Tapez 'o' pour oui ou 'n' pour non.\e[0m" ;;
#      -- démonté tous les sfs de programmes ?

        en|*) echo -e "\n\t\e[33mHave you:
    -- pruned your content (i.e. removed empty or
    superfluous files and directories)?

    Has this been done? Type 'y' for yes or 'n' for no.\e[0m" ;;
#      -- unmounted all program sfs's?
esac
read Reponse
case $Reponse in
    n|N) case "${LANG:0:2}" in
          fr) echo -e "\n\t\e[33mVeuillez émonder avant de reprendre.\e[0m\n" ;;
          en|*) echo -e "\n\t\e[33mPlease prune what needs to be pruned
    before re-running this script.\e[0m\n" ;;
          esac
    exit ;;
esac

#### Où ?
# Découverte de la partition
awk -F"'" '$1 ~ /PDEV1/ { print $2 }' /etc/rc.d/PUPSTATE > /tmp/Part
awk -F"'" '$1 ~ /PSUBDIR/ { print $2 }' /etc/rc.d/PUPSTATE > /tmp/Rep
Place="/mnt/`cat /tmp/Part``cat /tmp/Rep`"
cd $Place # cd /mnt/home/xenialPup32-706-n412-FR # par ex.

# tabula rasa
rm -rdf adrv-destination/*
[ -d $Place/adrv-destination ] && rmdir --ignore-fail-on-non-empty $Place/adrv-destination
mkdir -p adrv-destination
mkdir -p pupsave-source

# Assez de MEV ?
Tot="`du -c /initrd/pup_rw | tail -1 | awk '{ print $1}'`"

MEV="`free -b | awk '$1 ~ /Mem/ { print $2}'`"
if [ "$MEV" -gt "${Tot}" ];then
    MEV="`echo "scale=3;$MEV/1000000000" | bc`"
    case "${LANG:0:2}" in
          fr)echo -e "\t\e[33m\e[4mVous avez assez de MEV ($MEV Go).\e[0m\n" ;;
          en|*)echo -e "\t\e[33m\e[4mYou have enough RAM ($MEV Gb).\e[0m\n" ;;
    esac
    sleep 3s
else
    case "${LANG:0:2}" in
          fr)echo -e "\t\e[33m\e[4mVous n'avez pas assez de MEV ($MEV Go). On ne peut continuer.\e[0m\n" ;;
          en|*)echo -e "\t\e[33m\e[4mYou do not have enough RAM ($MEV Gb). We cannot continue.\e[0m\n" ;;
    esac
    exit
fi
# Calcul probablement conservateur, mais empêchera les mauvaises surprises.
# Probably conservative calculation, but will prevent unpleasant surprises.

# Transférer
    cd adrv-destination
    rsync -azm /initrd/pup_rw/* . --exclude="dev" --exclude="initrd" --exclude="lost+found" --exclude=".wh.*" --exclude="tmp"
    wait

Squasher () { ReceivingArch="adrv-bis";
    mksquashfs /mnt/home/xenialPup32-706-n412-FR/adrv-destination ../$ReceivingArch.sfs -noappend -all-root -b 1048576 -comp xz -Xdict-size 100% > mksfs.rpt &
# 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.

# Pour voir les détails de l'opération, s.v.p. ouvrir le fichier texte mksquashfs.rpt
# dans votre éditeur ou lisez-le avec more. /
# To see the details of the operation, please open the mksquashfs.rpt text file
# in your editor or read it with more.

    while pgrep mksquashfs &> /dev/null;do
          echo -en "\e[34m.";sleep 0.5
# Source de cette barre : réponse no 0 par « purushothaman poovai » à https://
# stackoverflow.com/questions/238073/how-to-add-a-progress-bar-to-a-shell-script#238094
    done
    echo -e "\e[0m.\n"; }

Squasher

if [ $? = 0 ];then
    case ${LANG:0:2} in fr)echo -e "\t\e[33mRéussi !\e[0m\n" ;;
          en|*)echo -e "\t\e[33mSuccess!\e[0m\n" ;;
    esac
else
    case ${LANG:0:2} in fr)echo -e "\t\e[33mQuelque chose ne tourne pas rond.
    Veuillez recommencer.\e[0m\n" ;;
          en|*)echo -e "\t\e[33mSomething went wrong.
    Please retry.\e[0m\n" ;;
    esac
fi

case ${LANG:0:2} in fr)echo -e "\t\e[33mRappelez-vous de créer un nouveau, petit, fichier
    'pupsave' avant de relancer votre Puppy, par exemple
    avec le script < psave-96M-2fs-a > ci-joint.\e[0m\n" ;;
          en|*)echo -e "\t\e[33mPlease remember to create a new, small, pupsave
    file before before rebooting your Puppy, e.g. with
    included script < psave-96M-2fs-a >.\e[0m\n" ;;
    esac

# LANG="$LANGVx" # For tests. | Pour les tests.

exit
~~~~~~~~~~~~~~ Notes ~~~~~~~~~~~~~~
# else
# Autres conditions : # si l'utilisateur a un répertoire pupsave, on quitte ?
# Augras a réussi à le faire, mais il serait bon de retester.
#
#    case ${LANG:0:2} in
#          fr)echo -e "\t\e[33mCe script ne marchera pas parce que vous avez
#    un répertoire plutôt qu'un fichier de sauvegarde.

#    Veuillez faire l'opération manuellement.\e[0m\n" ;;
#          en|*)echo -e "\t\e[33mThis script will not work because you have
#    a pupsave folder rather than a pupsave file.

#    Please do this operation manually.\e[0m\n" ;;
#    esac
#    exit
# fi

# Autres étapes
# S'il y a déjà un [a|f|y]drv__machin : combiner ? # Détecter et offrir l'option au début ?
~~~~~~~~~~~~~~ Fin des notes ~~~~~~~~~~~~~~
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Samedi 16 Juin 2018, 12:38:34
@jplt : Tu es encore là ?  cava   On n'a pas eu de tes nouvelles depuis un petit moment... :(

Bonne nouvelle ! J'ai eu la permission de peebee de combiner les adrv, fdrv et ydrv de son BionicPup pour faire de la place :
http://www.murga-linux.com/puppy/viewtopic.php?p=996106&sort=lastpost#996106

Je pense adapter mon combineur de sfs ordinaires aux ?drv.  A vue de nez, je pense combiner les trois dans le fdrv,  ce qui laisserait deux « positions » libres (adrv et ydrv). Note -- Il vaut mieux ne pas toucher au zdrv. 

On pourra ensuite utiliser la version définitive du présent script (quand elle sera prête) pour transformer le pupsave en adrv sans obstacle.

À la prochaine !
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Lundi 18 Juin 2018, 17:00:01
Bon matin à toutes et à tous.

Pour récapituler, à l'intention de jplt ou de tout usager qui voudrait transformer un gros fichier pupsave en adrv :

-- d'abord créer un petit pupsave (voir fil adjacent) sur le Puppy en question;

-- si le dit Puppy a déjà la position « adrv » occupée, on le fait passer à un fdrv (utiliser le script sur un fil adjacent à celui-ci), mais d'un autre Puppy;

-- quand cela est fait, quand la place est libre, en d'autres mots, on revient dans le Puppy en question et on transforme son gros pupsave en adrv à l'aide du script ci-dessus. On devrait gagner de 60 % à 65 % d'espace par rapport à la taille du gros pupsave original qu'on avait;

-- Quand on redémarre,  on choisit le petit pupsave (nommé "arf" par défaut). On ne doit pas choisir son ancien pupsave;

-- On fait une session complète dans ce nouvel environnement en guise de test. Si T.V.B., au redémarrage suivant (au 2e redémarrage, donc), on pourra effacer, ou ranger ailleurs, ou zipper, son ancien gros pupsave.

J'espère avoir fait le tour de la question.  Si vous trouvez certains points encore obscurs, n'hésitez pas à demander des éclaircissements ci-dessous.

À+
Titre: Re : Un script pour eviter de remasteriser
Publié par: augras le Jeudi 01 Novembre 2018, 12:34:41
Bonjour,
Je ne sais plus ce que tu avais solutionné ! Ça ne fonctionnait pas, tu as modifié un peu le script et ça a fonctionné !
Par contre je me demande maintenant à quel script fait référence ce fil ? Aucun script n'est joint !
Est-ce qu'il s'agit du script ci-joint ? Si oui je l'ajouterai au poste initial... et je déplacerai mes messages du fil 
Combiner des ?drv*.sfs qui font référence à ce script joint ici et non à ce nouveau script.
Philippe
Titre: Re : Un script pour eviter de remasteriser
Publié par: musher0 le Mercredi 07 Novembre 2018, 05:50:30
Salut Philippe !

Ben... c'est quoi qu'y a dans mon 3e post ci-dessus ?!  :)
Mais je vais revenir enligner mes scripts. Comme ça ce sera plus clair !

À+
Titre: Re : Un script pour eviter de remasteriser
Publié par: augras le Samedi 10 Novembre 2018, 11:57:12
Bonjour Christian (musher0),
Effectivement dans le post au-dessus que tu indiques il y a un script... mais c'est un nouveau ou bien celui auquel fait référence jplt qui a initié ce fil ?
Je n'arrive pas à comprendre à quel script fait référence jplt !
Philippe
Simple Audio Video Embedder