• Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
RetroPie forum home
  • Recent
  • Tags
  • Popular
  • Home
  • Docs
  • Register
  • Login
Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

Config files on USB Flash drive?

Scheduled Pinned Locked Moved Help and Support
config filesconfig folder
11 Posts 5 Posters 1.3k Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • V
    Vealmike
    last edited by 7 Jul 2021, 10:29

    Hi all,

    I'm currently putting together a system on a Pi4 that I intend to keep for myself, and clone to some old Pi3s to give away.

    Ideally I'd like to keep everything OS related on the SD card, and have all game ROMs, game lists, thumbnail images, config files, remap files etc. on a USB flash. That way cloning the system is trivial. Simply create a new install of Retropie on the new system, install all the required emulators and optional packages. Then plug in a copy of the USB Flash with everything game / game config / game list related.

    I have all the ROMs stored on a USB flash drive. That's easy, well documented and directly supported.
    Can the same currently be done for config files? Or do I need to be creative?

    Is it as simple as creating an alias in the file system to point /opt/retropie/configs to a suitable directory on the USB flash drive?

    Is there anything OS related stored in /opt/configs?
    Is there anything (other than the ROMS) I need that isn't in /opt/configs?

    Thanks in advance.

    D 1 Reply Last reply 7 Jul 2021, 10:58 Reply Quote 0
    • D
      dankcushions Global Moderator @Vealmike
      last edited by dankcushions 7 Jul 2021, 11:58 7 Jul 2021, 10:58

      @vealmike said in Config files on USB Flash drive?:

      I'm currently putting together a system on a Pi4 that I intend to keep for myself, and clone to some old Pi3s to give away.

      fyi, pi3 and pi4 have neccesarily different core options and emulator defaults. can cause issues.

      V 1 Reply Last reply 7 Jul 2021, 11:13 Reply Quote 0
      • V
        Vealmike @dankcushions
        last edited by 7 Jul 2021, 11:13

        @dankcushions Thankyou, I understand this. I'm not concerned if some games on some consoles don't work. I don't expect Pi4 performance from a Pi3.
        The vast majority of Mame, and 8/16 bit console games should be fine on either system (Pi3 / Pi4) without config tweaks.

        1 Reply Last reply Reply Quote 0
        • V
          Vealmike
          last edited by 21 Jul 2021, 07:40

          Is anyone able to answer this please?
          Or point me in the right direction?

          Thanks,

          M 1 Reply Last reply 21 Jul 2021, 08:58 Reply Quote 0
          • M
            mitu Global Moderator @Vealmike
            last edited by 21 Jul 2021, 08:58

            @vealmike There's no support for it in RetroPie, in the same way as ROMs from an USB drive works. The easiest way would to use a backup/restore script and configure a set of files to be backed-up/restored to/from the config folder.

            V 1 Reply Last reply 21 Jul 2021, 13:57 Reply Quote 0
            • V
              Vealmike @mitu
              last edited by Vealmike 21 Jul 2021, 13:57

              @mitu Thanks for your time. It is genuinely appreciated.

              OK so if anyone is interested, I think what I need to do is this:
              On the system I'm copying from:

              0/ Create a backup of /opt/configs

              1/ Move everything from /opt/configs to a new directory /media/usb0/RetropieConfigs
              mv /opt/configs /media/usb/RetropieConfigs

              2/ Create a symbolic link from opt/configs to /media/usb0/RetropieConfigs on the USB mounted drive.
              ln -s /media/usb/RetropieCofigs/ /opt/configs

              3/ Restart Retropie and check everything works.

              Then on a PC I should be able to clone the USB drive.

              Finally on the target system (the one I'm copying to):
              4/ Delete contents of /opt/configs

              5/ Create a symbolic link as step 2/

              6/ Restart retropie and check everything works.

              I'll try it and see what happens.

              1 Reply Last reply Reply Quote 0
              • V
                Vealmike
                last edited by 27 Jul 2021, 20:03

                OK, a quick progress report for anyone that cares...

                First a reminder that mitu says this is unsupported.

                Working only with my Pi4 setup, I wanted to move the configs directory from it's default location to the USB drive. I did the following:

                sudo cp -a -r /opt/retropie/configs /media/usb0/retropie-mount
                sudo mv /opt/retropie/configs /opt/retropie/oldconfigs
                sudo ln -s /media/usb/retropie-mount/configs /opt/retropie/configs
                

                The first command copied most stuff from configs to the usb drive, but failed on some files. More detail in a mo.

                The second command simply renames the default configs directory, so emulation station & retropie can't find or use it.

                And the third command creates a symbolic link from the USB drive copy of configs to the place where emulation station and Retropie expect to find the files.

                Most stuff works. Emulation station has all the game lists, my controllers work. Most of the consoles work.

                However, Amiga games fall over. I'm using Amiberry. And this leads me to the copy command failures.
                The failures were as follows:

                cp: cannot create symbolic linkl '/media/usb0/retropie-mount/all/retroarch-joypads': Operation not permitted
                cp: cannot create symbolic linkl '/media/usb0/retropie-mount/amiga/amiberry/conf/retroarch.cfg': Operation not permitted
                cp: cannot create symbolic linkl '/media/usb0/retropie-mount/amiga/amiberry/whdboot/save-data/Kickstarts/kick33180.A500': Operation not permitted
                cp: cannot create symbolic linkl '/media/usb0/retropie-mount/amiga/amiberry/whdboot/save-data/Kickstarts/kick34005.A500': Operation not permitted
                cp: cannot create symbolic linkl '/media/usb0/retropie-mount/amiga/amiberry/whdboot/save-data/Kickstarts/kick37175.A500': Operation not permitted
                cp: cannot create symbolic linkl '/media/usb0/retropie-mount/amiga/amiberry/whdboot/save-data/Kickstarts/kick39106.A1200': Operation not permitted
                cp: cannot create symbolic linkl '/media/usb0/retropie-mount/amiga/amiberry/whdboot/save-data/Kickstarts/kick40068.A1200': Operation not permitted
                

                7 errors, but 1280 files moved without issues. Not too shabby!

                Sure enough, when I check in /opt/retropie/configs/amiga/amiberry/whdboot/save-dat/Kickstarts/ these files are symbolic links. They're defined as full paths rather than relative paths, but for some reason sudo cp -a doesn't want to copy them. Don't know why.

                Clearly I could go and make these symbolic links manually, but I was looking for a simple solution. I don't want to have to handle a list of exception cases, like these symbolic links. I could script it I suppose.

                I also don't know if Amiberry is the only emulator that will have issues with this process. All I can say for sure is that it is the only console in my setup that has issues!

                1 Reply Last reply Reply Quote 0
                • V
                  Vealmike
                  last edited by Vealmike 30 Jul 2021, 17:20

                  A further update.
                  Result:
                  I now have a Pi4 working with all config files on the USB rather than the system drive. My next step will be to clone the setup to a.n.other Pi.

                  Problems encountered:
                  The files that were not copying needed to be dereferenced. That is, instead of creating a new symbolic link to the original file, the original file itself is copied over.

                  There were other symbolic links in the /opt/retropie/configs directory, so I first did a cp -P (no dereference), then a cp-u- -L (update, dereference).

                  Command list:
                  The list of commands is:

                  sudo cp -P -r /opt/retropie/configs /media/usb0/retropie-mount
                  sudo cp  -u -L -r /opt/retropie/configs /media/usb0/retropie-mount
                  sudo mv /opt/retropie/configs /opt/retropie/oldconfigs
                  sudo ln -s /media/usb/retropie-mount/configs /opt/retropie/configs
                  

                  Systems:
                  I have tested with the following consoles. Amiga, Arcade, Mame, Megadrive, N64, Ports, Playstation, ZX Spectrum.

                  Will post back again when I've copied the config to another system.

                  The goal here is to be able to take the USB stick out of my Emulation Station, to copy it and plug it into another system & have all the games and configs appear on the 2nd system. By doing this, I can clone my ES, give it away, and then easily update the cloned system with any changes I've made to my unit.
                  It feels like I'm halfway there. It also feels like I'm typing into the void and I'm the only person who wants to do this...

                  I posted too soon. Amiberry isn't working with the linked configs directory. Some games aren't seeing the kickstart files.

                  ClydeC 1 Reply Last reply 30 Jul 2021, 21:15 Reply Quote 0
                  • ClydeC
                    Clyde @Vealmike
                    last edited by 30 Jul 2021, 21:15

                    @vealmike You could try to mount the usb directory instead of linking to it. Mounts are somewhate more transparent to the system, so they might work in cases where symlinks don't.

                    You can mount a directory onto another directory with the --bind option.

                    sudo mount --bind /media/usb/retropie-mount/configs /opt/retropie/configs
                    

                    Mind that the mount point /opt/retropie/configs has to exist for this. The mount will hide anything inside it, so it hasn't actually to be empty, but its (then hidden) contents will still take up space on the sd card.

                    The mount will only last until a reboot. To let it be re-mounted at every system start, you'll have to put it in the /etc/fstab like this:

                    /media/usb/retropie-mount/configs /opt/retropie/configs none bind 0 0
                    

                    One possible problem could arise if the system tries to mount the bind before the usb drive, i.e. before /media/usb/retropie-mount/configs exists. You could then try bind,bg instead of bind, the system will then try to make the bind mount in the background until its parent mount becomes available. But then again, it may be mounted too late for Emulation Station. You'll have to experiment with it.

                    V 1 Reply Last reply 2 Aug 2021, 16:43 Reply Quote 0
                    • V
                      Vealmike @Clyde
                      last edited by 2 Aug 2021, 16:43

                      @clyde Thanks, I'll give it a go.

                      G 1 Reply Last reply 6 Jun 2024, 08:20 Reply Quote 0
                      • G
                        Goku @Vealmike
                        last edited by 6 Jun 2024, 08:20

                        @Vealmike I may be a little late to the party, but had a similar need this week. Following @Clyde 's suggestion, I tried bind mounting the USB stick via /etc/fstab, but the timings were off and the bind mount was done before the USB stick was actually available.

                        What I ended up doing, and is working is actually hook into the autostart.sh script. Essentially adding this:

                        # Wait at most 1 minute for the USB drive to be mounted
                        # And link the config folder
                        ATTEMPTS=6
                        USB_DRIVE='/media/usb0'
                        
                        i=0
                        until [ "$i" -ge "$ATTEMPTS" ]; do
                        	grep -q -s "$USB_DRIVE" /proc/mounts && \
                        	sudo mount --bind /media/usb0/retropie-mount/configs /opt/retropie/configs && \
                        	break 
                        
                        	i=$((i+1))	
                        	wait 10
                        done
                        

                        at the beginning of the script. It has some basic logic just to attempt 6 times with 10 seconds delay between each until the stick is detected to be mounted, and then proceeds to do the bind mount of the configs folder, before actually starting emulationstation (or whatever is defined to auto start).

                        I know it's been three years since your post, but maybe this will help someone (like me) in the future 😁

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                        Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.

                          This community forum collects and processes your personal information.
                          consent.not_received