Netboot
网络启动 (Netboot) 镜像体积很小(< 1 MiB),可用于在系统启动时即时下载最新的 Arch Linux 版本。无需更新网络启动镜像,最新的版本会自动可用。网络启动镜像可以从 Arch Linux Netboot 页面下载。
- 你需要足够的内存(可能需要 1.5GiB 甚至更多)来存储和运行 Live 系统,否则启动时可能会出现内核恐慌 (kernel panic)。
- 该功能主要面向有线连接:Wi-Fi 支持有限且高度依赖固件[1]。
BIOS
要在基于 BIOS 的计算机上使用网络启动,你需要 ipxe.lkrn 或 ipxe.pxe 镜像。
使用 ipxe.lkrn
ipxe.lkrn 镜像可以像 Linux 内核一样启动。任何 Linux 引导加载程序(如 GRUB 或 Syslinux)都可以用于从硬盘、CD 或 USB 驱动器加载它。例如,Syslinux wiki 提供了在可启动介质上安装[2]和配置[3] Syslinux 的说明。
你可以通过以下步骤制作一个可启动 ipxe.lkrn 的闪存驱动器
- 使用 lsblk 确认你的设备路径。假设它是
/dev/sdc。 - 在设备上创建 MBR 分区表。
- 创建一个使用 FAT32 文件系统的主分区,并将其标记为活动 (active)。
- 挂载分区,在其中创建
boot/syslinux目录,并将ipxe.lkrn复制到boot目录。
# mount /dev/sdc /mnt # mkdir -p /mnt/boot/syslinux # cp ipxe.lkrn /mnt/boot
- 创建 syslinux 配置
/mnt/boot/syslinux/syslinux.cfg
DEFAULT arch_netboot SAY Booting Arch over the network. LABEL arch_netboot KERNEL /boot/ipxe.lkrn
- 卸载分区
# umount /mnt
- 安装 Syslinux MBR 和 Syslinux 本身
# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdc # syslinux --directory /boot/syslinux/ --install /dev/sdc1
- 现在你应该能够使用 ipxe.lkrn 启动你的 USB 闪存盘了。
或者,你也可以尝试使用 QEMU 运行以下命令来测试镜像
$ qemu-system-x86_64 -enable-kvm -m 2G -kernel ipxe.lkrn
使用 ipxe.pxe
ipxe.pxe 镜像是一个 PXE 镜像。它可以从现有的 PXE 环境中链式加载 (chainloaded)。这允许配置 DHCP 服务器,使得通过网络启动时总是启动到 Arch Linux 网络启动。
或者,你也可以从现有的 pxe 加载程序(如 pxelinux)中链式加载它。以下是一个菜单条目示例
LABEL arch_netboot_chain COM32 pxechn.c32 APPEND ipxe.a56af4e6a9a9.pxe
为了使此示例生效,你必须将 pxechn.c32 复制到 pxelinux.0 所在的目录。
UEFI
ipxe-arch.efi 镜像可用于在 UEFI 模式下启动 Arch Linux 网络启动。仅支持 64 位 UEFI。该镜像可以通过 efibootmgr 添加为启动选项,通过 启动管理器(如 systemd-boot 或 rEFInd)启动,或直接从 UEFI shell 启动。你也可以在 UEFI 系统上将其从独立的 USB 闪存盘启动。
使用 efibootmgr 安装
首先安装 efibootmgr 软件包。假设你的 EFI 系统分区 (ESP) 是 /dev/sdd1 且挂载在 esp 目录下,你应该按如下方式移动它——我们同时给它起一个更友好的名称
# mkdir esp/EFI/arch_netboot # mv ipxe.*.efi esp/EFI/arch_netboot/arch_netboot.efi
然后你可以按如下方式创建启动条目
# efibootmgr --create --disk /dev/sdd --part 1 --loader /EFI/arch_netboot/arch_netboot.efi --label "Arch Linux Netboot" --unicode
从 USB 闪存驱动器启动
如果你想从 USB 闪存驱动器启动 Netboot EFI 二进制文件,请将其复制到 FAT 格式分区的默认/备用启动路径 (/EFI/BOOT/BOOTx64.EFI)。这不需要在驱动器上创建 EFI 系统分区,因为所有 UEFI 都会愉快地从 USB 闪存驱动器的任何 FAT 卷启动。最兼容的设置是使用 MBR 分区表,并包含一个类型为 0c "W95 FAT32 (LBA)" 的单一活动(可启动)主分区。[4]
随后镜像应由 UEFI 系统自动加载。
在 GNU/Linux 中
例如,假设 /dev/sdX 为闪存驱动器,请按如下方式准备 USB 闪存驱动器
- 如果尚未完成,请在
/dev/sdX上创建 分区表,并在设备上创建 分区 (/dev/sdXn)。 - 如果尚未完成,请将分区格式化为 FAT32。
# mkfs.fat -F 32 /dev/sdXn
- 挂载文件系统。
# mount /dev/sdXn /mnt
- 在挂载的文件系统上创建
/EFI/BOOT目录# mkdir /mnt/EFI /mnt/EFI/BOOT
- 将
pxe-arch.efi复制到 x64 UEFI 的默认启动路径# cp pxe-arch.efi /mnt/EFI/BOOT/BOOTx64.EFI
- 卸载文件系统。
在 Windows 中
按如下方式准备 USB 闪存驱动器
- 如果尚未完成,请对 USB 闪存驱动器进行分区并将其格式化为 FAT32。
- 导航到 USB 闪存驱动器的根目录,在其中创建一个
EFI文件夹,并在EFI文件夹内部创建一个BOOT文件夹。 - 将
pxe-arch.efi复制到EFI\BOOT文件夹中。 - 将
pxe-arch.efi文件重命名为BOOTx64.EFI。 - 完成后弹出 USB 闪存驱动器。
故障排除
启动 EFI 二进制文件显示 "device error"
如果启动 EFI 二进制文件导致出现 Failed to execute ... device error,请确保在 UEFI 设置中启用了网络堆栈。这可能需要初始化网络接口控制器 (NIC) 的 Option ROM,因此请额外查找诸如 "OnBoard LAN Boot ROM"、"Launch PXE OpROM Policy" 或类似的设置。