8.4. 使用 iPXE 引导主机
Assisted Installer 提供了一个 iPXE 脚本,其中包含为基础架构环境引导发现镜像所需的所有工件。由于 iPXE 的当前 HTTPS 实施的限制,建议是下载并公开 HTTP 服务器中所需的工件。目前,即使 iPXE 支持 HTTPS 协议,支持的算法也比较旧且不推荐。
支持的密码的完整列表位于 https://ipxe.org/crypto 中。
先决条件
- 已使用 API 创建基础架构环境,或者已使用 Web 控制台创建集群。
-
在 shell 中将您的基础架构环境 ID 导出为
$INFRA_ENV_ID
。 -
您在访问 API 时具有凭证,并在 shell 中将令牌导出为
$API_TOKEN
。
如果使用 Web 控制台配置 iPXE,则 $INFRA_ENV_ID
和 $API_TOKEN
变量被预先设置。
- 您有一个 HTTP 服务器来托管镜像。
IBM Power® 只支持 PXE,其要求如下:
-
GRUB2 安装在
/var/lib/tftpboot
中 - DHCP 和 TFTP 用于 PXE
流程
运行以下命令,直接从 Web 控制台下载 iPXE 脚本,或者从 Assisted Installer 获取 iPXE 脚本:
$ curl \ --silent \ --header "Authorization: Bearer $API_TOKEN" \ https://api.openshift.com/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/downloads/files?file_name=ipxe-script > ipxe-script
Example
#!ipxe initrd --name initrd http://api.openshift.com/api/assisted-images/images/<infra_env_id>/pxe-initrd?arch=x86_64&image_token=<token_string>&version=4.10 kernel http://api.openshift.com/api/assisted-images/boot-artifacts/kernel?arch=x86_64&version=4.10 initrd=initrd coreos.live.rootfs_url=http://api.openshift.com/api/assisted-images/boot-artifacts/rootfs?arch=x86_64&version=4.10 random.trust_cpu=on rd.luks.options=discard ignition.firstboot ignition.platform.id=metal console=tty1 console=ttyS1,115200n8 coreos.inst.persistent-kargs="console=tty1 console=ttyS1,115200n8" boot
通过从
ipxe-script
中提取 URL 来下载所需的工件:运行以下命令来下载初始 RAM 磁盘:
$ awk '/^initrd /{print $NF}' ipxe-script \ | xargs curl -o initrd.img -L
运行以下命令来下载 Linux 内核:
$ awk '/^kernel /{print $2}' ipxe-script | xargs curl -o kernel -L
运行以下命令来下载根文件系统:
$ grep ^kernel ipxe_script | xargs -n1 | grep ^coreos.live.rootfs_url | cut -d = -f 2,3,4 | xargs curl -o rootfs.img -L
将 URL 更改为
ipxe-script
中的不同工件,使其与您的本地 HTTP 服务器匹配。例如:#!ipxe set webserver http://192.168.0.1 initrd --name initrd $webserver/initrd.img kernel $webserver/kernel initrd=initrd coreos.live.rootfs_url=$webserver/rootfs.img random.trust_cpu=on rd.luks.options=discard ignition.firstboot ignition.platform.id=metal console=tty1 console=ttyS1,115200n8 coreos.inst.persistent-kargs="console=tty1 console=ttyS1,115200n8" boot
可选:在 IBM Z® 中使用 RHEL KVM 安装时,您必须通过指定附加内核参数来引导主机:
random.trust_cpu=on rd.luks.options=discard ignition.firstboot ignition.platform.id=metal console=tty1 console=ttyS1,115200n8 coreos.inst.persistent-kargs="console=tty1 console=ttyS1,115200n8
注意当您在 RHEL KVM 上使用 iPXE 安装时,虚拟机主机上的虚拟机可能不会在第一次引导时启动。您必须手动启动它们。
可选: 在 IBM Power® 上安装时,您必须下载
initramfs
、内核
和root
镜像,如下所示:-
将
initrd.img
和kernel.img
镜像复制到/var/lib/tftpboot/rhcos
PXE 目录中。 -
将
rootfs.img
复制到/var/www/html/install
HTTPD 目录。 在
/var/lib/tftpboot/boot/grub2/grub.cfg
目录中添加以下条目:if [ ${net_default_mac} == fa:1d:67:35:13:20 ]; then default=0 fallback=1 timeout=1 menuentry "CoreOS (BIOS)" { echo "Loading kernel" linux "/rhcos/kernel.img" ip=dhcp rd.neednet=1 ignition.platform.id=metal ignition.firstboot coreos.live.rootfs_url=http://9.114.98.8:8000/install/rootfs.img echo "Loading initrd" initrd "/rhcos/initrd.img" } fi
-
将