8.4. iPXE를 사용하여 호스트 부팅

지원 설치 프로그램은 인프라 환경에 대한 검색 이미지를 부팅하는 데 필요한 모든 아티팩트를 포함하는 iPXE 스크립트를 제공합니다. iPXE의 현재 HTTPS 구현의 제한으로 인해 필요한 아티팩트를 다운로드하여 HTTP 서버에 노출하는 것이 좋습니다. 현재 iPXE가 HTTPS 프로토콜을 지원하더라도 지원되는 알고리즘은 오래되어 권장되지 않습니다.

지원되는 암호화의 전체 목록은 https://ipxe.org/crypto 에 있습니다.

사전 요구 사항

  • API를 사용하여 인프라 환경을 생성하거나 UI를 사용하여 클러스터를 생성했습니다.
  • 쉘에서 $INFRA_ENV_ID 로 내보낸 인프라 환경 ID가 있어야 합니다.
  • API에 액세스할 때 사용할 자격 증명이 있고 쉘에서 $API_TOKEN 으로 토큰을 내보냈습니다.
  • 이미지를 호스팅할 HTTP 서버가 있습니다.
참고

UI를 통해 구성할 때 $INFRA_ENV_ID$API_TOKEN 변수가 이미 제공됩니다.

참고

IBM Power는 PXE만 지원합니다. 필요한 PXE만 지원합니다. /var/lib/tftpboot에 grub2 를 설치했습니다. PXE용 DHCP 및 TFTP를 설치했습니다.

절차

  1. UI에서 iPXE 스크립트를 직접 다운로드하거나 지원 설치 관리자에서 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

    예제

    #!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. 로컬 HTTP 서버와 일치하도록 ipxe-script' 의 다른 아티팩트로 URL을 변경합니다. 예를 들면 다음과 같습니다.

    #!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를 사용하여 설치하는 경우 경우에 따라 VM 호스트의 VM이 첫 번째 부팅 시 재부팅되지 않으므로 수동으로 시작해야 합니다.

  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