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

流程

  1. 直接从 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

  2. 通过从 ipxe-script 中提取 URL 下载所需的工件。

    1. 下载初始 RAM 磁盘:

      $ awk '/^initrd /{print $NF}' ipxe-script | curl -o initrd.img
    2. 下载 linux 内核:

      $ awk '/^kernel /{print $2}' ipxe-script | curl -o kernel
    3. 下载根文件系统:

      $ grep ^kernel ipxe-script | xargs -n1| grep ^coreos.live.rootfs_url | cut -d = -f 2- | curl -o rootfs.img
  3. 将 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
  4. 可选:当在 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 安装,在一些情况下,虚拟机主机上的虚拟机不会在第一次引导时重启,需要手动启动。

  5. 可选:在 IBM Power 上安装时,您必须下载 intramfs、kernel 和 root,如下所示:

    1. 将 initrd.img 和 kernel.img 复制到 PXE 目录 '/var/lib/tftpboot/rhcos '
    2. 将 rootfs.img 复制到 HTTPD 目录 '/var/www/html/install '
    3. 在 '/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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.