Installing Arch Linux on a USB key (简体中文)
From ArchWiki
本页讨论如何在U盘(闪存盘)上安装一个常规的 Arch,这里的系统是指一个可以升级和使用的系统,而不是一个用来引导系统启动的USB 安装媒介。
Contents |
准备一个足够大的 U盘
如果打算安装 KDE 之类大容量的应用程序,建议至少准备一个 3GiB 的U盘。GNOME 和 Xfce4 的话,如果只安装常用桌面包,(GIMP, Pidgin, OpenOffice, Firefox, flashplugin),可以安装到 2GiB U盘中,给用户数据留一些空间。
准备一张光盘
Arch Linux 光盘是用来往U盘里安装系统用的,方法是通过光盘启动计算机,并通过运行命令 /arch/setup 执行 AIF。或者,如果你有别的 linux 电脑(不一定是 Arch),你也可以参考这篇文章 从现有的 Linux 系统进行安装,并跳过配置部分。
安装
启动安装器 (/arch/setup)。设置程序将会启动,仅需注意以下几点:
- 最好手动设置分区,因为自动分区很可能无法工作,还可能创建一些不必要的分区
- 如果 cfdisk 由于 "Partition ends in the final partial cylinder" 这个错误失败,唯一的解决方法就是干掉U盘上的所有分区。打开另一个终端(Alt+F2),输入 fdisk /dev/sdX (sdX 对应你的 U盘),显示分区表(p),查看,删除掉已存在的分区(d)然后保存修改(w)。最后,再进 cfdisk。
- 强烈建议,关于如何选择文件系统的问题,请先阅读一下 SSD 这篇文章 关于优化 SSD 固态硬盘读写的技巧,总地来说,带日志(journal)功能的 ext4 是比较通用的优选方案。由于闪存的写入寿命并不很理想,文件系统的日志功能会在一定程度上提供补救。由于某些原因,最好放弃 swap 分区。注意这个建议并不适用于安装在 USB 硬盘的情况。
- 编辑 /etc/mkinitcpio.conf 时,在 udev 后面紧跟着添加 usb。这样才能尽早进行模块读取(这句貌似有问题,原文 This is necessary for appropriate module loading in early userspace.)。
译注:根据译者实测,以及参考 Install_from_Existing_Linux_(简体中文) 文中的 troubleshooting 章节,usb 作为 HOOKS 中的第一项是可行的
配置
- 确认在 /etc/fstab 中的 / 目录分区信息和 U盘中的所有分区信息都要正确。如果这个U盘会用来启动多台电脑,那么还可能需要一些空间来保存设备驱动。
对于blkid问题,需要获取你的各个分区的 UUID 属性
- menu.lst,这是 Grub 的配置文件,可以参考如下方式编辑:
静态方式 /dev/sdaX:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sda1 ro initrd /boot/initramfs-linux.img
如果使用标签,你的 menu.lst 可能是这样:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-label/Arch ro initrd /boot/initramfs-linux.img
而 UUID 应该是这样的:
root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/disk/by-uuid/3a9f8929-627b-4667-9db4-388c4eaaf9fa ro initrd /boot/initramfs-linux.img
小技巧
不用 UUID,无痛地启动不同计算机
当你在多个不同电脑上使用同一个U盘时,对于不同配置采用多个 GRUB 实体会很有帮助。比如 GRUB 配置可能是这个样子:
# (0) Arch Linux title Arch Linux (first drive) root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sda1 ro initrd /boot/initramfs-linux.img
也可能是这个样子
# (1) Arch Linux title Arch Linux (second drive) root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sdb1 ro initrd /boot/initramfs-linux.img
诸如此类,允许你根据不同电脑选择更多不同的配置。然而,对 GRUB 中 root= 进行的改变,不会影响 /etc/fstab,因此你必须再做一些事情
(在我们的例子里使用 udev 链接),这样 root 分区才能正确挂在
- 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 ueventsand make sure the symlinks appears in /dev. - If so, edit /etc/fstab, replacing your old sdx with the new symlinks.
针对闪存寿命的优化
- 再次强烈建议!请翻阅 固态硬盘 wiki 文档中关于 优化 SSD 固态硬盘的读写技巧