网络引导

来自 Arch Linux 中文维基

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

注意: 您需要足够的内存(可能是 1.5GiB 甚至更多)来存储和运行实时系统,否则您可能会在启动时遇到内核崩溃。

BIOS引导[编辑 | 编辑源代码]

若要在基于 BIOS 引导的计算机上使用网络引导,需要 ipxe.lkrnipxe.pxe 映像。

使用 ipxe.lkrn[编辑 | 编辑源代码]

ipxe.lkrn 映像可以像 Linux 内核一样引导。任何 Linux 引导加载程序(如 GRUBSyslinux)都可用于从硬盘驱动器、CD 或 USB 驱动器加载它。例如,Syslinux wiki 提供了在可引导介质上安装 [1]和配置[2] Syslinux 的说明。

您可以通过以下步骤制作启动 ipxe.lkrn的闪存驱动器:

  • 使用 lsblk 找出您的设备路径。让我们假设它是 /dev/sdc
  • 在设备上创建MBR分区表。
  • 使用 FAT32英语FAT32文件系统创建主分区并将其标记为活动。
  • 挂载分区,在那里创建 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 环境进行链式加载。这允许配置一个 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英语efibootmgr 将映像添加为引导选项,从引导管理器(如 systemd-bootrEFInd)启动,或直接从 UEFI shell英语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盘启动[编辑 | 编辑源代码]

如果要从 USB 闪存驱动器启动 Netboot EFI 二进制文件,请将其复制到FAT格式分区上的默认/回退启动路径 (/EFI/BOOT/BOOTx64.EFI)。然后,UEFI 系统应自动加载映像。

这篇文章的某些内容需要扩充。

原因: Add instructions for Windows, similarly to how it is done in USB flash installation medium. (在 Talk:网络引导 中讨论)

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

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

  1. If not done yet, create a partition table on /dev/sdX and a partition (/dev/sdXn) on the device.
    提示:提示:最兼容的设置是将 MBR 分区表与类型 0c 为“W95 FAT32 (LBA)”的单个活动(可引导)主分区一起使用[3]
    如果尚未完成,请在设备上 /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. 卸载文件系统。
注意: 您需要禁用安全启动才能启动。即使使用自定义密钥对 Netboot EFI 二进制文件进行签名,也不会对从镜像下载的内核进行签名。

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

引导 EFI 二进制文件给出“device error”[编辑 | 编辑源代码]

如果引导 EFI 二进制文件导致 Failed to execute ... device error ,请确保在 UEFI 设置中启用了网络堆栈。它可能需要初始化网络接口控制器 (NIC) 选项 ROM,因此此外还要查找“板载 LAN 引导 ROM”、“启动 PXE OpROM 策略”或类似设置。