在可移动设备上安装 Arch Linux
本页介绍如何在可移动磁盘(如 U 盘)上进行常规的 Arch 安装。与此相对的是制作 LiveUSB(U 盘安装介质)。结果将是与正常安装到硬盘一样的持久化安装。
安装[编辑 | 编辑源代码]
取决于你的操作系统,可通过多种方式在可移动磁盘上安装 Arch:
- 如果你有另一台 Linux 计算机(不必是 Arch),你可按照Install Arch Linux from existing Linux安装。
- Arch Linux CD/USB 可用于将 Arch 安装到可移动磁盘,只需从 CD/USB 启动并按照安装指南。如果从 Live USB 启动,则无法安装到同一个可移动磁盘。
- 如果你运行 Windows 或 macOS,下载 VirtualBox,安装 VirtualBox 扩展,将你的可移动磁盘连接到Linux 虚拟机(已安装好或从 live ISO 启动),然后按照安装指南安装到连接的磁盘。
安装时的微调[编辑 | 编辑源代码]
- 在创建初始 RAM disk 前,修改
/etc/mkinitcpio.conf
,将block
和keyboard
hook 移动到autodetect
hook 之前。这样才能在分别需要早期用户空间中不同模块的系统上启动。 - 如果你希望能在其他操作系统中使用安装完的磁盘,可以创建使用适当文件系统的分区(如 NTFS 或 exFAT)。注意,数据分区可能需要是设备的第一个分区,因为 Windows 会假定可移动磁盘仅有一个分区,并将自动挂载 EFI 系统分区。记得安装 dosfstools包 和 ntfs-3g包。网上的一些工具可能可以翻转可移动磁盘的可移动媒体位(RMB)。这将使得操作系统把它看作外置硬盘,这样你就可以随意使用你选择的分区方式。
- 如果你的 Arch 安装所在的可移动磁盘需要有两家制造商的微码,安装 amd-ucode包 和 intel-ucode包。见 Microcode#加载微码。
配置[编辑 | 编辑源代码]
- 请确认在
/etc/fstab
中 / 目录的分区信息和磁盘上的其他所有分区信息均正确。如果磁盘将在多台设备上启动,设备和可用的磁盘的数量都很可能不同。因此建议使用 UUID 或标签。
可使用 blkid 或 lsblk 获取分区的 UUID。详情请参阅 Persistent block device naming#by-uuid。
- 如果磁盘上安装了 GRUB,那么磁盘将总是
hd0,0
。 - 当前版本的 GRUB 似乎默认使用 UUID。下面的内容适用于 GRUB legacy。
GRUB legacy[编辑 | 编辑源代码]
GRUB legacy 的配置文件 menu.lst
应该大致按如下进行编辑:
使用文件系统标签时,你的 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[编辑 | 编辑源代码]
按照 GRUB#BIOS 系统和 GRUB#UEFI 系统中的说明为 BIOS 和 UEFI 启动安装 GRUB:
# grub-install --target=i386-pc /dev/sdX --recheck # grub-install --target=x86_64-efi --efi-directory=esp --removable --recheck
/boot/grub/device.map
已经存在。每当你添加/删除计算机中的磁盘时都应使用这一选项。[1]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。
显卡驱动[编辑 | 编辑源代码]
- 对于这种安装,不建议使用专有的显卡驱动。
- 见 Intel graphics#Installation 中关于 xf86-video-intel包 的注释。
为了支持最常见的 GPUs,安装 xf86-video-vesa包、xf86-video-ati包、xf86-video-intel包、xf86-video-amdgpu包、xf86-video-nouveau包 和 xf86-video-fbdev包。
持久块设备命名[编辑 | 编辑源代码]
建议在 fstab 和启动管理器配置中使用 UUID。详情请参阅 Persistent block device naming。
或者,你可以自行创建 udev 规则为你的磁盘创建符号链接,然后在 fstab 和启动管理器配置中使用。详情请参阅 udev#Setting static device names。
内核参数[编辑 | 编辑源代码]
你可能由于各种各样的原因希望禁用 KMS,例如在使用 Intel 显卡时遇到空白屏幕、显示器“无信号”错误等。要禁用 KMS,添加 nomodeset
内核参数。详情请参阅内核参数。
nomodeset
,那么你可能需要在使用 Nvidia 显卡的设备上手动调整分辨率。详情请参阅 Xrandr。兼容性[编辑 | 编辑源代码]
使用 fallback 镜像可获得最大的兼容性。
最小化磁盘访问[编辑 | 编辑源代码]
当安装到总写入量有限的设备(如 U 盘、SD 卡等)上时,减少写入量可以延长设备的寿命。这也可以减小写入慢对性能的影响。
- 强烈建议在选择文件系统前查看减少磁盘读写。概括起来,对于基于闪存的磁盘(如 U 盘、SD 卡等),无日志的 ext4 应该就可以了,它可通过
mkfs.ext4 -O "^has_journal" /dev/sdXX
创建。使用无日志的文件系统的明显的缺点就是在 ungraceful dismount 时会丢失数据。不过要意识到闪存的总写入量是有限的,而日志会占用其中的一部分。由于同样的原因,最好也不要想着 swap 分区了。注意这并不影响安装到可移动硬盘。 - 你可能想将 systemd 日志配置为在内存中存储日志。为此,可以创建一个配置文件:
/etc/systemd/journald.conf.d/usbstick.conf
[Journal] Storage=volatile RuntimeMaxUse=30M
- 要在网页浏览器和其他不写入关键数据的应用程序中禁用
fsync
和相关的系统调用,可以使用来自 libeatmydata包 的eatmydata
命令:
$ eatmydata firefox
UI 响应速度[编辑 | 编辑源代码]
高 I/O 负载可能会使你遇到 UI 冻结,特别是在慢磁盘上。更改 I/O 调度器,或者切换到默认使用不同调度器的内核,可以极大地改进 UI 的响应速度。例如 BFQ 可以改进 UI 的响应速度(它在 linux-zen包 和 linux-ckAUR 上默认启用)。
详见调度算法。
参见[编辑 | 编辑源代码]
- ALMA - 用 Rust 编写的工具,可用于自动创建持久化的 Arch Linux Live USB 安装。
- Arch Linux USB[失效链接 2022-09-18 ⓘ] - c-magyar 关于创建持久化 Live USB 安装的精彩内容。
- archuseriso - Profiles for building Arch Linux Live ISO images. Bootable USB drives creation tools featuring persistent storage and encryption.