使用 iPXE 网络启动 Alpine Linux

来自 Alpine Linux

复制 iPXE 需要的文件到 Web 服务器

  • 在本指南中,我们将从 Web 服务器上的目录 /var/www/ixpe-boot.example.com/ 提供 http://ipxe-boot.example.com/ 的文件,该目录可由您的非 root 管理员用户写入。我们还假设 Web 服务器遵循 /var/www/ipxe-boot.example.com 内(但不在此目录树之外)的符号链接。
  • 将网络启动 tarball(例如 Alpine 针对 x86_64 的网络启动镜像的 3.16.0 稳定版本)复制到您的 Web 服务器上的非 root 管理员用户。
  • 将网络启动 tarball 解压到您的 Web 服务器目录。例如

tar -C /var/www/ipxe-boot.example.com -xzf alpine-netboot-3.16.0-x86_64.tar.gz

  • 这将创建一个目录结构,例如
boot/
boot/initramfs-lts
boot/config-virt
boot/dtbs-virt/
boot/System.map-lts
boot/vmlinuz-virt
boot/System.map-virt
boot/config-lts
boot/initramfs-virt
boot/modloop-lts
boot/modloop-virt
boot/dtbs-lts/
boot/vmlinuz-lts

创建 iPXE 启动脚本

例如,创建一个名为 boot.ipxe 的脚本,内容如下

内容 boot.ipxe

#!ipxe set base-url http://ipxe-boot.example.com kernel ${base-url}/boot/vmlinuz-virt console=tty0 modules=loop,squashfs quiet nomodeset alpine_repo=https://dl-cdn.alpinelinux.org/alpine/v3.16/main modloop=http://ipxe-boot.example.com/boot/modloop-virt initrd ${base-url}/boot/initramfs-virt boot

使用 iPXE 启动脚本启动

使用 QEMU (用于测试)

假设您的系统上安装了二进制文件 qemu-system-x86_64

qemu-system-x86_64 -boot n -m 512M -enable-kvm -device virtio-net,netdev=n1 -netdev user,id=n1,tftp=$(pwd),bootfile=/boot.ipxe

使用 Libvirt

  • boot.ipxe 脚本复制到您的 Web 服务器上的 /var/www/ipxe-boot.example.com/boot.ipxe(当然要替换为您实际的目录)。
  • 使用如下 XML 创建新的 NAT 网络
<network>
  <name>ipxeboot</name>
  <forward mode="nat">
    <nat>
      <port start="1024" end="65535"/>
    </nat>
  </forward>
  <bridge name="virbr1" stp="on" delay="0"/>
  <mac address="52:54:00:a4:10:b3"/>
  <domain name="ipxeboot"/>
  <ip address="192.168.129.1" netmask="255.255.255.0">
    <dhcp>
      <range start="192.168.129.128" end="192.168.129.254"/>
      <bootp file="http://ipxe-boot.example.com/boot.ipxe"/>
    </dhcp>
  </ip>
</network>
  • 使用 virt-install,例如

virt-install -n vm-name --memory 512 --vcpus 1 --pxe --disk size=5,bus=virtio --network network=ipxeboot,model=virtio --input tablet --video virtio --os-variant id=https://alpinelinux.cn/alpinelinux/3.13

在 Vultr.com 上

注意:其他云提供商也有类似的功能,但我没有使用过它们。iPXE Boot Feature - Vultr.com

参见