跳转至内容

Netboot

来自 ArchWiki

网络启动 (Netboot) 镜像体积很小(< 1 MiB),可用于在系统启动时即时下载最新的 Arch Linux 版本。无需更新网络启动镜像,最新的版本会自动可用。网络启动镜像可以从 Arch Linux Netboot 页面下载。

  • 你需要足够的内存(可能需要 1.5GiB 甚至更多)来存储和运行 Live 系统,否则启动时可能会出现内核恐慌 (kernel panic)。
  • 该功能主要面向有线连接:Wi-Fi 支持有限且高度依赖固件[1]

BIOS

要在基于 BIOS 的计算机上使用网络启动,你需要 ipxe.lkrnipxe.pxe 镜像。

使用 ipxe.lkrn

ipxe.lkrn 镜像可以像 Linux 内核一样启动。任何 Linux 引导加载程序(如 GRUBSyslinux)都可以用于从硬盘、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-bootrEFInd)启动,或直接从 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 系统自动加载。

注意 你需要 禁用 Secure Boot 才能启动。即使你使用自定义密钥对 Netboot EFI 二进制文件进行签名,从镜像站下载的内核也是未签名的。

在 GNU/Linux 中

例如,假设 /dev/sdX 为闪存驱动器,请按如下方式准备 USB 闪存驱动器

  1. 如果尚未完成,请在 /dev/sdX 上创建 分区表,并在设备上创建 分区 (/dev/sdXn)。
  2. 如果尚未完成,请将分区格式化为 FAT32
    # mkfs.fat -F 32 /dev/sdXn
  3. 挂载文件系统。
    # mount /dev/sdXn /mnt
  4. 在挂载的文件系统上创建 /EFI/BOOT 目录
    # mkdir /mnt/EFI /mnt/EFI/BOOT
  5. pxe-arch.efi 复制到 x64 UEFI 的默认启动路径
    # cp pxe-arch.efi /mnt/EFI/BOOT/BOOTx64.EFI
  6. 卸载文件系统。

在 Windows 中

按如下方式准备 USB 闪存驱动器

  1. 如果尚未完成,请对 USB 闪存驱动器进行分区并将其格式化为 FAT32。
  2. 导航到 USB 闪存驱动器的根目录,在其中创建一个 EFI 文件夹,并在 EFI 文件夹内部创建一个 BOOT 文件夹。
  3. pxe-arch.efi 复制到 EFI\BOOT 文件夹中。
  4. pxe-arch.efi 文件重命名为 BOOTx64.EFI
  5. 完成后弹出 USB 闪存驱动器。

故障排除

启动 EFI 二进制文件显示 "device error"

如果启动 EFI 二进制文件导致出现 Failed to execute ... device error,请确保在 UEFI 设置中启用了网络堆栈。这可能需要初始化网络接口控制器 (NIC) 的 Option ROM,因此请额外查找诸如 "OnBoard LAN Boot ROM"、"Launch PXE OpROM Policy" 或类似的设置。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.