Lenteur à l'extinction depuis paramétrage réseau



  • Bonjour à tous,

    C'est mon premier message sur ce forum, je tenais donc à tous vous saluer !

    Si je viens vers vous, c'est que j'ai un problème un peu particulier, qui n'est pas vraiment bloquant en soit mais que j'aimerai quand même résoudre.

    Voila, chez moi j'ai plusieurs RecalBox qui se partage un dossier de roms et de sauvegardes qui se trouve sur un PC de mon réseau local (c'est un serveur pro sous Windows Server 2012 R2 foundation), aucun problème sur le réseau (j'ai 5 PC qui tournent en permanence sans rencontrer le moindre problème). Le partage fonctionne très bien (pour info, j'ai utilisé cette technique : [https://github.com/RetroPie/RetroPie-Setup/wiki/Running-ROMs-from-a-Network-Share].

    Cependant, depuis que j'ai fait ce paramétrage, mes pi mettent entre 5 et 10 minutes à s'éteindre après le déclenchement du bouton power que j'ai rajouté. L'action sur celui-ci est prise en compte directement, mais je reste tout ce temps sur l'écran "Veuillez patienter". Edit : (idem si j'utilise le menu pour redémarrer)

    Tous les recalbox sont en 4.0.2 (1 pi 3 et 2 pi 2)

    Si vous avez une idée !

    Merci par avance,

    Reikan



  • Erf, je me suis trompé de lien en rédigeant le message, c'est ce lien là que j'ai utilisé :

    [https://github.com/recalbox/recalbox-os/wiki/Charger-ses-rom-depuis-un-partage-réseau-Samba-(par-exemple-un-NAS)-(FR)]

    De plus, j'ai également une autre question, j'aimerai monter un second disque pour les sauvegardes afin de les centraliser.
    Je voudrais donc pouvoir rajouter une deuxième ligne comme celle déjà présente mais pointant vers le répertoire de 'saves' en partage réseau.

    //192.168.0.X/RecalBox/saves /recalbox/share/saves cifs user=XXXX,password=XXXX,uid=0,gid=0,rw 0 0

    Quelles informations je dois préciser ? Notemment à la place des uid=0,gid=0,rw 0 0

    Merci d'avance



  • Salut,

    De mon côté j'essaie de ne pas suivre de tutos autres que ceux de recalbox (ici ton tuto c'est du retropie... ça ressemble beaucoup mais c'est pas forcément identique)
    --> ça permet d'être sûr qu'on aura du support sur ce forum 😄

    Pour ce qui est montage réseau, j'ai pris une solution assez simple:
    1/ modifier les points de montage
    2/ monter ces point de montage à chaque boot de recalbox

    Et voilà ce que j'ai chez moi:

    1/ préparer les partoches (modifier le fichier tables de partitions)

    vi /etc/fstab
    

    Rajouter:

    //192.168.1.254/2000go/Jeux/PS1_ROMS /recalbox/share/roms/psx/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    //192.168.1.254/2000go/Jeux/SNES_ROMS/ /recalbox/share/roms/snes/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    //192.168.1.254/2000go/Jeux/GB_ROMS /recalbox/share/roms/gb/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    //192.168.1.254/2000go/Jeux/GBC_ROMS /recalbox/share/roms/gbc/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    //192.168.1.254/2000go/Jeux/MEGADRIVE_ROMS /recalbox/share/roms/megadrive/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    //192.168.1.254/2000go/Jeux/FBA /recalbox/share/roms/fba_libretro/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    //192.168.1.254/2000go/Jeux/NEOGEO /recalbox/share/roms/neogeo/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    //192.168.1.254/2000go/Jeux/MAME /recalbox/share/roms/mame/ cifs user=username,password=userpass,uid=0,gid=0,rw 0 0
    

    On voit qu'ici je monte des partages réseaux directement à la place des dossiers roms des consoles (inconvénient: pas de réseau = pas de roms...)

    2/ monter les partoches au boot

    Editer un fichier exécuté au boot:

    vi /etc/init.d/S31emulationstation
    

    rajouter "mount -a" juste après le start) du case -->

    case "$1" in
      start)
            mount -a
            enabled="`$systemset.......... BLABLABLA...
    

    3/ changer l'ordre du boot pr prendre en compte le mount -a en fin de boot

    mv /etc/init.d/S31emulationstation /etc/init.d/S92emulationstation
    

    Cette solution marche sur ce principe: https://github.com/recalbox/recalbox-os/wiki/Add-your-own-startup-script-(EN)

    Attention: les points 2/ et 3/ seront écrasés à chaque mise à jour

    Enfin, il existe une dernière solution: Regarde du côté du fichier custom.sh
    Si je ne me trompe pas, c'est un sh qui est lancé par un /etc/init.d/SXXemulationstation et qui donc permet de lancer des trucs perso.
    Mais personnellement, quand j'ai testé cette solution, j'ai eu justement le même pb que toi...

    Je viens de voir ton second post:

    • ok tu as suivi le même tuto que moi 😄
    • pour ton dossier saves: comme tu peux le voir: même principe que 1/ 2/


  • @ReikanYsora
    Perso je laisserais
    ..... cifs user=username,password=userpass,uid=0,gid=0,rw 0 0

    De mon côté j'ai 2 recalbox, mais une peut être déplacée et peut perdre le réseau donc ma solution a été 2 scripts, sur chaque machine:
    Un premier pour envoyer via rsync le contenu de /recalbox/share/saves
    Un autre pour récupérer via rsync le contenu de /recalbox/share/saves

    Pour l'instant je lance les lance à la main via ssh, mais il est possible d'automatiser tout ça avec custom.sh (ou, dans /etc/init.d/SXXemulationstation )



  • Petite info sur les uid gid (source: http://lea-linux.org/documentations/Fstab 😞
    Avec le montage suivant:

    /dev/hda2 /mnt/dos_c vfat user,uid=500,gid=500 0 0

    Lorsque la partition /dev/hda2 est montée, tous ses fichiers appartiennent au groupe 500 et à l'utilisateur 500 (voir les fichiers /etc/group et /etc/passwd pour savoir leur nom !).
    Si vous ne précisez rien : les fichiers appartiennent à l'utilisateur ayant appelé mount (root si vous n'avez rien fait de spécial).

    Chez moi j'ai UID=0 et GID=0 et ça partage nickel, Windows peut s'y connecter, android aussi...
    Donc selon moi, laisse en UID=0 et GID=0



  • Pour le partage et le montage des 2 répertoires (roms et saves) c'est ok et ça fonctionne parfaitement.

    L'ennui c'est que mon problème d'origine est toujours présent, environ 5 à 6 minutes sur le Pi 3 pour réussir à redémarrer.
    C'est forcement lié au réseau, n'y a t-il pas moyen de forcer le démontage des disques lors de l'arrêt de l'appareil ?

    Merci encore pour tes explications précises et rapides 🙂



  • Le script "custom.sh" (dans /recalbox/share/system/ je crois ) a 2 sections : start et stop.
    Pour chaque section, il est possible d'indiquer des choses à faire:
    Selon moi, mettre
    "umount /mon/point/de/montage"
    dans la section stop devrait démonter ce que tu veux avant de quitter emulationstation (c'est à dire quand tu lances l'appel à shutdown) . En theorie^^

    Après j'avoue qu'ayant moi aussi eu ces pb de latence, j'ai tout simplement décidé d'arrêter d'utiliser des trucs automatiques...
    Si j'ai besoin de faire qqchose avec du réseau, je lance tout à la main (j'ai écrit un .sh que je lance via ssh quand j'ai besoin de monter le NAS)

    Mais en effet dans ton cas, vu que tu as tout en réseau, essaie de regarder du côté de "custom.sh" il se lance avec le fichier /etc/unit.d/QQCHcustomQQCH



  • Merci encore !

    J'essaye ça et je reviens vers toi 🙂



  • je garde un oeil ici au cas où 😉

    Mais la lenteur d'extinction sur un nas n'est pas surprenante.



  • +1 rien d'étonnant.

    Teste l'extinction rapide, ca devrait prendre moins longtemps. En reboot et extinction normale, il y a des écritures dans les gamelists. Si tu forces un démontage à ce moment là, ça va finir par te hurler dessus en allemand du 11ème siècle. Prend ton mal en patience ou change de mode de stockage, car il n'y a point de salut à ce niveau 🙂



  • @kjbstar said in Lenteur à l'extinction depuis paramétrage réseau:

    ça va finir par te hurler dessus en allemand du 11ème siècle

    C'est dissuasif ça au moins lol



  • En effet, l'extinction rapide est quasi immédiate.

    Mais elle a un soucis, lors de l'arrêt depuis cette demande, le switch de démarrage ne fonctionne plus, je suis obligé de débrancher / rebrancher pour que le pi reparte.
    Ce n'est donc toujours pas la solution qu'il me faut (oui je sais je suis chiant :p)

    Je pense que la meilleur solution reste de synchroniser le contenu local comme le disais plus haut unik314r.

    Je vais tester cette solution !

    En tous cas, merci pour votre participation, c'est cool de tomber sur des forums où les mecs s'insultent pas dans une langue qui fait saigner les yeux (bien pire que l'allemand du 11ème siècle à mon gout :/)



  • Bon bah c'est absolument nickel en synchronisation !

    Pour ceux que ça intéresse, je met mon code ici (je débute en linux, n'hésitez pas à critiquer, modifier ou me dire si je fais des énormes conneries, je le prendrais pas mal :p)

    1. J'ai créé un répertoire en partage avec la même arborescence que RecalBox sur mon serveur (c'est un windows server 2012)

    2. J'ai créé un fichier 'start.sh' situé dans /recalbox/share/system/ qui synchronisera le contenu des roms et des sauvegardes au démarrage

    3. J'ai créé un fichier 'stop.sh' situé dans /recalbox/share/system/ qui synchronisera le contenu des sauvegardes à l'extinction

    4. J'ai mis dans 'start.sh' :

      mount -o remount,rw /
      mkdir /NetworkMount
      mount -t cifs //ADRESSEIPSERVEUR/RecalBox /NetworkMount -o username=LOGIN,password=PASSWORD
      rsync -r -t -x -v --progress -l -s /NetworkMount/roms/ /recalbox/share/roms
      rsync -r -t -x -v --progress -l -s /NetworkMount/saves/ /recalbox/share/saves
      umount /NetworkMount
      rm -r /NetworkMount

    5. J'ai tapé chmod +x start.sh

    6. J'ai mis dans 'stop.sh'

      mount -o remount,rw /
      mkdir /NetworkMount
      mount -t cifs //ADRESSEIPSERVEUR/RecalBox /NetworkMount -o username=LOGIN,password=PASSWORD
      rsync -r -t -x -v --progress -l -s /recalbox/share/saves/ /NetworkMount/saves/
      umount /NetworkMount
      rm -r /NetworkMount

    7. J'ai tapé chmod +x stop.sh

    8. J'ai mis dans 'custom.sh'

      #!/bin/sh
      start() {
      exec /recalbox/share/system/start.sh
      }

      stop() {
      exec /recalbox/share/system/stop.sh
      }

      case "$1" in
      start)
      echo "Synchronise roms and saves"
      start
      ;;
      stop)
      echo "Synchronise saves"
      stop
      ;;
      esac

    9. J'ai tapé chmod +x custom.sh

    10. J'ai sauvegardé ces scripts sur mon serveur au même emplacement de l'arborescence pour les redéployer plus facilement (reinstall / MAJ, etc).

    Tout fonctionne parfaitement, et mes sauvegardes se crée bien sur mon serveur, que j'ai pu ainsi récupérer grâce au même script sur mon second pi au démarrage, l'extinction est redevenu instantanée.

    Sinon je cherche la commande inverse à 'mount -o remount,rw /' car là, si je ne me trompe pas, je laisse l'accès en écriture en permanence, et j'aimerai que ce ne soit pas le cas..

    @+



  • Hum.. Bon, je viens de remarquer que l’exécution du script custom.sh se fait à priori en tout dernier (alors que l'interface est déjà chargée).

    Il est donc nécessaire de refaire un redémarrage pour avoir les nouvelles roms, je ne l'avais pas vu car pendant mes tests j'ai fait plusieurs redémarrage.
    Il me semble qu'il y a un moyen avec les scripts SXX de init, faire la synchro du démarrage avant le chargement serait surement plus judicieux.

    Je regarderai ça demain !



  • Bon, malheureusement, je n'arrive pas à trouver comment bloquer le chargement le temps de la copie.
    Même en changeant l'ordre d’exécution du fichier S99custom, RecalBox se charge avant même que la copie ne soit effective (je ne suis même pas sûr que cela soit possible, si vous avez des infos à ce sujet, je suis preneur). Ce n'est pas gênant en soit mais vu qu'en mode automatique aucune notion de progression apparaît, c'est visuellement impossible sans se connecter au pi de savoir où en est la copie.

    En tous cas, tout fonctionne bien.

    Prochaine étape, transformer le répertoire de stockage en cloud afin de pouvoir synchroniser mes sauvegardes / répertoires ne n'importe où !



  • @ReikanYsora said in Lenteur à l'extinction depuis paramétrage réseau:
    Je suppose que

    mount -o remount,r /

    devrait suffire (rw = read + write // r = read uniquement)

    Pour ton pb d'EmulationStation qui se charge avant la fin éventuelle de la copie, essaie de mettre, après la commande rsync (après ton start.sh)

    /etc/init.d/S31emulationstation restart
    ou
    /etc/init.d/S31emulationstation stop && sleep 5 && /etc/init.d/S31emulationstation start

    Genre:

    start() {
    exec /recalbox/share/system/start.sh
    /etc/init.d/S31emulationstation restart
    }

    --> ça redémarrera ES après la commande rsync
    C'est un peu crade, mais si ça fonctionne...



Want to support us ?

255
Online

80.3k
Users

21.5k
Topics

157.2k
Posts