USB flash installation media (简体中文)

翻译状态: 本文是英文页面 USB_Flash_Installation_Media翻译,最后翻译时间:2014-09-21,点击这里可以查看翻译后英文页面的改动。

本文探讨如何制作能在 UEFI 和 BIOS 系统上启动的 Arch Linux 安装 USB 驱动器(也被称为“闪存驱动器”,“USB记忆棒",“U盘”等)。制作好的U盘被称为 LiveUSB 系统(类似 LiveCD 系统),因为SquashFS的性质,关机后所有的更改都会丢失。这样的系统可用于安装 Arch Linux、系统维护或者系统恢复。

如果想在U盘上运行完整的 Arch Linux(即能保留设置),参见在U盘中安装Arch Linux。如果想将 Arch Linux LiveUSB 当作救援 USB 来用,参见Change Root

BIOS 和 UEFI 可启动 USB

dd

注意: 推荐该方法是因为它简单。如果没有效果,请使用下面介绍的方法 #手动方法
警告: 这种方法会删除 /dev/sdx 上的所有数据且不可逆

GNU/Linux

小贴士: lsblk 找到U盘并确保没有挂载

用U盘替换 /dev/sdx,如 /dev/sdb。(不要加上数字,也就是说,不要键入 /dev/sdb1 之类的东西)

# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx && sync

Windows

USBwriter

这种方法和 dd 一样简单,只要下载 Arch Linux 安装镜像并用 USBwriter 写入U盘即可。

Universal USB Installer

Tango-emblem-important.png

Tango-emblem-important.png

本条目内容存在争议,有待查证。

原因: UUI 只对 BIOS 有效果 (讨论页)

这可能是 Windows 上最直接的方法了。下载 Universal USB Installer(支持Windows XP/Vista/7/8)并直接运行,按界面提示操作。

注意: 因为Syslinux 版本差异,UUI 1.9.5.2 无法直接写入成功。在 UEFI 主板上以 UEFI 模式启动U盘无须关注此问题,但仍要遵循小贴士的建议。
小贴士: Arch Linux 安装镜像通过 USB 卷标挂载相应的驱动器。1.9.5.2 的 UUI 会将卷标设为 UUI,因此需要稍后手动修改。以 archlinux-2014.09.03-dual.iso 为例,其卷标应为 ARCH_201409。不同版本的安装镜像对应不同的卷标。当然,如果填错了卷标,在启动时会出错,那是就能看到正确的卷标了。
警告: Pendrive 的下载按钮大概在页面中间,小心点到广告。
Cygwin

请确认您安装了Cygwindd 包。

小贴士: 如果您不想安装 Cygwin,您可以直接从 这里下载 dd for Windows。查看下一节以获得更多信息。

将您的镜像文件放在您的home目录中:

C:\cygwin\home\John\

以管理员身份运行cygwin(cygwin必须访问硬件)。用下列命令写入到您的USB设备:

dd if=image.iso of=\\.\[x]: bs=4M

其中 image.iso 要输入 cygwin 目录内的 iso 镜像文件名,而 \\.\[x]: 里面的 x 是 Windows为您的USB设备指定的盘符,例如 \\.\d:

Cygwin 6.0 版本中可以这样找到正确的分区:

cat /proc/partitions

然后根据输出信息写入ISO映像,例如:

警告: 这个操作会不可恢复的删除您 USB 设备上的所有文件,所以执行这个操作前请先确定您的 USB 设备中没有任何重要的数据。
dd if=image.iso of=/dev/sdb bs=4M
dd for Windows
注意: 某些用户在使用这种方法时碰到了"isolinux.bin missing or corrupt"的问题。

http://www.chrysocome.net/dd 上有基于 GPL 协议的 dd for Windows。相比于 Cygwin,它的优势在于下载量小。使用方法已经在上面的 Cygwin 部分中说明了。

首先下载最新版本的 dd for Windows,并把内容解压到 Downloads 目录或者别的什么地方。 保 现在以管理员身份运行 命令提示符。然后切换目录(cd)到 Downloads 目录。

如果你的 Arch Linux ISO 在别的地方,你可能需要列出完整路径。方便起见,你可能会把它放在 dd 程序的同一目录中。命令的基本格式像这样:

dd if=archlinux-2014-XX-xx-dual.iso of=\\.\x: bs=4m
警告: 这条命令会把驱动器的格式和内容按照 ISO 中的来填充。误操作后很可能无法恢复其原先的内容,在执行命令以前要确保你dd 中使用的是正确的驱动器!

用正常的日期和盘符来替换上面的空缺(以 "x" 来表示)

下面是一个实例:

dd if=ISOs\archlinux-2014.09.03-dual.iso of=\\.\d: bs=4M

Mac OS X

做一些特定操作后才能在 Mac 下使用 dd 写入 USB 设备。先插入 USB 设备,OS X 会自动挂载它,然后在终端程序中运行:

$ diskutil list

mount 或者 sudo dmesg | tail(例如 /dev/disk1)来找出 USB 设备的名称,卸载设备上的分区(即,/dev/disk1s1)同时保留设备本身(即,/dev/disk1):

$ diskutil unmountDisk /dev/disk1

接着我们可以依照上面介绍的方法继续操作(如果用的是 OS X dd,用 /dev/rdisk 替代 /dev/disk,且 bs=1mrdisk指的是“raw disk”,在 OS X 上比较快,而 bs=1m表示 1 MB 块大小)。

# dd if=image.iso of=/dev/rdisk1 bs=1m
20480+0 records in
20480+0 records out
167772160 bytes transferred in 220.016918 secs (762542 bytes/sec)

此时,在物理拔出U盘前,弹出您的USB驱动器可能是个好主意。

$ diskutil eject /dev/disk1

如何恢复U盘

ISO 镜像是多功能镜像,既可以烧到光盘也能直接写入 USB,所以它不包含一个标准的分区表。

安装 Arch Linux 后,就不需要 USB 安装盘了。你需要往U盘的前 512 字节写零(表示主引导记录中的引导代码和非标准的分区表)来恢复它完整的容量。

# dd count=1 bs=512 if=/dev/zero of=/dev/sdx && sync

然后用 gparted 创建一个新的分区表(如"msdos")和文件系统(如 EXT4,FAT32),或者在终端中:

  • 对于 EXT2/3/4 (相应地调整),命令是:
  1. cfdisk /dev/sdx
  2. mkfs.ext4 /dev/sdx1
  3. e2label /dev/sdx1 USB_STICK
  • 对于 FAT32,安装 dosfstools 软件包并运行:
  1. cfdisk /dev/sdx
  2. mkfs.vfat -F32 /dev/sdx1
  3. dosfslabel /dev/sdx1 USB_STICK

手动方法

GNU/Linux

这种方法比 dd 复杂,但能够保持U盘可用(ISO 被装在[[Partitioning|]分了区的设备]的某个分区里而无需改变其他分区)。

注意: 接下来会用 /dev/sdXn 指代目标分区,请根据自身的情况调整 Xn
  • 确保已经安装了最新版的 syslinux(6.02或更新)。
  • 如果还未准备好,在继续前创建好分区表和分区。/dev/sdXn 必须格式化为 FAT32。
  • 挂载 ISO 镜像。挂载U盘上的 FAT32 分区,把 ISO 镜像内的文件都复制进去。卸载 ISO 镜像,但不要卸载 FAT32 分区。接着执行:
# mkdir -p /mnt/{iso,usb}
# mount -o loop archlinux-2014.09.03-dual.iso /mnt/iso
# mount /dev/sdXn /mnt/usb
# cp -a /mnt/iso/* /mnt/usb
# sync
# umount /mnt/iso
  • 注意: 如果用的是 Archboot,以下步骤可省略;如果是Archiso 则不可。
    卷标,或者 UUID 是成功引导必不可少的。默认识别的卷标是 ARCH_2014XX(XX 和镜像发布月份有关)。因此,FAT32 分区的卷标须设成一样的(可以用gparted)。 要修改识别的卷标,可以编辑 /mnt/usb/arch/boot/syslinux/archiso_sys32.cfgarchiso_sys64.cfg/mnt/usb/loader/entries/archiso-x86_64.conf中的 archisolabel=ARCH_2014XX(最后一个文件仅对 EFI 系统生效)。32位的 ISO 需要类似修改。要让安装镜像识别 UUID 而不是卷标,将这些地方改为 archisodevice=/dev/disk/by-uuid/YOUR-UUID。UUID 可通过 blkid -o value -s UUID /dev/sdXn 查看。
警告: 错误的卷标或 UUID 会导致启动失败。
  • /mnt/usb/arch/boot/syslinux 里已经安装 syslinux。请按照 Syslinux#Manual_install进行重装。
    • 用新 syslinux 的模块(*.c32 文件)覆盖原有 syslinux 的模块,以免因版本差异导致启动失败。
    • 运行:
# extlinux --install /mnt/usb/arch/boot/syslinux
    • 卸载分区(umount /mnt/usb)并将 MBR 或 GPT 分区表安装到U盘。
  • 将该分区标记为活跃(或“启动”)。

Windows

注意:
  • 不要使用可启动 USB 创建工具制作UEFI 启动 USB。不要用dd for Windows将 ISO 镜像写入U盘。
  • 以下命令假设U盘盘符为 X:
  • Windows 使用反斜杠作为路径分隔符,以下命令也是。
  • 所有命令都应该在以管理员身份运行的命令提示符内执行。
  • > 表示 Windows 命令提示符。
  • 分区和格式化工具用 Rufus USB partitioner。partition scheme 选 MBR for BIOS and UEFI,文件系统选FAT32,反选“Create a bootable disk using ISO image”和“Create extended label and icon files”
  • 如果用的是官方 ISO 镜像(Archiso),修改U盘 X: 卷标,与 <ISO>\loader\entries\archiso-x86_64.conf 中的 archisolabel= 保持一致。如果是 Archboot 则不需要修改。卷标可在上一步使用 Rufus 进行分区和格式化时修改。
  • 解压 ISO 文件至U盘(像解压 ZIP 文件一样,软件可用7-Zip)。
  • 运行以下命令(在命令提示符内,以管理员身份运行):
注意: Archboot iso 用 X:\boot\syslinux\
> cd bios\
> for /r %Y in (*.c32) do copy "%Y" "X:\arch\boot\syslinux\" /y
> copy mbr\*.bin X:\arch\boot\syslinux\ /y
  • 通过以下命令将 Syslinux 安装到U盘(64位系统则用 win64\syslinux64.exe):
注意: Archboot iso 用 -d /boot/syslinux
> cd bios\
> win32\syslinux.exe -d /arch/boot/syslinux -i -a -m X:
注意:
  • 上述步骤将安装 Syslinux ldlinux.sys 至U盘分区 VBR,在 MBR 分区表中将该分区设置为活跃/启动,并将 MBR 引导代码写入U盘前 440字节引导代码区中。
  • -d开关需要斜杠作为路径分隔符。

BIOS 系统的其他方法

Tango-dialog-warning.png

Tango-dialog-warning.png

这篇文章或章节的内容已经过期.

请通过更新这篇文章和改正错误帮助改善 wiki。

GNU/Linux

UNetbootin

可以在任何 Linux 发行版或者 Windows 中用 UNetbootin 把你的 ISO 复制到 USB 设备中,但是 Unetbootin 会覆盖 syslinux.cfg,创建的 USB 设备不能正常引导。由于这个原因,不推荐使用 Unetbootin -- 请使用 dd 或者这里列出的其它方法。

警告: UNetbootin 覆盖了默认的 syslinux.cfg;在USB设备正常引导前需要还原它。

编辑 syslinux.cfg

sysconfig.cfg
default menu.c32
prompt 0
menu title Archlinux Installer
timeout 100

label unetbootindefault
menu label Archlinux_x86_64
kernel /arch/boot/x86_64/vmlinuz
append initrd=/arch/boot/x86_64/archiso.img archisodevice=/dev/sdx1 ../../

label ubnentry0
menu label Archlinux_i686
kernel /arch/boot/i686/vmlinuz
append initrd=/arch/boot/i686/archiso.img archisodevice=/dev/sdx1 ../../

你必须用你安装 Arch Linux 的位置,即首个系统未使用的字母来替换 /dev/sdx1 中的 x(例如,如果你有两个硬盘,使用 c。)。你也可以在启动的第一阶段显示菜单的时候按 Tab 键改变它。

Windows

Win32 Disk Imager

警告: 这些操作会销毁 U 盘中的所有信息!

首先从这里下载程序。然后解压并运行可执行程序。在 Image FIle 部分中选择 Arch Linux ISO,在 Device 部分中选择 U 盘的盘符。准备就绪后点击 Write

注意: 安装后你可能需要以这里列出的流程恢复 U 盘。

USBWriter for Windows

http://sourceforge.net/projects/usbwriter/ 下载程序并运行。选择 arch 镜像文件和目标U盘,然后点击 write 按钮。现在你应该能够从 U 盘启动安装 Arch Linux。

Flashnul

flashnul 是一个用来检测和维护闪存(USB-Flash,IDE-Flash,SecureDigital,MMC,MemoryStick,SmartMedia,XD,CompactFlash 等)的工具。

从命令提示符下,使用 –p 参数调用 flashnul 命令来确定 USB 设备的盘符,例如:

C:\>flashnul -p
 Avaible physical drives:
 Avaible logical disks:
 C:\
 D:\
 E:\

在本例中,USB 设备的盘符是 E:

当您确定正确的设备后,您可以将镜像写入到您的设备中,通过调用flashnul命令,后面输入您的设备序号,再输入 -L 及镜像的完整路径,例如:

C:\>flashnul E: -L path\to\arch.iso

在您真的确定要写入这些数据时,输入yes,然后等它写入完成。如果您见到拒绝访问的错误提示,关闭所有打开的资源管理器的窗口。

如果是在 Vista 或者 Win7 下,您需要以管理员的身份打开控制台,否则flashnul不能以块设备的方式访问 U 盘,而只能通过 Windows 提供的驱动句柄写入数据。

注意: 请确认您使用的是盘符而不是数字。flashnul 1rc1, Windows 7 x64.

在内存加载安装介质

Tango-two-arrows.png

Tango-two-arrows.png

This article or section is a candidate for merging with Multiboot USB drive#Using Syslinux and memdisk.

Notes: 除了 Syslinux 是从 Windows 上安装的,其他都一样。考虑到 多启动U盘也能引导安装介质,而且也已经在相关文章添加了链接,或许这两小节可以合并在一起? (Discuss in Talk:USB flash installation media (简体中文)#)

这个方法使用 Syslinux (简体中文) 和一个 Ramdisk (MEMDISK) 来把整个 Arch Linux ISO 镜像加载到内存中。因为它将完全运行于系统内存中,您要确保使用这种方法安装的系统有足够的内存。至少 500MB 到 1G 内存就足以在 MEMDISK 上安装 Arch Linux。 Arch Linux 和 MEMDISK 系统要求参见新手指南这里[失效链接 2014-09-14]论坛参考贴

小贴士: 一旦安装程序加载完毕,您就可以移除 U 盘,甚至再在另一台机器上用它开始执行整个安装步骤。使用 MEMDISK 还允许你在同一个 U 盘中引导并安装 Arch Linux 到它上面。
准备 U 盘

首先格式化 U 盘分区为 ‘’‘FAT32 文件系统。然后在格式化后的磁盘中创建以下目录:

  • Boot
    • Boot/ISOs
    • Boot/Settings
复制需要的文件到 U 盘

然后,把要引导的 ISO 复制到 Boot/ISOs 目录。接着,从这里 最新版的 syslinux 中提取以下文件并复制到下列目录:

  • ./win32/syslinux.exe 到桌面或者系统中的 Downloads 目录。
  • ./memdisk/memdisk 到 U 盘中的 {{ic|Settings} 目录。
创建配置文件

复制完所需文件后,在 U 盘的 /Boot/Settings 目录中创建文件 syslinux.cfg

警告: INITRD 一行中,一定要用复制到 ISOs 目录中的 ISO 文件名!
/Boot/Settings/syslinux.cfg
DEFAULT arch_iso
 
 LABEL arch_iso
         MENU LABEL Arch Setup
         LINUX memdisk
         INITRD /Boot/ISOs/archlinux-2013.08.01-dual.iso
         APPEND iso

更多关于 Syslinux 的信息,参见 Arch Wiki 文章

最后的步骤

最后,在 syslinux.exe 所在目录创建一个 *.bat 文件并运行(如果是在 Vista 或者 Windows 7 下,需要“以管理员身份运行”):


C:\Documents and Settings\username\Desktop\install.bat
 @echo off
 syslinux.exe -m -a -d /Boot/Settings X:

故障排除

  • 对于 MEMDISK 方法,如果你尝试引导 i686 版本的系统时碰到了著名的 30 seconds error,那么在 Boot Arch Linux (i686) 条目上按 Tab 键,然后在末尾添加 vmalloc=448M。参考: 如果你的映像大于 128MiB 且你使用的是32位操作系统,你必须增加最大内存使用参数vmalloc(*)
  • 如果你碰到因 /dev/disk/by-label/ARCH_XXXXXX 未挂载而导致的 30 seconds error,可尝试重命名你的 USB 媒介为 ARCH_XXXXXX(例如 ARCH_201409)。

参见