Install Arch Linux on a removable medium
This page explains how to perform a regular Arch installation onto removable media (e.g. a USB flash drive). In contrast to having a LiveUSB as covered in USB flash installation media, the result will be a persistent installation identical to normal installation to HDD.
There are various ways of installing Arch on removable media, depending on the operating system you have available:
- If you have another Linux computer available (it need not be Arch), you can follow the instructions at Install from existing Linux.
- An Arch Linux CD/USB can be used to install Arch onto the removable medium, via booting the CD/USB and following the installation guide. If booting from a Live USB, the installation cannot be made to the same removable medium you are booting from.
- If you run Windows or OS X, download VirtualBox, install VirtualBox Extensions, attach your removable medium to a virtual machine running Linux (either already installed or via a live ISO), and point the installation into the now attached drive while using the instructions at the Installation guide.
- Before creating the initial RAM disk, in
keyboardhooks before the
autodetecthook. This is necessary to allow booting on multiple systems each requiring different modules in early userspace.
- If you have chosen to install Arch onto a USB mass storage device and want to be able to continue to use it as a cross-platform removable drive, this can be accomplished by creating a partition housing an appropriate file system (most likely NTFS or exFAT). Note that the data partition may need to be the first partition on the device, as Windows assumes that there can only be one partition on a removable device, and will happily automount an EFI system partition otherwise. Remember to install and . Some tools are available online that may allow you to flip the Removable Medium Bit (RMB) on your USB mass storage device. This would trick operating systems into treating your USB mass storage device as an external hard disk and allow you to use whichever partitioning scheme you choose.
- Make sure that
/etc/fstabincludes the correct partition information for
/, and for any other partitions on the disk. If the drive is to be booted on several machines, it is quite likely that devices and number of available hard disks vary. So it is advised to use UUID or label.
To get the proper UUIDs for your partitions use lsblk of blkid. See Persistent block device naming#by-uuid for more information.
- When GRUB is installed on the disk, the disk will always be
- It seems that current versions of GRUB will automatically default to using uuid. The following directions are for GRUB legacy.
menu.lst, the GRUB legacy configuration file, should be edited to (loosely) match the following.
When using file system labels your
menu.lst should look like this:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-label/Arch rw initrd /boot/initramfs-linux.img
And for UUID, it should be like this:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/3a9f8929-627b-4667-9db4-388c4eaaf9fa rw initrd /boot/initramfs-linux.img
On GPT with UEFI installations, make sure you follow the instructions on GRUB#UEFI systems and include the
--removable option as doing otherwise may break existing GRUB installations, as in the below command:
# grub-install --target=x86_64-efi --efi-directory=esp --removable --recheck
Using your UUID:
LABEL Arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux APPEND root=UUID=3a9f8929-627b-4667-9db4-388c4eaaf9fa rw INITRD ../initramfs-linux.img
Using your portable install on multiple machines
To support most common GPUs, install, , , , and .
Persistent block device naming
You may want to disable KMS for various reasons, such as getting a blank screen or a "no signal" error from the display, when using some Intel video cards, etc. To disable KMS, add
nomodeset as a kernel parameter. See Kernel parameters for more info.
nomodesetas a kernel parameter as a preemptive measure you may have to adjust the display resolution manually when using machines with Nvidia video cards. See Xrandr for more info.
The fallback image should be used for maximum compatibility.
Minimizing disk access
If you are running Arch on a USB drive, SD card, or other devices with slow I/O or limited writes, you will want to minimize unneeded writes for maximum performance and longevity
- It is highly recommended to review the Improving performance#Reduce disk reads/writes article prior to selecting a file system. To sum it up, for flash-based media such as USB flash drives or SD cards, ext4 without a journal should be fine, which can be created with
mkfs.ext4 -O "^has_journal" /dev/sdXX. The obvious drawback of using a file system with journaling disabled is data loss as a result of an ungraceful dismount. Recognize that flash has a limited number of writes, and a journaling file system will take some of these as the journal is updated. For this same reason, it is best to forget the swap partition. Note that this does not affect installing onto a portable hard drive.
- You may want to configure systemd journal to store its journals in RAM, e.g. by creating a custom configuration file:
[Journal] Storage=volatile RuntimeMaxUse=30M
- To disable
fsyncand related system calls in web browsers and other applications that do not write essential data, use the
eatmydatacommand from to avoid such system calls:
$ eatmydata firefox
- ALMA - A utility written in Rust to automatically create persistent Arch Linux Live USB installations.
- ArchLinux USB - c-magyar's excellent writeup on creating a persistent Live USB installation.
- archuseriso - Templates for building Arch Linux Live ISO images. Live USB creation tool featuring Persistent Storage & Encryption.