Install Arch Linux on a removable medium (简体中文)

From ArchWiki
翻译状态:本文是 Installing Arch Linux on a USB key翻译。上次翻译日期:2022-01-16。如果英文版本有所更改,则您可以帮助同步翻译。

本页讨论如何在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,将 blockkeyboard hook移动到 autodetect 前面。只有这样生成的早期用户空间才能包含支持不同的系统硬件的模块。
  • 如果想在其它操作系统上继续使用优盘,可以使用 NTFS 或 exFAT 创建数据分区. 数据分区需要是设备的第一个分区,因为 Windows 会假定移动设备仅有一个分区。需要安装 dosfstoolsntfs-3g.网上有一些工具可以翻转U盘的可移动媒体位使得操作系统把它当作额外的硬盘,这样你就可以使用你选择的任意磁盘划分方式。
  • 如果你的Arch安装与可以移除设备,且需要不同制造商的微码,请同时安装amd-ucodeintel-ucode。见 Microcode_(简体中文)#安装
  • 强烈建议,关于如何选择文件系统的问题,请先阅读一下 SSD 这篇文章 关于优化 SSD 固态硬盘读写的技巧,总地来说,不带日志(journal)功能的 ext4 是比较通用的优选方案。可以用这样的命令来创建:# mkfs.ext4 -O "^has_journal" /dev/sdXX。因为带日志功能的文件系统日志更新会在一定程度上消耗闪存有限的写入寿命。由于同样的原因,最好放弃 swap 分区。注意这个建议并不适用于安装在 USB(机械)硬盘的情况。
警告: 因为不是所有的U盘都可以翻转可移动媒体位而且使用不成熟的软件进行操作可能会损坏你的设备,所以不推荐使用翻转可移动媒体位的方法
提示: 在Windows10版本1703及以上可以读取多个可移动磁盘分区,这样就不需要工具了

配置

请确认在 /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系统的兼容性

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: 许多系统能够无需修改,进行BIOS/GPT启动。对于这样会有问题的系统,混合hybrid-MBR并不是唯一的解决方案。Partitioning#Tricking old BIOS into booting from GPT可用作替代方案。 (Discuss in Talk:Install Arch Linux on a removable medium (简体中文))

因为这个引导要在多个机器上运行,而且至今仍有需要仅支持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内核参数.你也许希望了解内核参数的详细信息.

警告: KMS禁用时某些Xorg驱动无法正常工作.请在对应的wiki页面上查找详细信息.特别对于Nouveau(它依靠KMS来决定正确的分辨率),如果你在有Nvidia显示卡的电脑上禁用了KMSd,你可能必须手动调整分辨率.参阅Xrandr获得更多信息.

从USB3.0 介质中启动

参阅 [1].

最小化磁盘访问

  • 要将 journald 日志储存到内存中,可以新建配置文件:
/etc/systemd/journald.conf.d/usbstick.conf
[Journal]
Storage=volatile
RuntimeMaxUse=30M
  • 要在web浏览器或者其他应用没有写入关键数据时停用fsync和相关的系统调用,可以使用来自libeatmydataeatmydata来避免过多的系统调用:
$ eatmydata firefox

UI响应速度

由于I/O高负载,你可能会遇到UI冻结,特别是在慢设备上。Improving performance#Changing I/O scheduler ,或者切换到使用不同默认调度器的内核,可以很大改进你的UI响应速度。 例如 BFQ,在linux-zenlinux-ckAURlinux-xanmodAUR上默认启用。

更多见Improving performance#The scheduling algorithms

参阅