Difference between revisions of "Installing Arch Linux on a USB key"
(→Configuration: usb position) |
(4.1.3 Video drivers, text formatting.) |
||
(47 intermediate revisions by 21 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category:Getting and installing Arch | + | [[Category:Getting and installing Arch]] |
− | [[ | + | [[es:Installing Arch Linux on a USB key]] |
− | {{ | + | [[it:Installing Arch Linux on a USB key]] |
+ | [[zh-CN:Installing Arch Linux on a USB key]] | ||
+ | {{Article summary start}} | ||
+ | {{Article summary text|Guide to installing, configuring and using a full-featured Arch Linux system on a USB flash drive.}} | ||
+ | {{Article summary heading|Related}} | ||
+ | {{Article summary wiki|Beginners' Guide}} | ||
+ | {{Article summary wiki|Installation Guide}} | ||
+ | {{Article summary wiki|General Recommendations}} | ||
+ | {{Article summary wiki|General Troubleshooting}} | ||
+ | {{Article summary end}} | ||
− | This page | + | This page explains how to perform a regular Arch installation onto a USB key (or "flash drive"). In contrast to having a LiveUSB as covered in [[USB Installation Media]], the result will be a persistent installation identical to normal installation to HDD, but on a USB flash drive. |
− | == | + | == Preparation == |
− | |||
− | + | {{Note|At least 2 GiB of storage space is recommended. A modest set of packages will fit, leaving a little free space for storage.}} | |
− | + | There are various ways of installing Arch on a USB stick, the simplest being from within Arch itself: | |
− | + | * If you are already running Arch, simply [[pacman|install]] {{Pkg|arch-install-scripts}} and proceed with the [[Installation Guide]] just like you would from the iso, but you will not be using /dev/sda. Use {{ic|$ lsblk}} to get the /dev/sd* name of your USB key prior to installation. | |
− | + | {{Warning|If you mistakingly format /dev/sda, you are likely to go about deleting everything on your hard drive.}} | |
+ | * An Arch Linux CD/USB can be used to install Arch onto the USB key, via booting the CD/USB and following the [[Installation Guide]]. If booting from a Live USB, the installation will have to be made on a different USB stick. | ||
+ | * Or, if you have another Linux computer available (it need not be Arch), you can follow the instructions to [[Install_from_Existing_Linux|install from existing Linux]], and then skip to the configuration section. | ||
− | + | == Installation == | |
− | + | ||
− | + | Follow the [https://wiki.archlinux.org/index.php/Installation_Guide Installation Guide] as you normally would, with these exceptions: | |
− | + | ||
− | + | * If cfdisk fails with "Partition ends in the final partial cylinder" fatal error, the only way to proceed is to kill all partitions on the drive. Open another terminal ({{keypress|Alt+F2}}), type {{ic|fdisk /dev/sdX}} (where {{ic|sdX}} is your usb drive), print partition table (p), check that it's ok, delete it (d) and write changes (w). Now return to cfdisk. | |
− | + | * It is highly recommended to review the [https://wiki.archlinux.org/index.php/SSD#Tips_for_Minimizing_SSD_Read.2FWrites Tips for Minimizing SSD Read/Writes] on the [[SSD]] wiki article prior to selecting a filesystem. To sum up, ext4 without a journal should be fine. 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 forgo a swap partition. Note that this does not affect installing onto a USB hard drive. | |
− | + | * Before creating the initial RAM disk {{ic|# mkinitcpio -p linux}}, in {{ic|/etc/mkinitcpio.conf}} add the {{ic|block}} hook to the hooks array right after udev. This is necessary for appropriate module loading in early userspace. | |
− | + | ||
− | + | == Configuration == | |
− | + | ||
− | + | * Make sure that {{ic|/etc/fstab}} includes the correct partition information for {{ic|/}}, and for any other partitions on the USB key. If the usb key 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 issue '''blkid''' | |
− | + | ||
− | + | {{Note| | |
− | + | * When GRUB is installed on the USB key, the key will always be {{ic|hd0,0}}. | |
− | + | * 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: | |
+ | With the static /dev/sdaX: | ||
− | + | root (hd0,0) | |
+ | kernel /boot/vmlinuz-linux root=/dev/sda1 ro | ||
+ | initrd /boot/initramfs-linux.img | ||
− | + | When using label your menu.lst should look like this: | |
− | |||
− | |||
− | |||
− | = | + | root (hd0,0) |
− | + | kernel /boot/vmlinuz-linux root=/dev/disk/by-label/'''Arch''' ro | |
+ | initrd /boot/initramfs-linux.img | ||
− | + | And for UUID, it should be like this: | |
root (hd0,0) | root (hd0,0) | ||
− | kernel /boot/ | + | kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/3a9f8929-627b-4667-9db4-388c4eaaf9fa ro |
− | initrd /boot/ | + | initrd /boot/initramfs-linux.img |
+ | |||
+ | === Syslinux === | ||
+ | |||
+ | With the static /dev/sdaX | ||
+ | |||
+ | LABEL Arch | ||
+ | MENU LABEL Arch Linux | ||
+ | LINUX ../vmlinuz-linux | ||
+ | APPEND root=/dev/sdax ro | ||
+ | INITRD ../initramfs-linux.img | ||
− | + | Using your UUID: | |
− | |||
− | + | LABEL Arch | |
+ | MENU LABEL Arch Linux | ||
+ | LINUX ../vmlinuz-linux | ||
+ | APPEND root=UUID=3a9f8929-627b-4667-9db4-388c4eaaf9fa ro | ||
+ | INITRD ../initramfs-linux.img | ||
== Tips == | == Tips == | ||
− | |||
− | |||
− | + | === Using your USB install on multiple machines === | |
− | + | ||
− | + | ==== Architecture ==== | |
− | + | ||
− | + | For the most versatile compatibility it is recommended that you install the x86_64 architecture with [[multilib]] support because it will run on both 32 and 64 bit architectures. | |
+ | |||
+ | {{Note|If you have installed i686 architecture and would like to migrate to x86_64, please refer to the [[Migrating Between Architectures Without Reinstalling]] wiki article for help.}} | ||
+ | |||
+ | ==== Input drivers ==== | ||
+ | |||
+ | For laptop use (or use with a tactile screen) you will need the {{Pkg|xf86-input-synaptics}} package for the touchpad/touchscreen to work. | ||
+ | |||
+ | For instructions on fine tuning or troubleshooting touchpad issues, see the [[Touchpad Synaptics]] article. | ||
+ | |||
+ | ==== Video drivers ==== | ||
+ | |||
+ | {{Note|The use of proprietary video drivers is '''not''' recommended for this type of installation.}} | ||
− | + | The recommended video drivers are: {{Pkg|xf86-video-vesa}} {{Pkg|mesa}} {{Pkg|xf86-video-ati}} {{Pkg|xf86-video-intel}} {{Pkg|xf86-video-nouveau}} {{Pkg|xf86-video-nv}}. | |
− | |||
− | |||
− | |||
− | + | For the most versatile compatibility install all of the open source video drivers include their multilib counterparts: {{Pkg|lib32-ati-dri}} {{Pkg|lib32-intel-dri}} {{Pkg|lib32-nouveau-dri}}. | |
− | |||
− | + | ==== Boot without using UUID ==== | |
− | |||
When using the USB key on various target machines, it is helpful to have multiple entries in GRUB, for machines with different setups. For example, the GRUB configuration could contain: | When using the USB key on various target machines, it is helpful to have multiple entries in GRUB, for machines with different setups. For example, the GRUB configuration could contain: | ||
Line 83: | Line 113: | ||
title Arch Linux (first drive) | title Arch Linux (first drive) | ||
root (hd0,0) | root (hd0,0) | ||
− | kernel /boot/ | + | kernel /boot/vmlinuz-linux root=/dev/sda1 ro |
− | initrd /boot/ | + | initrd /boot/initramfs-linux.img |
As well as | As well as | ||
Line 91: | Line 121: | ||
title Arch Linux (second drive) | title Arch Linux (second drive) | ||
root (hd0,0) | root (hd0,0) | ||
− | kernel /boot/ | + | kernel /boot/vmlinuz-linux root=/dev/sdb1 ro |
− | initrd /boot/ | + | initrd /boot/initramfs-linux.img |
+ | |||
+ | And so forth, giving you the option to select a configuration for a wider variety of machines. However, changing the {{ic|1=root=}} option in GRUB does not change {{ic|/etc/fstab}} and you must do something (in our example using udev symlink), so the root partition will always be mounted correctly. | ||
− | + | * Run {{ic|udevinfo -p /sys/block/sdx/ -a}} (where sdx is the device name of your usb key) | |
+ | * Find unique information pertaining to your usb key. I chose {{ic|1=SYSFS{model}=="DataTraveler 2.0"}} | ||
+ | * Make a new file: {{ic|/etc/udev/udev.rules/10-my-usb-key.rules}} and insert: | ||
+ | :{{bc|1= KERNEL=="sd**", SYSFS{product}=="DataTraveler 2.0", SYMLINK+="WHATEVERYOUWANTOTCALLIT%n"}} | ||
+ | :({{ic|1=KERNEL=="sd**"}} is because the kernel - 2.6.16 here - names all usb devices sd as it uses the scsi sub-system and you want to look at every sd device and apply the setting to every partition), with {{ic|1=SYSFS{model}==}} being the unique identifier collected from udevinfo. | ||
+ | * Run {{ic|/etc/start-udev uevents}} and make sure the symlinks appears in {{ic|/dev}}. | ||
+ | * If so, edit {{ic|/etc/fstab}}, replacing your old sdx with the new symlinks. | ||
− | + | ==== 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 {{ic|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 {{ic|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.}} | |
=== Optimizing for the lifespan of flash memory === | === Optimizing for the lifespan of flash memory === | ||
− | |||
− | == See | + | * Again, it is highly recommended to review the [[SSD#Tips_for_Minimizing_SSD_Read.2FWrites|Tips for Minimizing SSD Read/Writes]] on the [[SSD]] wiki article. |
+ | |||
+ | == See also == | ||
+ | |||
* [[Official Arch Linux Install Guide]] | * [[Official Arch Linux Install Guide]] | ||
* [[Installing Arch Linux from VirtualBox]] | * [[Installing Arch Linux from VirtualBox]] | ||
− | * [[ | + | * [[Solid State Drives]] |
Revision as of 18:47, 21 June 2013
zh-CN:Installing Arch Linux on a USB key Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end
This page explains how to perform a regular Arch installation onto a USB key (or "flash drive"). In contrast to having a LiveUSB as covered in USB Installation Media, the result will be a persistent installation identical to normal installation to HDD, but on a USB flash drive.
Preparation
There are various ways of installing Arch on a USB stick, the simplest being from within Arch itself:
- If you are already running Arch, simply install arch-install-scripts and proceed with the Installation Guide just like you would from the iso, but you will not be using /dev/sda. Use
$ lsblk
to get the /dev/sd* name of your USB key prior to installation.
- An Arch Linux CD/USB can be used to install Arch onto the USB key, via booting the CD/USB and following the Installation Guide. If booting from a Live USB, the installation will have to be made on a different USB stick.
- Or, if you have another Linux computer available (it need not be Arch), you can follow the instructions to install from existing Linux, and then skip to the configuration section.
Installation
Follow the Installation Guide as you normally would, with these exceptions:
- If cfdisk fails with "Partition ends in the final partial cylinder" fatal error, the only way to proceed is to kill all partitions on the drive. Open another terminal (Template:Keypress), type
fdisk /dev/sdX
(wheresdX
is your usb drive), print partition table (p), check that it's ok, delete it (d) and write changes (w). Now return to cfdisk. - It is highly recommended to review the Tips for Minimizing SSD Read/Writes on the SSD wiki article prior to selecting a filesystem. To sum up, ext4 without a journal should be fine. 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 forgo a swap partition. Note that this does not affect installing onto a USB hard drive.
- Before creating the initial RAM disk
# mkinitcpio -p linux
, in/etc/mkinitcpio.conf
add theblock
hook to the hooks array right after udev. This is necessary for appropriate module loading in early userspace.
Configuration
- Make sure that
/etc/fstab
includes the correct partition information for/
, and for any other partitions on the USB key. If the usb key 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 issue blkid
- When GRUB is installed on the USB key, the key 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.
GRUB legacy
menu.lst
, the GRUB legacy configuration file, should be edited to (loosely) match the following:
With the static /dev/sdaX:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sda1 ro initrd /boot/initramfs-linux.img
When using label your menu.lst should look like this:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-label/Arch ro 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 ro initrd /boot/initramfs-linux.img
Syslinux
With the static /dev/sdaX
LABEL Arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux APPEND root=/dev/sdax ro INITRD ../initramfs-linux.img
Using your UUID:
LABEL Arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux APPEND root=UUID=3a9f8929-627b-4667-9db4-388c4eaaf9fa ro INITRD ../initramfs-linux.img
Tips
Using your USB install on multiple machines
Architecture
For the most versatile compatibility it is recommended that you install the x86_64 architecture with multilib support because it will run on both 32 and 64 bit architectures.
Input drivers
For laptop use (or use with a tactile screen) you will need the xf86-input-synaptics package for the touchpad/touchscreen to work.
For instructions on fine tuning or troubleshooting touchpad issues, see the Touchpad Synaptics article.
Video drivers
The recommended video drivers are: xf86-video-vesa mesa xf86-video-ati xf86-video-intel xf86-video-nouveau xf86-video-nv.
For the most versatile compatibility install all of the open source video drivers include their multilib counterparts: lib32-ati-dri lib32-intel-dri lib32-nouveau-dri.
Boot without using UUID
When using the USB key on various target machines, it is helpful to have multiple entries in GRUB, for machines with different setups. For example, the GRUB configuration could contain:
# (0) Arch Linux title Arch Linux (first drive) root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sda1 ro initrd /boot/initramfs-linux.img
As well as
# (1) Arch Linux title Arch Linux (second drive) root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sdb1 ro initrd /boot/initramfs-linux.img
And so forth, giving you the option to select a configuration for a wider variety of machines. However, changing the root=
option in GRUB does not change /etc/fstab
and you must do something (in our example using udev symlink), so the root partition will always be mounted correctly.
- Run
udevinfo -p /sys/block/sdx/ -a
(where sdx is the device name of your usb key) - Find unique information pertaining to your usb key. I chose
SYSFS{model}=="DataTraveler 2.0"
- Make a new file:
/etc/udev/udev.rules/10-my-usb-key.rules
and insert:
KERNEL=="sd**", SYSFS{product}=="DataTraveler 2.0", SYMLINK+="WHATEVERYOUWANTOTCALLIT%n"
- (
KERNEL=="sd**"
is because the kernel - 2.6.16 here - names all usb devices sd as it uses the scsi sub-system and you want to look at every sd device and apply the setting to every partition), withSYSFS{model}==
being the unique identifier collected from udevinfo.
- Run
/etc/start-udev uevents
and make sure the symlinks appears in/dev
. - If so, edit
/etc/fstab
, replacing your old sdx with the new symlinks.
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.
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.Optimizing for the lifespan of flash memory
- Again, it is highly recommended to review the Tips for Minimizing SSD Read/Writes on the SSD wiki article.