USB flash installation media (简体中文)
本文探讨如何制作能在 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
Contents
BIOS 和 UEFI 可启动 USB
dd
GNU/Linux
用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
这可能是 Windows 上最直接的方法了。下载 Universal USB Installer(支持Windows XP/Vista/7/8)并直接运行,按界面提示操作。
Cygwin
请确认您安装了Cygwin的 dd
包。
将您的镜像文件放在您的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映像,例如:
dd if=image.iso of=/dev/sdb bs=4M
dd for Windows
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
用正常的日期和盘符来替换上面的空缺(以 "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=1m
。rdisk
指的是“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 (相应地调整),命令是:
- cfdisk /dev/sdx
- mkfs.ext4 /dev/sdx1
- e2label /dev/sdx1 USB_STICK
- 对于 FAT32,安装 dosfstools 软件包并运行:
- cfdisk /dev/sdx
- mkfs.vfat -F32 /dev/sdx1
- dosfslabel /dev/sdx1 USB_STICK
手动方法
GNU/Linux
这种方法比 dd
复杂,但能够保持U盘可用(ISO 被装在[[Partitioning|]分了区的设备]的某个分区里而无需改变其他分区)。
- 确保已经安装了最新版的 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
-
ARCH_2014XX
(XX 和镜像发布月份有关)。因此,FAT32 分区的卷标须设成一样的(可以用gparted)。 要修改识别的卷标,可以编辑 /mnt/usb/arch/boot/syslinux/archiso_sys32.cfg、archiso_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 的模块,以免因版本差异导致启动失败。 - 运行:
- 用新 syslinux 的模块(
# extlinux --install /mnt/usb/arch/boot/syslinux
- 卸载分区(
umount /mnt/usb
)并将 MBR 或 GPT 分区表安装到U盘。
- 卸载分区(
- 将该分区标记为活跃(或“启动”)。
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)。
- 从 https://www.kernel.org/pub/linux/utils/boot/syslinux/ 下载官方 syslinux 6.xx (ZIP文件)并解压。Syslinux 的版本应与 ISO 镜像所使用的版本一致。
- 运行以下命令(在命令提示符内,以管理员身份运行):
> 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
):
> cd bios\ > win32\syslinux.exe -d /arch/boot/syslinux -i -a -m X:
BIOS 系统的其他方法
GNU/Linux
UNetbootin
可以在任何 Linux 发行版或者 Windows 中用 UNetbootin 把你的 ISO 复制到 USB 设备中,但是 Unetbootin 会覆盖 syslinux.cfg,创建的 USB 设备不能正常引导。由于这个原因,不推荐使用 Unetbootin -- 请使用 dd
或者这里列出的其它方法。
编辑 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
首先从这里下载程序。然后解压并运行可执行程序。在 Image FIle
部分中选择 Arch Linux ISO,在 Device
部分中选择 U 盘的盘符。准备就绪后点击 Write
。
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 提供的驱动句柄写入数据。
在内存加载安装介质
这个方法使用 Syslinux (简体中文) 和一个 Ramdisk (MEMDISK) 来把整个 Arch Linux ISO 镜像加载到内存中。因为它将完全运行于系统内存中,您要确保使用这种方法安装的系统有足够的内存。至少 500MB 到 1G 内存就足以在 MEMDISK 上安装 Arch Linux。 Arch Linux 和 MEMDISK 系统要求参见新手指南和这里[失效链接 2014-09-14]。论坛参考贴。
准备 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
:
/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
)。