# Can ROS workspace safely exist in an external HDD?

Is it safe to create and operate a ROS workspace from an external hard drive? Are there any limitations or issues I should be aware of?

Tutorials and manuals typically suggest that the workspace should be created in the home directory, but I would like to have my ROS workspace external so it can be mobile.

I'm using ROS Melodic on Ubuntu 18.04.2 LTS

I have a large HDD (formatted to ExFat) that I have intentions to use as a general mass storage drive for whatever use I intend. This drive potentially can connect to macOS, Windows 10, and Linux (I've installed compatibility software for ExFat).

Could you explain in detail if/why ExFat would not work? Are there solutions to any potential permissions problems?

The use of the home directory is merely a recommendation, and is not a strict requirement, only for convenience (and convention). You can set it up anywhere that you have read and write access.

This should be perfectly possible, provided that your medium is formatted with a compatible file system, as permissions (on fi dynamic reconfigure and other executable files) are important in a Catkin workspace.

File systems like FAT, FAT32 and ExFat are not suitable for this. Something like Ext3 or Ext4 or some other FS that supports regular Linux file permissions should work fine.

If you use a "Windows" formatted drive, then your "Ubuntu" permissions may probably be lost, as drives formatted for Windows can not support that information. Execute and ownership permissions issues would/could arise.

It would all depend on whether you need portability in order to be able to access the workspace from a Windows machine, or if you consistently use [different] Ubuntu/Linux machines.

If you really want use an ExFAT formatted drive, then I'm not entirely au fait with the situation, as I do not use Windows at all. You probably could/would run into issues. A solution might be to delete the devel and build directories and re-run catkin_make before accessing it on the new machine1.

The use of an external drive is a good idea, portability wise. You may need to reconfigure paths when you move to another host machine though.

Another option is to have a separate user for ROS, whose entire home directory is on the external disk. You would log in as that user to have your environment ready to go. This is the method that I use. However, this requires admin access to set up your login to point to the externally mounted disk containing the home directory, prior to your logging in as the ROS user. You may not have that ability, or access.