Netboot
Netboot 镜像很小(< 1 MiB),可以在系统启动时按需下载最新的 Arch Linux 版本。无需更新 netboot 镜像,最新的版本将自动可用。Netboot 镜像可从 Arch Linux Netboot 页面下载。
- 您需要足够的内存(可能需要 1.5GiB 甚至更多)来存储和运行 live 系统,否则您可能会在启动时遇到内核恐慌(kernel panic)。
- 它主要设计用于有线连接:Wi-Fi 支持有限且高度依赖固件[1]。
BIOS
要在基于 BIOS 的计算机上使用 netboot,您需要 `ipxe.lkrn` 或 `ipxe.pxe` 镜像。
使用 ipxe.lkrn
`ipxe.lkrn` 镜像可以像 Linux 内核一样启动。任何 Linux 引导加载程序(如 GRUB 或 Syslinux)都可以用来从硬盘、CD 或 U 盘加载它。例如,Syslinux 维基提供了在可引导介质上安装[2]和配置[3] Syslinux 的说明。
您可以按照以下步骤创建一个可以引导 `ipxe.lkrn` 的 U 盘
- 使用 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 启动您的 U 盘。
或者,您也可以通过运行以下命令在 QEMU 中尝试该镜像
$ qemu-system-x86_64 -enable-kvm -m 2G -kernel ipxe.lkrn
使用 ipxe.pxe
`ipxe.pxe` 镜像是一个 PXE 镜像。它可以从现有的 PXE 环境中链式加载。这允许配置 DHCP 服务器,使得从网络启动将始终引导到 Arch Linux netboot。
或者,您也可以从现有的 pxe 加载器(如 pxelinux)链式加载它。这是一个菜单项示例
LABEL arch_netboot_chain COM32 pxechn.c32 APPEND ipxe.a56af4e6a9a9.pxe
要使此示例正常工作,您必须将 pxechn.c32 复制到 pxelinux.0 所在目录。
UEFI
可以使用 `ipxe-arch.efi` 镜像在 UEFI 模式下启动 Arch Linux netboot。仅支持 64 位 UEFI。可以通过 efibootmgr 将该镜像添加为启动选项,也可以从 引导管理器(如 systemd-boot 或 rEFInd)启动,或者直接从 UEFI shell 启动。您也可以在 UEFI 系统上从独立的 U 盘启动它。
使用 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
从 U 盘启动
如果您想从 U 盘启动 Netboot EFI 二进制文件,请将其复制到 FAT 格式分区的默认/备用启动路径(`/EFI/BOOT/BOOTx64.EFI`)。它不需要在驱动器上创建 EFI 系统分区,因为所有 UEFI 都可以愉快地从 U 盘启动任何 FAT 卷。最兼容的设置是使用 MBR 分区表,其中包含一个类型为 `0c`“W95 FAT32 (LBA)”的单个活动(可引导)主分区。[4]
UEFI 系统应自动加载该镜像。
在 GNU/Linux 中
例如,假设 `/dev/sdX` 是 U 盘,请按以下方式准备 U 盘
- 如果尚未完成,请在 `/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 中
按以下方式准备 U 盘
- 如果尚未完成,请对 U 盘进行分区并格式化为 FAT32。
- 导航到 U 盘的根目录,并在其中创建一个 `EFI` 文件夹,然后在 `EFI` 文件夹内创建一个 `BOOT` 文件夹。
- 将 `pxe-arch.efi` 复制到 `EFI\BOOT` 文件夹。
- 将 `pxe-arch.efi` 文件重命名为 `BOOTx64.EFI`。
- 完成后弹出 U 盘。
故障排除
启动 EFI 二进制文件出现“设备错误”
如果启动 EFI 二进制文件时出现 `Failed to execute ... device error`,请确保在您的 UEFI 设置中启用了网络堆栈。它可能需要初始化网络接口控制器(NIC)的选项 ROM,因此请另外查找“OnBoard LAN Boot ROM”、“Launch PXE OpROM Policy”或类似的设置。