USB flash installation medium (简体中文)
USB 驱动器,也被称为闪存驱动器、USB记忆棒、U盘等。可以从 ISO 制作 Arch LiveUSB 系统,从 UEFI 或 BIOS 系统上直接启动 Arch Linux 安装环境。因为SquashFS的只读性质,关机后所有的更改都会丢失。这样的系统可用于 Arch Linux 安装、系统维护或者系统恢复。
要在 U 盘上运行完整的 Arch Linux(即能保留设置),请阅读在U盘中安装Arch Linux。如果想将 Arch Linux LiveUSB 当作救援 USB 来用,参见Change Root
BIOS 和 UEFI 可启动 USB
dd
/dev/sdx
上的所有数据且不可逆。要在使用 Arch ISO 之后释放空间,还原 USB 为原始状态,需要以 root 权限执行wipefs --all /dev/sdx
命令删除 iso9660 文件系统标记,然后再 重新分区 和 重新格式化 USB。GNU/Linux
lsblk
找到U盘并确保没有挂载用U盘替换 /dev/sdx
,如 /dev/sdb
。(不要加上数字,也就是说,不要键入 /dev/sdb1
之类的东西)
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync
请等待 sync 完成,所有数据都写入之后再拔掉 U 盘。
Windows
Rufus
Rufus 是一款多用途的 USB iso 写入工具。只要简单地选择 Arch Linux ISO、要创建可启动 Arch Linux 的 USB 驱动器,然后点击“start”。
由于 Rufus 不关心驱动器是否正确格式化并提供GUI,因此这可能是最简单最强大的工具。
USBwriter
这种方法和 dd
一样简单,只要下载 Arch Linux 安装镜像并用 USBwriter 写入U盘即可。
使用 win32diskimager
win32diskimager 是另一个用于 Windows 的图形化 USB iso 写入工具。只需选择 iso 映像和目标 USB 驱动器号(可能需要先格式化 USB 驱动器后才能分配驱动器号),然后点击“Write”。
Cygwin
请确认您安装了Cygwin的 dd
包。
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映像,例如:
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-2015-XX-YY-dual.iso od=\\.\x: bs=4M
od
parameter, which is used in the commands above. Note however that this parameter is specific to dd for Windows and cannot be found in other implementations of dd.用正常的日期和盘符来替换上面的空缺(以 "x" 来表示)
下面是一个实例:
# dd if=ISOs\archlinux-2015.01.01-dual.iso od=\\.\d: bs=4M
macOS
做一些特定操作后才能在 Mac 下使用 dd
写入 USB 设备。先插入 USB 设备,OS X 会自动挂载它,然后在终端程序中运行:
先确认设备,打开 /Applications/Utilities/Terminal
然后通过下面命令查看所有设备:
$ diskutil list
USB 设备应该显示类似 /dev/disk2 (external, physical)
. 通过名称和大小确认设备名,在后面的命令中替换 /dev/diskX。
设备会被自动挂载,在使用 dd 前需要先卸载设备上的分区:
$ diskutil unmountDisk /dev/disk2
接着我们可以依照上面介绍的方法继续操作,磁盘名使用 rdisk
, 在 OS X 上比较快。
$ sudo dd if=path/to/arch.iso of=/dev/rdiskX bs=1m
此时,在物理拔出U盘前,弹出您的USB驱动器可能是个好主意。
完成后,Mac OS 可能抱怨 "The disk you inserted was not readable by this computer". 选择忽略。启动盘就做好了。
手动方法
GNU/Linux
这种方法比 dd
复杂,但能够保持U盘可用(ISO 被装在分了区的设备的某个分区里而无需改变其他分区)。
/dev/sdXn
指代目标分区,请根据自身的情况调整 X 和 n。- 确保已经安装了最新版的 syslinux(6.02或更新)。
- 如果还未准备好,在继续前创建好分区表和分区。
/dev/sdXn
必须格式化为 FAT32。
- 挂载 ISO 镜像。挂载U盘上的 FAT32 分区,把 ISO 镜像内的文件都复制进去。卸载 ISO 镜像,但不要卸载 FAT32 分区。接着执行:
# mkdir -p /mnt/{iso,usb} # mount -o loop archlinux-version-x86_64.iso /mnt/iso # mount /dev/sdXn /mnt/usb # cp -a /mnt/iso/. /mnt/usb # sync # umount /mnt/iso
- 卷标,或者 UUID 是成功引导必不可少的。默认识别的卷标是
ARCH_2017XX
(XX 和镜像发布月份有关)。因此,FAT32 分区的卷标须设成一样的(可以用gparted)。 要修改识别的卷标,可以编辑 /mnt/usb/arch/boot/syslinux/archiso_sys32.cfg、archiso_sys64.cfg和/mnt/usb/loader/entries/archiso-x86_64.conf中的archisolabel=ARCH_2017XX
(最后一个文件仅对 EFI 系统生效)。32位的 ISO 需要类似修改。要让安装镜像识别 UUID 而不是卷标,将这些地方改为archisodevice=/dev/disk/by-uuid/YOUR-UUID
。UUID 可通过blkid -o value -s UUID /dev/sdXn
查看。
-
/mnt/usb/arch/boot/syslinux 里已经安装 syslinux。请按照 Syslinux#Manual install进行重装。
- 用新 syslinux 的模块(
*.c32
文件)覆盖原有 syslinux 的模块,以免因版本差异导致启动失败。
- 用新 syslinux 的模块(
# cp /usr/lib/syslinux/bios/*.c32 /mnt/usb/arch/boot/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)。
- 从 https://www.kernel.org/pub/linux/utils/boot/syslinux/ 下载官方 syslinux 6.xx (ZIP文件)并解压。Syslinux 的版本应与 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
):
-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 系统的其他方法
GNU/Linux
Using GNOME Disk Utility
Linux distributions running GNOME can easily make a live CD through nautilus and gnome-disk-utility. Simply right-click on the .iso file, and select "Open With Disk Image Writer." When GNOME Disk Utility opens, specify the flash drive from the "Destination" drop-down menu and click "Start Restoring."
Making an USB-ZIP drive
For some old BIOS systems, only booting from USB-ZIP drives is supported. This method allows you to still boot from a USB-HDD drive.
- Download syslinux and mtools from the official repositories.
- Find your usb drive with
lsblk
. - Type
mkdiskimage -4 /dev/sdx 0 64 32
(replace x with the letter of your drive). This will take a while.
From here continue with the manual formatting method. The partition will be /dev/sdx4 due to the way ZIP drives work.
UNetbootin
可以在任何 Linux 发行版或者 Windows 中用 UNetbootin 把你的 ISO 复制到 USB 设备中,但是 Unetbootin 会覆盖 syslinux.cfg,创建的 USB 设备不能正常引导。由于这个原因,不推荐使用 Unetbootin -- 请使用 dd
或者这里列出的其它方法。
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
首先从这里下载程序。然后解压并运行可执行程序。在 Image FIle
部分中选择 Arch Linux ISO,在 Device
部分中选择 U 盘的盘符。准备就绪后点击 Write
。
USBWriter for Windows
从 https://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 系统要求参见安装指南和这里。论坛参考贴。
准备 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-2015.01.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_201501
)。