U 盘安装介质

来自 Arch Linux 中文维基

USB 驱动器,也被称为闪存驱动器、USB记忆棒、U盘等。可以从 ISO 制作 Arch LiveUSB 系统,从 UEFI 或 BIOS 系统上直接启动 Arch Linux 安装环境。由于 / 根目录使用了 Overlayfs,关机后所有的更改都会丢失。这样的系统可用于 Arch Linux 安装、系统维护或者系统恢复。

要在 U 盘上运行完整的 Arch Linux(即能保留设置),请阅读在可移动设备上安装 Arch Linux。如果想将 Arch Linux U 盘当作救援 USB 来用,参见 chroot

在进行下列任何操作前,先从 https://archlinux.org/download/ 下载 ISO 并验证其完整性

直接使用 ISO(BIOS 和 UEFI)[编辑 | 编辑源代码]

警告: 这一操作将不可恢复地删除 USB 驱动器上的所有数据,所以在操作前先确保驱动器上没有存放任何重要文件。
注意: 如果你想将 ISO 写入到机械硬盘或是固态硬盘上,而不是使用 U 盘或是 SD 卡,请确保硬盘的逻辑扇区大小不大于 2048 字节(ISO 9660 扇区大小),并按此数值进行对齐。这也意味着不能用此方法将 ISO 写入到 4Kn 先进格式化硬盘中。

GNU/Linux[编辑 | 编辑源代码]

使用基本命令行工具[编辑 | 编辑源代码]

推荐该方法是因为它简单,且由于这些工具是 coreutils(由 base 元软件包引入)的一部分,其通用性也很广。

使用 ls -l /dev/disk/by-id/usb-* 找到 U 盘的名字,然后使用 lsblk 检查确保其没有被挂载。

将下列命令中的 /dev/disk/by-id/usb-My_flash_drive 替换为你的 U 盘(例如/dev/disk/by-id/usb-Kingston_DataTraveler_2.0_408D5C1654FDB471E98BED5C-0:0)。(不要加上分区编号,也就是不要输入类似 /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_408D5C1654FDB471E98BED5C-0:0-part1 或者是 /dev/sdb1 的东西):

  • 使用 cat(1)
    # cat path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive
  • 使用 cp(1)
    # cp path/to/archlinux-version-x86_64.iso /dev/disk/by-id/usb-My_flash_drive
  • 使用 dd
    # dd bs=4M if=path/to/archlinux-version-x86_64.iso of=/dev/disk/by-id/usb-My_flash_drive conv=fsync oflag=direct status=progress
  • 使用 tee
    # tee < path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive
  • 使用 pv
    # pv path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive

可参考 [1][2] 来对比这些工具并了解它们的大致用法,以及为何 dd 可能是最不适用的方法。

提示:
  • 执行完命令后,使用根权限执行 sync 来确保在移除硬盘前缓冲区数据已完全写入。
  • If the UEFI version of the USB's Arch ISO hangs or is unable to load, try repeating the medium creation process on the same USB drive one or more times. If this does not work, you may also try updating your motherboard's firmware.
注意: 如果在使用完 Arch ISO 镜像后要 U 盘恢复为空的可用 USB 存储设备,须在重分区重新格式化 U 盘前使用根权限运行 wipefs --all /dev/disk/by-id/usb-My_flash_drive 将 ISO 9660 文件系统签名移除。

使用 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.

使用 MultiWriter[编辑 | 编辑源代码]

gnome-multi-writer 是一个基于 GTK3 的图形化工具,用于将 ISO 文件同时写入到单个或多个 U 盘中。

使用 Kindd[编辑 | 编辑源代码]

Kindd 是基于 Qt 的 dd 图形化前端,可通过 kinddAUR 获取。

使用 Popsicle[编辑 | 编辑源代码]

Popsicle 是由 PopOS 开发团队制作的工具,用于同时向多个 U 盘写入 ISO 文件。它使用 Rust 和 GTK 编写,可通过 popsicleAUR 获取。

使用 SUSE Studio ImageWriter[编辑 | 编辑源代码]

SUSE Studio ImageWriter 是由 OpenSUSE 开发团队基于 Qt 制作的 Qt,可通过 imagewriterAUR 获取。

使用 xorriso-dd-target[编辑 | 编辑源代码]

xorriso-dd-target(来自 libisoburn)是一个 shell 脚本,尝试降低覆盖到错误存储设备的风险。它最安全的模式名为 -plug_test。以可以通过 sudo 提升到 root 权限的普通用户为例:

$ xorriso-dd-target -with_sudo -plug_test -DO_WRITE -image_file archlinux-version-x86_64.iso

更多信息可参考 xorriso-dd-target(1)

使用 USBImager[编辑 | 编辑源代码]

USBImager 是一个跨平台的图形化程序,用于将压缩的磁盘镜像写入到 U 盘中并进行验证,并可以创建备份。可通过 usbimagerAUR 获取。

Windows[编辑 | 编辑源代码]

使用 win32diskimager[编辑 | 编辑源代码]

win32diskimager 是另一个用于在 Windows 上写入镜像到 USB 或者 SD/CF 卡上的工具。只需选择 ISO 映像和目标 USB 盘符(可能需要先格式化 USB 驱动器后才能分配驱动器号),然后点击“Write”即可。

使用 USBwriter[编辑 | 编辑源代码]

这一方法和 Linux 下的 dd 一样简单,只要下载 Arch Linux 安装镜像,并通过本地管理员权限使用 USBwriter 写入 U 盘即可。

使用 USBImager[编辑 | 编辑源代码]

USBImager 是一个跨平台的图形化程序,用于将压缩的磁盘镜像写入到 U 盘中并进行验证,并可以创建备份。可通过 usbimagerAUR 获取。

使用 Rufus[编辑 | 编辑源代码]

Rufus 是一款多用途的 USB ISO 写入工具。它提供了图形化用户界面,并不关心驱动器是否被正确地格式化。

只要简单地选择 Arch Linux ISO、要创建可启动 Arch Linux 的 USB 驱动器,然后点击开始即可。

注意: If the USB drive does not boot properly using the default ISO Image mode, DD Image mode should be used instead. To switch this mode on, select GPT from the Partition scheme drop-down menu. After clicking START you will get the mode selection dialog, select DD Image mode.
提示:To add an additional partition for persistent storage use the slider to choose the persistent partition's size. When using the persistent partition feature, make sure to select MBR in the Partition scheme drop-down menu and BIOS or UEFI in Target System, otherwise the drive will not be usable for both BIOS and UEFI booting.

使用 Cygwin[编辑 | 编辑源代码]

先确保你的 Cygwin 环境包含了 dd 包。

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

C:\cygwin\home\User\

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

dd if=archlinux-version-x86_64.iso of=\\.\x: bs=4M

其中 archlinux-version-x86_64.isocygwin 目录下的 ISO 镜像路径,而 \\.\x: 是你的 U 盘,里面的 x 是 Windows 为您的 USB 设备指定的盘符,例如 \\.\d:

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

cat /proc/partitions

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

dd if=archlinux-version-x86_64.iso of=/dev/sdb bs=4M

使用 dd for Windows[编辑 | 编辑源代码]

http://www.chrysocome.net/dd 上有基于 GPL 协议的 Windows 版 dd。相比于 Cygwin,它的优势在于需下载量较小。使用方法参考上面的 Cygwin 部分。

首先下载最新版本的 dd for Windows,并把内容解压到 Downloads 目录或者别的什么地方。

现在以管理员身份运行命令提示符。然后切换目录(cd)到 Downloads 目录。

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

# dd if=archlinux-version-x86_64.iso od=\\.\x: bs=4M
注意: Windows 的驱动器盘符链接到的是分区。为了选择完整的硬盘,上述命令使用了 dd for Windows 提供的 od 参数。需要注意,这一参数仅适用于 dd for Windows,并不适用于其它 dd 实现。

使用 flashnul[编辑 | 编辑源代码]

flashnul is an utility to verify the functionality and maintenance of Flash-Memory (USB-Flash, IDE-Flash, SecureDigital, MMC, MemoryStick, SmartMedia, XD, CompactFlash etc).

From a command prompt, invoke flashnul with -p, and determine which device index is your USB drive, e.g.:

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

When you have determined which device is the correct one, you can write the image to your drive, by invoking flashnul with the device index, -L, and the path to your image, e.g:

C:\>flashnul E: -L path\to\archlinux-version-x86_64.iso

As long as you are really sure you want to write the data, type yes, then wait a bit for it to write. If you get an access denied error, close any Explorer windows you have open.

注意: Open the command prompt as administrator, or else flashnul will fail to open the stick as a block device and will only be able to write via the drive handle windows provides.

macOS[编辑 | 编辑源代码]

使用 macOS dd[编辑 | 编辑源代码]

首先确认设备,打开 /Applications/Utilities/Terminal 然后通过下面命令查看所有存储设备:

$ diskutil list

USB 设备应该类似于 /dev/disk2 (external, physical)。通过名称和大小确认设备是否正确,在后面的命令中用其替换掉 /dev/diskX

macOS 通常会自动挂载 USB 设备,在使用 dd 前需要将其卸载(不是弹出)。打开 Terminal,然后输入:

$ diskutil unmountDisk /dev/diskX

然后将 ISO 镜像复制到设备上:

{{Note|

  • BSD 的 dd 衍生版本(包括 macOS 预装的)使用小写 m 后缀。这与本文其它地方使用的 GNU 版本 dd 不同。
  • disk 前的 r} 意味着使用 raw 模式,可以大幅提升传输速率。
  • 在新版 macOS 中,dd 命令支持使用 status=progress 来显示进度。你也可以通过下方描述手动显示进度。

# dd if=path/to/archlinux-version-x86_64.iso of=/dev/rdiskX bs=1m

这一命令将静默执行。如果要显示进度,可以按下 {{ic|Ctrl+t} 来传递 SIGINFO 信号。注意,这里的 diskX 不应包含 s1 后缀,否则 U 盘将仅支持 UEFI 模式启动。完成后,macOS 可能抱怨 The disk you inserted was not readable by this computer,选择忽略就行。启动盘就做好了。

使用 USBImager[编辑 | 编辑源代码]

USBImager 是一个跨平台的图形化程序,用于将压缩的磁盘镜像写入到 U 盘中并进行验证,并可以创建备份。可通过 usbimagerAUR 获取。

Android[编辑 | 编辑源代码]

使用 EtchDroid[编辑 | 编辑源代码]

EtchDroid 是一个安卓平台上的系统镜像烧录器,从安卓 5 开始不再需要 root 权限。如果遇到任何问题,可查看 GitHub 上游。

要创建 Arch Linux 安装盘,需先将 ISO 镜像下载到安卓设备上。将 U 盘插入到设备,有需要的话可以使用 USB-OTG 转接器。接下来打开 EtchDroid,选择 Flash raw image,选择 Arch ISO 文件,然后选择 U 盘。最后授予 USB API 权限并确认。

刷入镜像时请将手机放在桌子上:很多 USB-OTG 转接器的连接都不太稳,很容易不小心被拔掉。

手动方法[编辑 | 编辑源代码]

BIOS 和 UEFI[编辑 | 编辑源代码]

GNU/Linux[编辑 | 编辑源代码]

这种方法比通过 dd 直接写入镜像复杂,但能够保持 U 盘可用于数据存储(ISO 被装在分了区的设备的特定分区里而无需改变其他分区)。

注意: 接下来会用 /dev/disk/by-id/usb-My_flash_drive-partn 指代目标分区,请根据实际情况修改命令中的 My_flash_driven
  • 预先在 /dev/disk/by-id/usb-My_flash_drive 创建分区表
  • 预先在设备上创建一个分区,/dev/disk/by-id/usb-My_flash_drive-partn 分区必须格式化为 FAT32
  • 挂载 U 盘上的 FAT32 文件系统,并将 ISO 镜像中的内容解压到其中。
# mount /dev/disk/by-id/usb-My_flash_drive-partn /mnt
# bsdtar -x -f archlinux-version-x86_64.iso -C /mnt

在 BIOS 平台上启动时需指定文件所在的卷,默认情况下会使用 UUID YYYY-mm-dd-HH-MM-SS-00(即 UTC 时区的镜像发布时间)。可以将 /mnt/boot/syslinux/archiso_sys-linux.cfg 中的 archisodevice= 参数替换为对应设备的持久化设备识别符,例如:archisodevice=UUID=YOUR-UUID

注意: 错误的 archisolabelarchisodevice 将导致无法从创建好的介质中启动。

用于 BIOS 的 Syslinux 文件已被拷入到 /mnt/boot/syslinux/卸载 FAT 文件系统,安装 syslinuxmtools 包,并运行以下命令来使分区变为可启动:

# umount /mnt
# syslinux --directory boot/syslinux --install /dev/disk/by-id/usb-My_flash_drive-partn
# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=/dev/disk/by-id/usb-My_flash_drive
注意:

Windows[编辑 | 编辑源代码]

注意:
  • 对于手动方法而言,不要使用任何可启动 USB 创建工具制作 UEFI 启动 U 盘,也不要用 dd for Windows 将 ISO 镜像写入 U 盘。
  • 下列命令假定 U 盘盘符为 X:
  • Windows 使用反斜杠 \ 作为路径分隔符,这一规则同样用于下列命令中。
  • 所有命令都应该在以管理员身份运行的命令提示符内执行。
  • > 表示 Windows 命令提示符。
  • 使用 Rufus USB partitioner对 U 盘进行分区和格式化。在分区类型一项选择 MBR for BIOS and UEFI,文件系统选择 FAT32。反选“Create a bootable disk using ISO image”和“创建扩展的标签和图标文件”两项。
  • 如果用的是官方 ISO 镜像(Archiso),需修改 U 盘的卷标到你想要的值。这一步骤也可以在“分区并格式化”这一步中通过 Rufus 来完成。
  • 使用 7-Zip 将 ISO 中的文件解压(与解压 ZIP 压缩包类似)到 U 盘中。
  • 编辑 X:\boot\syslinux\archiso_sys-linux.cfg,将所有 archisodevice=UUID=YYYY-mm-dd-HH-MM-SS-00 替换为 archisodevice=LABEl=YOUR_LABEL,其中 YOUR_LABEL 为上一步设定的卷标。
  • 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:\boot\syslinux\" /y
> copy mbr\*.bin X:\boot\syslinux\ /y
  • 通过以下命令将 Syslinux 安装到 U 盘(64 位系统则使用 win64\syslinux64.exe):
> cd bios\
> win32\syslinux.exe -d /boot/syslinux -i -a -m X:
注意:
  • 仅复制文件并不能使得可以从 U 盘启动;最后一条命令将 Syslinux 的文件安装到了 U 盘的 VBR 分区,在 MBR 分区表中将该分区设置为“活跃/启动”,并将 MBR 启动代码写入到了 U 盘中。
  • -d 参数需要使用正斜杠作为路径分隔符,与类 unix 系统上类似。

仅 BIOS[编辑 | 编辑源代码]

GNU/Linux[编辑 | 编辑源代码]

制作 USB-ZIP 盘[编辑 | 编辑源代码]

某些旧的 BIOS 设备仅支持从 USB-ZIP 盘启动。该方法让你可以继续从 USB 硬盘上启动。

  • 安装 syslinuxmtools
  • 通过 ls /dev/disk/by-id/usb-* 命令找到你的 U 盘。
  • 输入 mkdiskimage -4 /dev/disk/by-id/usb-My_flash_drive 0 64 32,完成需要一段时间。

接下来继续按手动方法进行操作。由于 ZIP 硬盘的工作方式,分区将使用 /dev/disk/by-id/usb-My_flash_drive-part4

注意: 不要将盘格式化为 FAT32 格式,必须使用 FAT16。

仅 UEFI[编辑 | 编辑源代码]

如果仅使用 UEFI 启动,只需将 ISO 中文件解压到 FAT 格式的 U 盘中即可。

由于所有 UEFI 系统都可以 U 盘的任何 FAT 卷中启动,不需要单独创建 EFI 系统分区。兼容性最强的配置方法为使用 MBR 分区表,并创建单个活动(可启动)主分区,类型为 0c“W95 FAT32 (LBA)”。[3]

提示:See Secure Boot#Sign the official ISO with custom keys to understand which files need to be signed if Secure Boot is configured with custom keys.

GNU/Linux[编辑 | 编辑源代码]

This method extracts files from the ISO image to a USB flash drive.

  1. If not done yet, create a partition table on /dev/disk/by-id/usb-My_flash_drive and a partition (/dev/disk/by-id/usb-My_flash_drive-partn) on the device.
  2. If not done yet, format the partition to FAT32:
    # mkfs.fat -F 32 /dev/disk/by-id/usb-My_flash_drive-partn
  3. Mount the file system:
    # mount /dev/disk/by-id/usb-My_flash_drive-partn /mnt
  4. Extract the ISO image to the mounted file system:
    # bsdtar -x -f archlinux-version-x86_64.iso -C /mnt
  5. Unmount the file system.

Windows[编辑 | 编辑源代码]

This method copies files from the ISO image to a USB flash drive.

  1. Partition the USB flash drive and format it to FAT32.
  2. Right click on archlinux-version-x86_64.iso and select Mount.
  3. Navigate to the newly created DVD drive and copy all files and folders to the USB flash drive.
  4. When done copying, right click on the DVD drive and select Eject.
  5. Eject the USB flash drive.

macOS[编辑 | 编辑源代码]

Neither DiskImageMounter nor Disk Utility can mount isohybrid ISOs, but since macOS ships with libarchive, the ISO can simply be extracted onto the flash drive using bsdtar.

  1. If not done yet, partition the USB flash drive and format the partition to FAT32 using Disk Utility.
  2. Mount the volume.
  3. Open the Terminal application and use bsdtar to extract the ISO image to the mounted file system:
    $ bsdtar -x -f archlinux-version-x86_64.iso -C /Volumes/your-flash-drive
  4. When done, unmount and eject the USB flash drive.

使用多引导 USB 设备[编辑 | 编辑源代码]

本文或本章节可能需要合并到多引导USB设备

附注: For Multiboot USB drive#Using Syslinux and memdisk, this is the same method, only Syslinux is installed from Windows. This whole section should be merged there, since Ventoy is already mentioned over there too.(在 Talk:U 盘安装介质 中讨论)

该方法允许从单个 U 盘启动包括 archiso 在内的多个 ISO。将现有 U 盘升级到新版 ISO 的流程比其余多数方法都简单,详情可参考多引导USB设备

使用 ventoy[编辑 | 编辑源代码]

Ventoy 是一个适用于 ISO/WIM/IMG/VHD(x)/EFI 文件的开源可启动 U 盘制作工具。通过使用 ventoy,你不需要反复格式化硬盘,而只需将 ISO/WIM/IMG/VHD(x)EFI 文件复制到 U 盘,然后直接启动即可。你可以一次性复制多个文件,ventoy 会显示一个启动清单让你进行选择。ventoy 可通过 ventoy-binAUR 获取。

Windows[编辑 | 编辑源代码]

从内存加载安装介质[编辑 | 编辑源代码]

这个方法使用 Syslinux 和一个 RamdiskMEMDISK)来把整个 Arch Linux ISO 镜像加载到内存中。由于它将完全运行于系统内存中,您要确保使用这种方法安装的设备上有足够的内存。至少 500MB 到 1G 内存就足以在 MEMDISK 上安装 Arch Linux。

Arch Linux 和 MEMDISK 系统要求参见安装指南这里,也可以参考之前的论坛帖

提示: 一旦安装程序加载完毕,您就可以移除 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 盘中的 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-version-x86_64.iso
        APPEND iso

更多信息可参考 Syslinux

最后一步[编辑 | 编辑源代码]

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

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

不推荐的方法[编辑 | 编辑源代码]

警告: 不推荐使用下列方法。

使用 etcher[编辑 | 编辑源代码]

etcher 包含分析数据收集和第一方广告。可参考[4][5][6]

使用 Universal USB Installer[编辑 | 编辑源代码]

  • 下载页包含可能带毒的假下载按钮。
  • Universal USB Installer 不会按原样写入 ISO 数据,会由于 syslinux 版本的差异导致 BIOS 环境无法启动,可参考 [7]
  • Arch Linux 安装镜像的引导加载器期望 ISO 数据位于卷标为 ARCH_YYYYXX 的卷上。Universal USB Installer 不会更新卷标,也不会修正引导加载器的配置。

使用 UNetbootin[编辑 | 编辑源代码]

  • UNetbootin 不会按原样写入 ISO 数据,会由于 syslinux 版本的差异导致 BIOS 环境无法启动。
  • Arch Linux 安装镜像的引导加载器期望 ISO 数据位于卷标为 ARCH_YYYYXX 的卷上。UNetbootin 不会更新卷标,也不会修正引导加载器的配置。

故障排除[编辑 | 编辑源代码]

未显示设备[编辑 | 编辑源代码]

如果由于 /dev/disk/by-label/ARCH_YYYYMM 未挂载而出现 device did not show up after 30 seconds 报错,可以尝试将 U 盘重命名为 ARCH_YYYYMM 来让 Arch 进行自动搜寻(例如 ISO 名为 archlinux-2021.02.01-x86_64.iso,设备名应为 ARCH_202102)。

Failed to set up loop devices: No such file or directory[编辑 | 编辑源代码]

如果你看到了 losetup: /run/archiso/bootmnt/arch/x86_64/airootfs.sfs: failed to set up loop devices: No such file or directory 报错,请尝试换用 USB 2.0 接口,有时 USB 集线器的部分 USB 3.0 接口会失效。

其它报错[编辑 | 编辑源代码]

对于其它报错,请尝试换一个 U 盘,通常情况下可以解决所有问题。

参见[编辑 | 编辑源代码]