网络启动 Fedora¶

你可以使用 iPXE 通过 HTTP 启动进入 Fedora Linux 安装程序。然后你可以把 Fedora 安装到本地硬盘或 iSCSI 或 FCoE SAN 目标。
这些说明对类似的 Linux 发行版也应该有效,例如 Red Hat Enterprise Linux (RHEL) 和 CentOS。
启动脚本¶
创建一个 iPXE 脚本文件 fedora.ipxe,内容如下:
#!ipxe
# Set source URI
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/41
# Detect CPU architecture and calculate repository URI
cpuid --ext 29 && set arch x86_64 || set arch i386
set repo ${mirror}/Everything/${arch}/os
# Start installer
kernel ${repo}/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img
boot
如果你已经在本地镜像了 Fedora 目录树,那么你应该把这一行
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/41
改为指向你的本地镜像的 URI。从本地镜像启动和安装会比使用公开的 download.fedoraproject.org 镜像快好几倍。
安装到本地磁盘¶
使用 iPXE 从你的 fedora.ipxe 脚本的 URI 启动,例如 http://my.web.server/fedora.ipxe。你应该会看到 iPXE 通过 HTTP 下载并启动进入 Fedora 安装程序:


你现在可以把 Fedora 安装到本地硬盘。恭喜你成功网络启动 Fedora 安装程序!

安装到 SAN 目标¶
你可以把 Fedora 安装到 iSCSI 或 FCoE SAN 目标,而不是本地磁盘。为此,你必须修改 fedora.ipxe 脚本,以允许安装到你的 SAN 目标磁盘。例如:
#!ipxe
# Set source URI
set mirror http://download.fedoraproject.org/pub/fedora/linux/releases/41
# Set SAN target URI
set target iscsi:192.168.0.1::::iqn.1992-01.com.example.target:fedora
# Detect CPU architecture and calculate repository URI
cpuid --ext 29 && set arch x86_64 || set arch i386
set repo ${mirror}/Everything/${arch}/os
# Hook SAN target
sanhook ${target}
# Start installer if F12 is pressed, otherwise boot
prompt --key 0x197e --timeout 2000 Press F12 to install Fedora... || sanboot
kernel ${repo}/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=${repo}
initrd ${repo}/images/pxeboot/initrd.img
boot
你必须修改这一行
set target iscsi:192.168.0.1::::iqn.1992-01.com.example.target:fedora
以指定你的 iSCSI 或 FCoE 目标的 SAN URI。
自动化安装¶
你可以使用 kickstart 文件和 inst.ks=… 内核命令行参数来自动化 iPXE 启动 Fedora 安装程序后执行的操作。例如,如果你已经把 ks.cfg 文件放在你的仓库目录中:
# Start automated installer if F12 is pressed
prompt --key 0x197e --timeout 2000 Press F12 to install Fedora... || exit
kernel ${repo}/images/pxeboot/vmlinuz initrd=initrd.img inst.repo=${repo} inst.ks=${repo}/ks.cfg
initrd ${repo}/images/pxeboot/initrd.img
boot