8.4. 使用 iPXE 引导主机
Assisted Installer 提供了一个 iPXE 脚本,包括为基础架构环境引导发现镜像所需的所有工件。由于 iPXE 的当前 HTTPS 实施的限制,建议是下载并公开 HTTP 服务器中所需的工件。目前,即使 iPXE 支持 HTTPS 协议,支持的算法也比较旧且不推荐。
支持的密码的完整列表位于 https://ipxe.org/crypto 中。
先决条件
- 您已使用 API 创建基础架构环境,或使用 UI 创建集群。
-
在 shell 中将您的基础架构环境 ID 导出为
$INFRA_ENV_ID
。 -
您在访问 API 时具有凭证,并在 shell 中将令牌导出为
$API_TOKEN
。 - 您有一个 HTTP 服务器来托管镜像。
通过 UI 配置时,$INFRA_ENV_ID
和 $API_TOKEN
变量会被提供。
IBM Power 只支持 PXE,这还需要: 您已在 /var/lib/tftpboot
安装了 grub2。已安装了 DHCP 和 TFTP for PXE
流程
直接从 UI 下载 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 | curl -o initrd.img
下载 linux 内核:
$ awk '/^kernel /{print $2}' ipxe-script | curl -o kernel
下载根文件系统:
$ grep ^kernel ipxe-script | xargs -n1| grep ^coreos.live.rootfs_url | cut -d = -f 2- | curl -o rootfs.img
将 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 zSystems 上使用 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 上安装时,您必须下载 intramfs、kernel 和 root,如下所示:
- 将 initrd.img 和 kernel.img 复制到 PXE 目录 '/var/lib/tftpboot/rhcos '
- 将 rootfs.img 复制到 HTTPD 目录 '/var/www/html/install '
在 '/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