Installing Arch Linux on a USB key (简体中文)

From ArchWiki
Jump to: navigation, search
翻译状态: 本文是英文页面 Installing_Arch_Linux_on_a_USB_key翻译,最后翻译时间:2015-9-9,点击这里可以查看翻译后英文页面的改动。

本页讨论如何在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或OS X,可以通过VirtualBox引导Arch的Live ISO,然后将U盘连接到虚拟机上进行安装。

安装

按照安装指南进行安装,仅需注意以下几点:

  • 如果 cfdisk 由于 "Partition ends in the final partial cylinder" 这个错误失败,唯一的解决方法就是干掉U盘上的所有分区。打开另一个终端(Alt+F2),输入 fdisk /dev/sdX (sdX 对应你的 U盘),显示分区表(p),查看,删除掉已存在的分区(d)然后保存修改(w)。最后,再进 cfdisk。
  • 强烈建议,关于如何选择文件系统的问题,请先阅读一下 SSD 这篇文章 关于优化 SSD 固态硬盘读写的技巧[broken link: invalid section],总地来说,不带日志(journal)功能的 ext4 是比较通用的优选方案。可以用这样的命令来创建:# mkfs.ext4 -O "^has_journal" /dev/sdXX。因为带日志功能的文件系统日志更新会在一定程度上消耗闪存有限的写入寿命。由于同样的原因,最好放弃 swap 分区。注意这个建议并不适用于安装在 USB(机械)硬盘的情况。
  • # mkinitcpio -p linux创建 RAM Disk 前,在修改 /etc/mkinitcpio.conf,将 block 添加到紧挨 udev 的后面. 只有这样早期用户空间才能正确的装入模块。
  • 如果想在其它操作系统上继续使用优盘,可以使用 NTFS 或 exFAT 创建数据分区. 数据分区需要是设备的第一个分区,因为 Windows 会假定移动设备仅有一个分区。需要安装 dosfstoolsntfs-3g.网上有一些工具可以翻转U盘的可移动媒体位使得操作系统把它当作额外的硬盘,这样你就可以使用你选择的任意磁盘划分方式。
警告: 因为不是所有的U盘都可以翻转可移动媒体位而且使用不成熟的软件进行操作可能会损坏你的设备,所以不推荐使用翻转可移动媒体位的方法
  • 安装NetworkManager来管理网络,它可以改变不同硬件的接口名称

配置

请确认在 /etc/fstab 中的 / 目录分区信息和 U盘中的所有分区信息都要正确。如果这个U盘会用来启动多台电脑,建议使用UUID方式生成fstab 和启动管理器配置,详情参阅 Persistent block device naming

使用blkid可以获取各个分区的 UUID 属性,当前的 GRUB已经默认使用 UUID。

注意:
  • 如果U盘上安装了 GRUB,U盘总是 hd0,0
  • 当前版本的GRUB默认使用UUID,下面的指南是针对GRUB legacy的。

GRUB legacy

GRUB legacy的配置文件menu.lst 应该大致如下进行编辑:

使用固定的/dev/sdaX:

root (hd0,0)
kernel /boot/vmlinuz-linux root=/dev/sda1 ro
initrd /boot/initramfs-linux.img

使用标签时,你的配置文件应该像这样:

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

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 --bootloader-id=grub --removable --recheck

Syslinux

使用固定的/dev/sdaX:

LABEL Arch
        MENU LABEL Arch Linux
        LINUX ../vmlinuz-linux
        APPEND root=/dev/sdax ro
        INITRD ../initramfs-linux.img

使用UUID:

LABEL Arch
        MENU LABEL Arch Linux
        LINUX ../vmlinuz-linux
        APPEND root=UUID=3a9f8929-627b-4667-9db4-388c4eaaf9fa ro
        INITRD ../initramfs-linux.img

小技巧

在多个机器上使用优盘

架构

i686 架构可以在 32位和 64位系统上使用,而且 32位二进制软件包会减少空间占用。

注意: 如果要 Chroot 到 64 位系统(例如进行安装或系统修复),必须使用 x86_64 Arch.

输入设备

要支持笔记本,请安装 xf86-input-synaptics,详情参阅 Touchpad Synaptics.

显卡驱动

不要使用非开源驱动,建议安装的驱动: xf86-video-vesa mesa xf86-video-ati xf86-video-intel xf86-video-nouveau xf86-video-nv.

同时安装32位软件库:lib32-ati-dri[broken link: replaced by lib32-mesa] lib32-intel-dri[broken link: replaced by lib32-mesa] lib32-nouveau-dri[broken link: replaced by lib32-mesa].

兼容性

使用 fallback 内核可以获得最大的兼容性。

持久块设备命名

推荐在fstab和启动管理器的配置文件中都使用持久块设备命名法,参阅Persistent block device naming (简体中文)获得更多细节.

或者,你可以自行创建udev规则为你的U盘创建符号链接并将其用于fstab和启动管理器的配置文件中,参阅udev#Setting static device names获得更多信息.

内核参数

你也许因为遇到过空白屏幕,"no signal"错误或是其他原因希望禁用KMS(特别是在某些Intel视频卡上).要禁用KMS,加入nomodeset内核参数.你也许希望了解内核参数的详细信息.

Warning: 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和相关的系统调用,可以使用来自libeatmydataAUReatmydata来避免过多的系统调用:
$ eatmydata firefox

参阅