Install Arch Linux on a removable medium: Difference between revisions

From ArchWiki
(Fix broken link to c-magyar's writeup on installing Arch onto a USB.)
m (fixed a typo)
 
(20 intermediate revisions by 10 users not shown)
Line 15: Line 15:
== Installation ==
== Installation ==


{{Note|At least 2 GiB of storage space is recommended. A modest set of packages will fit, leaving a little free space for storage. However, if you plan to install applications such as KDE, 3 GiB or more is recommended.}}
{{Note|At least 2 GiB of storage space is recommended. A modest set of packages will fit, leaving a little free space for storage. However, if you plan to install [[desktop environment]]s such as KDE, 3 GiB or more is recommended.}}


There are various ways of installing Arch on removable media, depending on the operating system you have available:
There are various ways of installing Arch on removable media, depending on the operating system you have available:
Line 27: Line 27:
* Before [[mkinitcpio#Image creation and activation|creating the initial RAM disk]], in {{ic|/etc/mkinitcpio.conf}} move the {{ic|block}} and {{ic|keyboard}} hooks before the {{ic|autodetect}} hook. This is necessary to allow booting on multiple systems each requiring different modules in early userspace.
* Before [[mkinitcpio#Image creation and activation|creating the initial RAM disk]], in {{ic|/etc/mkinitcpio.conf}} move the {{ic|block}} and {{ic|keyboard}} hooks before the {{ic|autodetect}} hook. 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 {{Pkg|dosfstools}} and {{Pkg|ntfs-3g}}. 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.
* 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 {{Pkg|dosfstools}} and {{Pkg|ntfs-3g}}. 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.
* If your Arch installation is on a removable drive that needs to have microcode for both manufacturer processors, install both {{Pkg|amd-ucode}} and {{Pkg|intel-ucode}} packages. See [[Microcode#Installation]].
* If your Arch installation is on a removable drive that needs to have microcode for both manufacturer processors, install both {{Pkg|amd-ucode}} and {{Pkg|intel-ucode}} packages. See [[Microcode#Loading microcode]].


{{Warning|It is not possible to flip the Removable Medium Bit (RMB) on every USB mass storage device and attempting to use software that is incompatible with your device may damage it. Attempting to flip the RMB is '''not''' recommended.}}
{{Warning|It is not possible to flip the Removable Medium Bit (RMB) on every USB mass storage device and attempting to use software that is incompatible with your device may damage it. Attempting to flip the RMB is '''not''' recommended.}}


== Configuration ==
== Boot loader configuration ==


* Make sure that {{ic|/etc/fstab}} includes the correct partition information for {{ic|/}}, 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.
{{Note|Systemd will autodetect the root filesystem/there is no need to define it within {{ic|/etc/fstab}}}}


To get the proper UUIDs for your partitions use ''lsblk'' of ''blkid''. See [[Persistent block device naming#by-uuid]] for more information.
=== GRUB ===
 
Follow the instructions on [[GRUB#BIOS systems]] and [[GRUB#UEFI systems]] to install GRUB for both BIOS and UEFI booting:
 
# grub-install --target=i386-pc /dev/''sdX'' --recheck
# grub-install --target=x86_64-efi --efi-directory=''esp'' --removable --recheck
 
{{Note|Recheck the device map, even if {{ic|/boot/grub/device.map}} already exists. You should use this option whenever you add/remove a disk into/from your computer. [https://www.gnu.org/software/grub/manual/grub/html_node/Invoking-grub_002dinstall.html]}}
 
=== GRUB legacy ===


{{Note|
{{Note|
Line 41: Line 50:
* It seems that current versions of GRUB will automatically default to using uuid. The following directions are for GRUB legacy.
* It seems that current versions of GRUB will automatically default to using uuid. The following directions are for GRUB legacy.
}}
}}
=== GRUB legacy ===


{{ic|menu.lst}}, the GRUB legacy configuration file, should be edited to (loosely) match the following.
{{ic|menu.lst}}, the GRUB legacy configuration file, should be edited to (loosely) match the following.
Line 57: Line 64:
  kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/3a9f8929-627b-4667-9db4-388c4eaaf9fa rw
  kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/3a9f8929-627b-4667-9db4-388c4eaaf9fa rw
  initrd /boot/initramfs-linux.img
  initrd /boot/initramfs-linux.img
=== GRUB ===
Follow the instructions on [[GRUB#BIOS systems]] and [[GRUB#UEFI systems]] to install GRUB for both BIOS and UEFI booting:
# grub-install --target=i386-pc /dev/''sdX'' --recheck
# grub-install --target=x86_64-efi --efi-directory=''esp'' --removable --recheck
{{Note|Recheck the device map, even if {{ic|/boot/grub/device.map}} already exists. You should use this option whenever you add/remove a disk into/from your computer. [https://www.gnu.org/software/grub/manual/grub/html_node/Invoking-grub_002dinstall.html]}}


=== Syslinux ===
=== Syslinux ===
Line 82: Line 80:


==== Compatibility for BIOS systems ====
==== Compatibility for BIOS systems ====
{{Remove|This section was added in [[Special:Diff/639207|2020]]; BIOS-only systems are not ''plenty''.}}


{{Expansion|Plenty of systems are capable of BIOS/GPT booting without workarounds. For systems that do have issues, hybrid-MBR is not the only solution; [[Partitioning#Tricking old BIOS into booting from GPT]] could be an alternative.}}
{{Expansion|Plenty of systems are capable of BIOS/GPT booting without workarounds. For systems that do have issues, hybrid-MBR is not the only solution; [[Partitioning#Tricking old BIOS into booting from GPT]] could be an alternative.}}
Line 130: Line 130:


=== UI responsiveness ===
=== UI responsiveness ===
You might encounter UI freezes on high I/O load especially on slow drives. [[Improving performance#Changing I/O scheduler]] or switching to a kernel which uses different default scheduler can drastically effect your UI responsiveness. For example [https://docs.kernel.org/block/bfq-iosched.html BFQ] can improve UI responsiveness which is default on {{Pkg|linux-zen}}, {{AUR|linux-ck}}.
You might encounter UI freezes on high I/O load especially on slow drives. [[Improving performance#Changing I/O scheduler]] or switching to a kernel which uses a different default scheduler can drastically affect your UI responsiveness. For example [https://docs.kernel.org/block/bfq-iosched.html BFQ] can improve UI responsiveness which is default on {{Pkg|linux-zen}}, {{AUR|linux-ck}}.


See [[Improving performance#The scheduling algorithms]] for more info.
See [[Improving performance#The scheduling algorithms]] for more info.
Line 136: Line 136:
== See also ==
== See also ==


* [https://github.com/r-darwish/alma ALMA] - A utility written in Rust to automatically create persistent Arch Linux Live USB installations.
* [https://mags.zone/help/arch-usb.html Arch Linux USB] - c-magyar's excellent writeup on creating a persistent Live USB installation.
* [https://mags.zone/arch-usb.html Arch Linux USB] - c-magyar's excellent writeup on creating a persistent Live USB installation.
* [https://github.com/laurent85v/archuseriso archuseriso] - Profiles for building Arch Linux Live ISO images. Bootable USB drives creation tools featuring persistent storage and encryption.
* [https://github.com/laurent85v/archuseriso archuseriso] - Profiles for building Arch Linux Live ISO images. Bootable USB drives creation tools featuring persistent storage and encryption.

Latest revision as of 13:11, 17 April 2024

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 medium, the result will be a persistent installation identical to normal installation to HDD.

Installation

Note: At least 2 GiB of storage space is recommended. A modest set of packages will fit, leaving a little free space for storage. However, if you plan to install desktop environments such as KDE, 3 GiB or more is recommended.

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 does not need to 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 macOS, 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.

Installation tweaks

  • Before creating the initial RAM disk, in /etc/mkinitcpio.conf move the block and keyboard hooks before the autodetect hook. 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 dosfstools and ntfs-3g. 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.
  • If your Arch installation is on a removable drive that needs to have microcode for both manufacturer processors, install both amd-ucode and intel-ucode packages. See Microcode#Loading microcode.
Warning: It is not possible to flip the Removable Medium Bit (RMB) on every USB mass storage device and attempting to use software that is incompatible with your device may damage it. Attempting to flip the RMB is not recommended.

Boot loader configuration

Note: Systemd will autodetect the root filesystem/there is no need to define it within /etc/fstab

GRUB

Follow the instructions on GRUB#BIOS systems and GRUB#UEFI systems to install GRUB for both BIOS and UEFI booting:

# grub-install --target=i386-pc /dev/sdX --recheck
# grub-install --target=x86_64-efi --efi-directory=esp --removable --recheck
Note: Recheck the device map, even if /boot/grub/device.map already exists. You should use this option whenever you add/remove a disk into/from your computer. [1]

GRUB legacy

Note:
  • When GRUB is installed on the disk, the disk will always be hd0,0.
  • 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

Syslinux

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

Tips and tricks

Using your portable install on multiple machines

Compatibility for BIOS systems

This article or section is being considered for removal.

Reason: This section was added in 2020; BIOS-only systems are not plenty. (Discuss in Talk:Install Arch Linux on a removable medium)

This article or section needs expansion.

Reason: Plenty of systems are capable of BIOS/GPT booting without workarounds. For systems that do have issues, hybrid-MBR is not the only solution; Partitioning#Tricking old BIOS into booting from GPT could be an alternative. (Discuss in Talk:Install Arch Linux on a removable medium)

Since this setup will be run on multiple machines and there are still plenty of BIOS only systems around, you might want to consider enabling compatibility for both UEFI GPT and BIOS GPT/MBR systems. See Multiboot USB drive#Hybrid UEFI GPT + BIOS GPT/MBR boot

Video drivers

Note:

To support most common GPUs, install xf86-video-vesa, xf86-video-ati, xf86-video-intel, xf86-video-amdgpu, xf86-video-nouveau and xf86-video-fbdev.

Persistent block device naming

It is recommended to use UUID in both fstab and boot loader configuration. See Persistent block device naming for details.

Alternatively, you may create udev rule to create custom symlink for your disk. Then use this symlink in fstab and boot loader configuration. See udev#Setting static device names for details.

Kernel parameters

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.

Warning: Some Xorg drivers will not work with KMS disabled. See the wiki page on your specific driver for details. Nouveau in particular needs KMS to determine the correct display resolution. If you add nomodeset as 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.

Compatibility

The fallback image should be used for maximum compatibility.

Minimizing disk access

When installing to a device that offers a limited number of writes before it wears out, such as a USB drive, SD card, or similar, reduce the number of writes to increase the device lifetime. This also reduces the performance impact of slow writes.

  • 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:
/etc/systemd/journald.conf.d/usbstick.conf
[Journal]
Storage=volatile
RuntimeMaxUse=30M
  • To disable fsync and related system calls in web browsers and other applications that do not write essential data, use the eatmydata command from libeatmydata to avoid such system calls:
$ eatmydata firefox

UI responsiveness

You might encounter UI freezes on high I/O load especially on slow drives. Improving performance#Changing I/O scheduler or switching to a kernel which uses a different default scheduler can drastically affect your UI responsiveness. For example BFQ can improve UI responsiveness which is default on linux-zen, linux-ckAUR.

See Improving performance#The scheduling algorithms for more info.

See also

  • Arch Linux USB - c-magyar's excellent writeup on creating a persistent Live USB installation.
  • archuseriso - Profiles for building Arch Linux Live ISO images. Bootable USB drives creation tools featuring persistent storage and encryption.