网络引导 - Arch Linux 中文维基

跳转到内容

# 网络引导

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 Netboot，最近一次同步于 2024-4-21，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

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

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

## BIOS引导

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

### 使用 ipxe.lkrn

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

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

- 使用 lsblk 找出您的设备路径。让我们假设它是 `/dev/sdc` 。
- 在设备上创建MBR分区表。
- 使用 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 将映像添加为引导选项，从引导管理器（如 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盘启动

如果要从 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. 如果尚未完成，请在设备上 `/dev/sdX` 创建分区表，并在设备上创建分区 (`/dev/sdXn`)。
   提示：提示：最兼容的设置是将 MBR 分区表与类型 `0c` 为“W95 FAT32 （LBA）”的单个活动（可引导）主分区一起使用[3]
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 策略”或类似设置。

分类：​

- 安装过程
- Arch 项目

隐藏分类：​

- 有蓝链却未移除内部链接助手模板的页面

网络引导
添加话题