Stocker certaines ROMs sur un NAS mais rester mobile



  • Re: Stocker ses roms sur son nas synology

    Bonjour,

    Tout d'abord merci à toute l'équipe derrière recalbox de tout le travail fournit, qui nous permet de profiter facilement de nos jeux préférés !

    Je reviens sur un topic un peu ancien qui répondait parfaitement à mon besoin et dont je me suis fortement inspiré (merci à @gzubsc !) pour obtenir exactement ce que je cherchais.

    L'idée est que globalement je souhaite stocker mes ROMs sur la carte SD du raspberry (j'ai un raspberry pi 3) de façon à pouvoir juste embarquer la bête (et tous les fils) pour garder de la mobilité et avoir une recalbox dispo partout, voir même si je me rends à un endroit équipé en pi (3) d'avoir juste à prendre la carte SD avec moi.

    Le seul souci est que l'espace sur la carte est limité (je fais du multiboot donc ça part très vite) et que certaines machines ont des ROMs très gourmandes en place (oui playstation, je pense à toi).

    Mon objectif était donc de pouvoir garder les ROMs "principales" sur la carte, et de déporter certaines architectures (pour l'exemple juste psx, mais on peut multiplier tant que ça reste raisonnable. Après il y a un moment où il vaut mieux tout mettre en réseau sinon) sur mon NAS (un synology pour mon cas) qui n'a pas de problème de place.

    Ayant trouvé une bonne âme qui avait fait exactement ça il y a quelques temps (@gzubsc que j'ai cité plus haut), j'ai repris l'idée en la remettant au goût du jour pour recalbox 4.0.0.

    Voilà donc la méthode que j'ai utilisée.
    (n'oubliez pas de remonter "/" en read-write au préalable pour faire les modifications avec "mount -o remount,rw /". Bien sûr il vaut mieux avoir une copie de secours de tout ce que vous touchez !)

    Le plan est d'ajouter dans les scripts de démarrage le mount du répertoire distant qui contient les ROMs. On va monter le répertoire à la place du répertoire local, ce qui va le masquer. Seul le (ou les) répertoire(s) choisi sera(seront) sur le réseau, tout le reste est local. On va effectuer le mount uniquement si la machine distante est vue au démarrage pour que tout se passe proprement si vous êtes hors du réseau local. Mais pour ça il va falloir décaler le lancement d'emulation station pour qu'il démarre après le réseau.

    (Au préalable il faut bien sûr que le partage soit disponible sur le NAS. Vous pouvez ensuite tester le mount à la main pour vérifier que tout fonctionne).

    Donc étape 1, on va créer dans /etc/init.d un fichier S43mount (pour qu'il soit après le S40network qui démarre le réseau). Le mien ça donne ça :

    #!/bin/bash
    case "$1" in  
    start)       
        ping 192.168.1.110 -c 1 -w 1
        RC=$?
        [ $RC -eq 0 ] && mount -t nfs 192.168.1.110:/volume1/jeux/psx /recalbox/share/roms/psx -o noatime,noauto,nolock,soft
        sleep 2
        ;;
    stop)
        umount /recalbox/share/roms/psx
        ;;
    restart|reload)
        "$0" stop
        "$0" start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
    esac
    exit $?
    

    192.168.1.110 est l'adresse mon NAS, à remplacer par la bonne donc (ainsi que le path qui suit). Vous pouvez ajouter d'autres mounts sur le même modèle bien sûr. De même, je fais du NFS mais on peut remplacer par du CIFS (je suis preneur d'une recommandation sur le sujet d'ailleurs).

    Il faut rendre le fichier exécutable (chmod 755). Ensuite il faut renommer S31emulation en S45emulationstation pour qu'il se lance après notre mount.

    Voilà, ça marche. Comme on commence par vérifier que la machine est bien là, on ne perd pas de temps à essayer de mounter dans le vide (surtout utile s'il y a plusieurs mount).

    Là déjà normalement, tout roule. On pourrait en rester là, mais petit souci pour moi qui suit en WiFi : on attend le démarrage du réseau sur ethernet alors que rien n'est branché. Du coup le boot passe d'environ 24s à 43s. C'est moche.

    Donc étape 2 (ou 3 ?), on va décaler le lancement de l'ethernet (pour ne pas le perdre totalement si besoin).
    Dans S40network on va commenter la ligne qui lance l'ethernet (c'est écrit dedans). Ensuite on va créer un script S48ethernet qui reprend cette ligne :

    #!/bin/bash
    case "$1" in
      start)
        /recalbox/scripts/recalbox-config.sh ethernet start
        ;;
    esac
    
    exit $?
    

    A rendre exécutable également. Avec cette bidouille, on repasse à un temps de boot de 33s. Hop, 10s de gagnées ! (Bon j'avoue, je n'ai pas testé le réseau filaire, donc je ne peux pas garantir qu'il démarre correctement).

    Avec ces modifs, je peux stocker mes ROMs psx sur mon NAS qui a plein de place, tout en gardant tout le reste sur la carte pour les cas où je ne suis pas chez moi. Il est même possible de mettre quelques jeux psx en local ("sous" le mount) pour avoir une sélection dispo tout le temps (c'est pas hyper pratique mais ça marche).

    Voilà, c'était un peu long mais j'espère que ça pourra être utile !



  • Merci beaucoup pour ce tuto, je suis justement en train de me poser la question de déporter mes ROMs sur mon Synology moi aussi...
    Le souci de la portabilité se pose d'autant plus avec mon Picade ;)

    Simple question, le lancement des jeux est-il sensiblement ralenti par le fait que les ROMs soient en NFS et non en local ?



  • Je pense avoir trouvé l'équilibre qui me convient entre la mobilité et la capacité de stockage. Après il y a aussi la possibilité de dédier une clef USB au share pour les ROMs et de tout mettre dessus mais je trouvais ça moins pratique et puisque j'ai un NAS autant en profiter !

    Pour le lancement je n'ai pas senti de ralentissement mais je n'ai pas fait de mesure précise (et j'ai peu utilisé l'émulation psx en local, justement à cause des limites de stockage). En tout cas rien de choquant.



  • Très bien, je vais tenter alors ;)
    Merci



  • Ca marche au poil, merci beaucoup.
    Je constate un peu de ralentissement au boot, shutdown et au lancement des jeux, le tout est logique avec le Wifi de mon RPi3 un peu faiblard, mais c'est tellement plus simple à gérer via le NAS, je m'y ferai ;)


  • Moderator
    Team

    Sympa le tuto :)
    J'aime autant prévenir d'avance : en 4.1 on a réordonné un peu certains scripts du boot, le reseau arrive bcp plus tôt avec la possibilité de faire du montage réseau nativement (mais faut mettre les mains dans le moteur)



  • Super si ça marche. Le risque avec ce genre de tuto c'est d'oublier une étape essentielle ou une modif qu'on aurait faite longtemps avant et qui empêche que ça marche ailleurs...

    Pour la 4.1 ça ne m'étonne pas que ça change (comme ça avait changé depuis la 3.3.0). C'est un peu fait pour ça les nouvelles versions ! Je me repencherai forcément dessus le moment venu.

    D'ailleurs, j'ai oublié de le préciser mais je ne crois pas que tout ça soit persistant lors des mises à jour (je pense en particulier au renommage du script de démarrage d'emulation station).



  • Bonjour,

    Pour ceux qui ont fait la modif et qui ont updaté en 4.0.2 (ou 4.01), n'oubliez pas de supprimer le fichier /etc/init.d/S35emulationstation sinon vous aurez 2 ES qui se lancent en parallèle !



  • Petit up sur le sujet suite à l'update 2018.02.09 puisque depuis le WiFi arrive avant le montage de "share" et on peut donc faire toutes les opérations ci-dessus très simplement.

    Précision déjà, la méthode officielle permet de monter toutes les ROMs depuis un NAS. Là pour rappel je cherche à faire un chouille plus compliqué : je veux un share local (carte SD ou clef USB), avec la majorité des ROMs, et pour quelques architectures très gourmandes en place disque (PSX ou N64 par exemple) je veux "remplacer" le répertoire des ROMs par celui du NAS. Par ailleurs, le petit plus, c'est que ce montage ne se fait que dans le cas où le NAS est présent, tout ça en WiFi.

    Du coup si je suis chez moi j'ai accès à tout, mais si je suis ailleurs (ou que j'ai pris juste la carte SD pour la mettre dans un autre Pi), j'ai accès uniquement aux ROMs locales. De plus il est tout à fait possible de laisser quelques jeux PSX ou N64 (ou autre) en local, le montage les masquera mais ils resteront visibles si le NAS n'est pas là.

    Bon après cette longue intro, c'est tout simple : la seule opération à faire est de prendre le fichier qui s'appelait /etc/init.d/S43mount dans le tuto plus haut, et de le nommer S28mount. Tout le reste n'est plus nécessaire.

    Le gros avantage c'est que comme on ne touche à aucun fichier existant c'est que la modif est persistante après update, ce qui n'était pas le cas.

    Je suis en train de tester une approche différente utilisant la méthode officielle, mais vu que là ça marche très bien je ne sais pas si je vais changer...



  • @obilolo merci beaucoup pour la petite mise a jour car j’utilise ta méthode qui me va a ravir depuis tout ce temps (en câble ethernet ca fonctionne nickel) , par contre j'ai pas mal de soucis depuis que j'ai du refaire l'install de mon nas (freenas) depuis peu de temps et la mise a jour en 2018.02.09 n'arrange rien mdr je n'arrive plus a mounté mes répertoires qui pour ma part sont les rom psx et dreamcast comme si le script n'arrivais pas a avoir accès.. j'ai bien refait mon partage NFS comme avant sans rien mettre de spécial. J'arrive même a y accéder via un pc sans problèmes..
    Donc si j'ai bien compris plus besoin de renommer le S31emulationstation en S45 ?
    A la base j'avais un S42mount et un S43mount pour chaque répertoire de roms (peu on tout mettre dans un seul script ?)
    j'ai donc renommé mon S42 et S43 en S28mount et S29mount.
    merci d'avance.


  • Moderator
    Moderator
    Team

    Attention avec vos bidouilles et renommages à tours de bras... Non seulement c'est dangereux et non supporté, mais en plus, à la prochaine mise à jour, vous risquez d'avoir de drôles de surprises, les fichiers d'origine vont être remis, sans effacer les vôtres, ça va faire des doublons, un joyeux bordel... et sûrement des catastrophes!



  • @oyyodams oh c'est pas grave je suis partis pour formater ma carte SD et repartir sur une install fraîche je pense que ca sera plus simple pour débloquer mon problème..



  • @oyyodams Ah bah oui je suis d'accord, mais comme le but c'est de faire une bidouille, c'est du bricolage...

    Le besoin est particulier, certes (ce qui explique qu'il n'y ait pas de solution "officielle"), mais ça correspond à ce que je voulais faire et comme apparemment je ne suis pas le seul, je partage mon expérience. Évidemment pas question de venir se plaindre si on casse un truc !

    Donc en effet, ce n'est pas recommandé à ceux qui ne savent pas ce qu'ils font...

    C'est d'ailleurs la raison pour laquelle je cherche à passer par la méthode officielle, mais pour l'instant je n'ai pas réussi à faire aussi bien.

    @guyomemalik Oui bien sûr tu peux tout mettre dans un seul script, c'est ce que j'ai fait. Tu mets juste les lignes de mount les unes à la suite des autres sur le même modèle. Sur la dernière update j'ai même supprimé le "sleep 2" qui suivait et tout fonctionne.
    Pour le reste en fait il faut tout remettre en place (plus de S60emulationstation, plus de S30network, plus de S48mount).



  • @obilolo Ok donc je pourrai faire quelque chose comme ca ?
    0_1518472293750_Capture d’écran_2018-02-12_22-42-37.png
    j'ai supprimé le "sleep 2" mais ca ne change rien je viens de rebooter mon recalbox la meme resultat..
    je n'avais pas de S60emulationstation, de S30network, de S48mount pour ma part..
    j'ai juste remis le S45emulationstation en S31emulationstation et il me reste juste un S28mount..
    j'arrive pas a savoir si c'est mon freenas qui me bloque ou si c'est ma modif sur recalbox qui deconne..
    Ne faut il pas entrer un login et un mot de passe quelque part pour avoir accès a un partage NFS ?



  • Bon je me auto-repond moi même mdr
    la solution pour moi étant de passer par un partage samba pour mounté mes repertoires comme expliqué dans le wiki de recalbox j'ai juste décalé le S31emulationstation en S92emulationstation et ca marche
    https://github.com/recalbox/recalbox-os/wiki/Charger-ses-rom-depuis-un-partage-réseau-Samba-(par-exemple-un-NAS)-(FR)
    en effet je ne sais pas pourquoi mais le partage NFS ne fonctionne plus avec mon nas.
    Le plus important c'est que CA MARCHE !



  • @guyomemalik ah super si ça marche.

    Pour le NFS et le mot de passe, tout dépend de comment tu as configuré ton NAS. Il faut essayer les commandes en interactif jusqu'à ce que ça passe... Mais bon si le SMB marche, pas besoin de se prendre la tête !

    Sinon j'ai tenté de passer par la méthode officielle (un peu bidouillée puisqu'on ne veut monter que certains répertoires sous roms). Donc j'ai passé sharedevice à "NETWORK" pour avoir la main dessus, et j'ai commencé par mettre une commande perso qui monte la partition interne dans /roms.

    Jusque là ça marche, mais ça part mal puisque je me prends 25s de temps de boot en plus (je passe à quasiment 60s). Je suppose que c'est pour bien attendre le réseau, mais c'est vrai que c'est super significatif.

    Derrière, j'ai essayé d'ajouter les mount des répertoires distants, et là, que dalle. Quoi que je fasse, ça ne marche jamais. C'est comme si mes commandes étaient ignorées.

    Alors bon, du coup vu que c'est plus compliqué que ce que je pensais, qu'au niveau du temps de boot c'est pas top, et que dans mon script perso je fais un ping pour vérifier que le NAS est bien là ce qui me permet d'être transparent si je ne suis pas chez moi (ce qui ne serait pas le cas là), je vais laisser tomber...



Want to support us ?

Join us on :

324
Online

25487
Users

13351
Topics

101182
Posts

Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.