Install Arch Linux on a removable medium (简体中文)
本页讨论如何在U盘(闪存盘)上安装一个常规的 Arch,这里的系统是指一个可以升级和使用的系统,而不是一个用来引导系统启动的USB 安装媒介。
准备
如果打算安装 KDE 之类大容量的应用程序,建议至少准备一个 3GiB 的U盘。GNOME 和 Xfce4 的话,如果只安装常用桌面包,(GIMP, Pidgin, OpenOffice, Firefox, flashplugin),可以安装到 2GiB U盘中,给用户数据留一些空间。
将 Arch 安装到 USB 有多种方式,最简单的方法是从 Arch 中安装:
- 启动到 Arch 系统中,安装 软件包 arch-install-scripts,然后按照 安装指南 进行安装。只不过安装的目标不再是
/dev/sda
. 通过$ lsblk
确定优盘对应的/dev/sd*
设备号。
/dev/sda
,整个硬盘数据都会丢失。- 启动到 Arch 安装光盘/优盘,安装目标是另外一个优盘。
- 如果你有别的 linux 电脑(不一定是 Arch),你也可以参考这篇文章 从现有的 Linux 系统进行安装,并跳过配置部分。
- 如果你运行Windows或macOS,可以通过VirtualBox引导Arch的Live ISO,然后将U盘连接到虚拟机上进行安装。
安装
按照安装指南进行安装,仅需注意以下几点:
-
创建 RAM Disk 前,修改
/etc/mkinitcpio.conf
,将block
和keyboard
hook移动到autodetect
前面。只有这样生成的早期用户空间才能包含支持不同的系统硬件的模块。 - 如果想在其它操作系统上继续使用优盘,可以使用 NTFS 或 exFAT 创建数据分区. 数据分区需要是设备的第一个分区,因为 Windows 会假定移动设备仅有一个分区。需要安装 dosfstools 和 ntfs-3g.网上有一些工具可以翻转U盘的可移动媒体位使得操作系统把它当作额外的硬盘,这样你就可以使用你选择的任意磁盘划分方式。
- 如果你的Arch安装与可以移除设备,且需要不同制造商的微码,请同时安装amd-ucode和intel-ucode。见 Microcode (简体中文)#安装。
- 强烈建议,关于如何选择文件系统的问题,请先阅读一下 SSD 这篇文章 关于优化 SSD 固态硬盘读写的技巧,总地来说,不带日志(journal)功能的 ext4 是比较通用的优选方案。可以用这样的命令来创建:
# mkfs.ext4 -O "^has_journal" /dev/sdXX
。因为带日志功能的文件系统日志更新会在一定程度上消耗闪存有限的写入寿命。由于同样的原因,最好放弃 swap 分区。注意这个建议并不适用于安装在 USB(机械)硬盘的情况。
配置
请确认在 /etc/fstab 中的 / 目录分区信息和设备中的所有分区信息都要正确。如果这个设备会用来启动多台电脑,建议使用UUID方式生成fstab 和启动管理器配置,详情参阅 Persistent block device naming。
使用blkid可以获取各个分区的 UUID 属性,当前的 GRUB已经默认使用 UUID。
- 如果此设备上安装了 GRUB,此设备总是
hd0,0
。 - 当前版本的GRUB默认使用UUID,下面的指南是针对GRUB legacy的。
GRUB legacy
GRUB legacy的配置文件menu.lst
应该大致如下进行编辑:
使用标签时,你的配置文件应该像这样:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-label/Arch rw initrd /boot/initramfs-linux.img
使用UUID时应该像这样:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/3a9f8929-627b-4667-9db4-388c4eaaf9fa rw initrd /boot/initramfs-linux.img
GRUB
对于MBR系统,假设你的U盘的设备名称为/dev/sdy1:
# mkdir -p /mnt/usb ; mount /dev/sdy1 /mnt/usb # grub-install --target=i386-pc --recheck --debug --boot-directory=/mnt/usb/boot /dev/sdy # grub-mkconfig -o /mnt/usb/boot/grub/grub.cfg
# optional, backup config files of grub.cfg # mkdir -p /mnt/usb/etc/default # cp /etc/default/grub /mnt/usb/etc/default # cp -a /etc/grub.d /mnt/usb/etc
# sync; umount /mnt/usb
如果希望在运行UEFI的计算机上运行,确定你遵循了GRUB#UEFI systems的说明,并加上--removable 选项(否则可能会损坏已有的GRUB安装),例如:
# grub-install --target=x86_64-efi --efi-directory=esp --removable --recheck
Syslinux
使用UUID:
LABEL Arch MENU LABEL Arch Linux LINUX ../vmlinuz-linux APPEND root=UUID=3a9f8929-627b-4667-9db4-388c4eaaf9fa rw INITRD ../initramfs-linux.img
小技巧
在多个机器上使用优盘
与BIOS系统的兼容性
因为这个引导要在多个机器上运行,而且至今仍有需要仅支持BIOS的系统,你可能要考虑同时支持UEFI GPT和BIOS GPT/MBR系统。见 Multiboot USB drive#Hybrid UEFI GPT + BIOS GPT/MBR boot
输入设备
要支持笔记本,请安装 xf86-input-synaptics,详情参阅 Touchpad Synaptics.
显卡驱动
不推荐使用非开源驱动,建议安装的驱动: xf86-video-vesa mesa xf86-video-ati xf86-video-intel xf86-video-nouveau
同时安装32位软件库:lib32-ati-dri[损坏的链接:package not found] lib32-intel-dri[损坏的链接:package not found] lib32-nouveau-dri[损坏的链接:package not found].
兼容性
使用 fallback 内核可以获得最大的兼容性。
持久块设备命名
推荐在fstab和启动管理器的配置文件中都使用持久块设备命名法,参阅Persistent block device naming (简体中文)获得更多细节.
或者,你可以自行创建udev规则为你的U盘创建符号链接并将其用于fstab和启动管理器的配置文件中,参阅udev#Setting static device names获得更多信息.
内核参数
你也许因为遇到过空白屏幕,"no signal"错误或是其他原因希望禁用KMS(特别是在某些Intel视频卡上).要禁用KMS,加入nomodeset
内核参数.你也许希望了解内核参数的详细信息.
从USB3.0 介质中启动
参阅 [1].
最小化磁盘访问
- 要将 journald 日志储存到内存中,可以新建配置文件:
/etc/systemd/journald.conf.d/usbstick.conf
[Journal] Storage=volatile RuntimeMaxUse=30M
- 要在web浏览器或者其他应用没有写入关键数据时停用
fsync
和相关的系统调用,可以使用来自libeatmydata的eatmydata来避免过多的系统调用:
$ eatmydata firefox
UI响应速度
由于I/O高负载,你可能会遇到UI冻结,特别是在慢设备上。Improving performance#Changing I/O scheduler ,或者切换到使用不同默认调度器的内核,可以很大改进你的UI响应速度。 例如 BFQ,在linux-zen,linux-ckAUR,linux-xanmodAUR上默认启用。
更多见Improving performance#The scheduling algorithms。