This is a subject I have been a large proponent of for some time. I mainly work directly from a USB due to both security and portability. I highly recommend trying this yourself if you have a spare 32GB USB lying around. You might find the experience liberating. Persistent Linux, you may be wondering what Persistent Linux means. I will cover my understanding of persistence in relation to GNU/Linux, data storage, recovery and security. I will also try to explain some of the limitations of using a USB Persistent or Persistence Data storage while expressing the unique benefits. Persistence refers to the characteristic of data that outlives the execution of the program that created it. Without persistence, data only exists in RAM, and will be lost when the memory loses power. In a typical case the system would save all persistent data on your hard drive making you computer a target for potential physical threats such as BAD USBs and bridged attacks from your local network or local devices.
The benefits of a persistent USB
Modular storage space the Live Linux System is compressed with most persistent installs, the entire operating system takes up less space. Allowing your system, that usually require GBs of space to be condensed into storage capacities less than 1GB in most cases. This gives the ability to maintain a modular approach to storage, maintaining one device for your system and another for sensitive documents and files.
Less wear most of the system is loaded into RAM and only the changes are written to the USB storage device, the read/write cycles decrease, prolonging your USB flash drives life. Due to the prevalence of SDDs and the slow decay of Spinning Hard Drives, this becomes more vital to the longevity of your data.
Security as previously stated, storage space used for persistent changes is independent of the system, allowing you to backup or recover persistent changes without re-installing and rebuilding the entire system. Keeping good back ups are important but this streamlines the process by backing up a singular file and flashing the USB as needed. The system will continue to function like a fresh install if the persistence feature is disabled allowing a secure, fresh experience on every boot.
Portability all your files can in most cases be stored and retrieved when booting from different or multiple machines. This allows you to take your entire system with you on the go and all you need to use your system is an available machine with a available USB port. This is useful if you cannot afford to lose expensive hardware or you do not trust the systems at your workplace or school due to monitoring, auditing, invasive settings, and other malicious programs.
The detriments of a persistent USB
Persistent data can be insecure though using encrypted persistence should go without saying. If you choose not to encrypt, the system can be compromised and the persistent data if sensitive in nature and if left localized on the USB will make it an attack vector as well as leaving the potential to run out of usable disk space.
Some changes pending on the type of system are not saved persistently, In some cases further modification is required to enable things like graphical card settings and network card settings to be saved. This is an issue if you plan on switching machines often with your USB.
Slower boot up and shut down time On boot, the USB has to run a series of compatibility tests to make sure that it can run well on the machine. This slows down the boot up time greatly. This is added to the data saved to your USB, potentially making shutdown longer as well.
For both testing and permanent systems I would look into the following Linux distributions
MX Linux - based on Debian. Using Xfce as the default desktop, it is a mid weight operating system designed as an efficient desktop with simple configuration, high stability, and performance. This is recommended for the average to advanced user.
AntiX - The sister project of MX, this is a much smaller more RAM friendly MX Linux. The function and fashion of MX in a smaller package. DolphinOracle is heavily invested with this project as well as MX Linux. I would recommended taking a look if you are a minimalist users in need of a portable system. Recommended for advanced users.
Puppy Linux - based on Ubuntu this small, full featured system is designed for older machines. Applications are snappy and respond instantly.
Fat-Dog Linux - Also similar to Puppy and AntiX but now forked from Linux From Scratch, due to the build Fat-Dog brings it makes itself a easier and more utility friendly sibling of Puppy.
Tails - based on Debian, provides complete online anonymity. Tails ships with web browser, IRC client, mail client and instant messenger, all pre configured with security in mind and with all traffic tunneled through the Tor network to make Internet traffic very hard to trace. This is the system I use the most when traveling or at work.
Heads - A full Libre and Systemd free alternative to Tails.
Kali Linux - based on Debian, Kali is a collection of security and forensics tools. Kali is a rolling release allowing easy updates and highly versatile and I tend to use this system as a secondary to Tails pending on my intentions for the day.
Parrot - Another Debian fork pen-testing distribution, I would recommend this distribution as a space to live in and use as a daily driver, packaged like Kali, with more ease of use packages.
Making a Persistent USB
To make a Persistent USB in a current Linux system via your terminal the following steps can be taken. With your target USB in your computer, open terminal.
This will readout a list of device names, find your target USB in the list and make note of the /dev/sdx After use the dd command carefully
sudo dd status=progress if=PATH/TO/ISO of=/dev/sdx
After some time your USB should be ready and you can restart your system and boot into the USB, follow the guided boot to find your persistent option and follow the dialog options to crates your password and user-name. Keep this USB with you on a key chain or in a wallet to always have a full secure system with you wherever you go.
Alternative to Linux USB Persistence
Alternatively if you DO NOT want a 'Live' styled system like those listed above, you can of course install Linux on a USB the same way you would on a SDD or HDD on a native system. In this method you are going to need 2 USBs, one containing your installer image, for example like a Debian Net-Install ISO. And a target USB, the USB we will be installing our entire system on. Creating takes the following steps instead...
To find your USB device you want to make a installer, for example /dev/sdx
sudo dd status=progress if=PATH/TO/INSTALLER/ISO of=/dev/sdx
After the installer ISO is made, plug in your target USB for your system and reboot into your BIOS or Boot Selection screen either by hitting ESC, F1, or F12 and select the Installer USB, Following the steps in the installer you want to always target the USB designated for our system. After installation is complete you can remove the Installer USB and reboot into your new system.
I have always been a big fan of this storage type and installation. I do recommend this to anyone who is concerned for their device and data security and/or privacy, while you do run the risk of losing or damaging the USB, I still make it a point to say BACK UP YOUR DATA. But even with the risks mentioned above I find this to be the best way to use your favorite GNU/Linux operating system.
Happy Computing and Stay Paranoid