8.4. iPXE를 사용하여 호스트 부팅
지원 설치 프로그램은 인프라 환경의 검색 이미지를 부팅하는 데 필요한 모든 아티팩트를 포함하여 iPXE 스크립트를 제공합니다. iPXE의 현재 HTTPS 구현의 제한 사항으로 인해 HTTP 서버에서 필요한 아티팩트를 다운로드하여 노출하는 것이 좋습니다. 현재 iPXE가 HTTPS 프로토콜을 지원하는 경우에도 지원되는 알고리즘은 오래되어 권장되지 않습니다.
지원되는 암호의 전체 목록은 https://ipxe.org/crypto 입니다.
사전 요구 사항
- API를 사용하여 인프라 환경을 생성하거나 UI를 사용하여 클러스터를 생성했습니다.
-
쉘에서 인프라 환경 ID를
$INFRA_ENV_ID
로 내보내야 합니다. -
API에 액세스할 때 사용할 인증 정보가 있으며 쉘에서
$API_TOKEN
으로 토큰을 내보냈습니다. - 이미지를 호스팅할 HTTP 서버가 있습니다.
UI를 통해 구성할 때 $INFRA_ENV_ID
및 $API_TOKEN
변수가 이미 제공됩니다.
IBM Power는 PXE만 지원합니다. 필요한 PXE만 지원합니다. /var/lib/tftpboot
에 grub2 를 설치했습니다. PXE용 DHCP 및 TFTP를 설치했습니다.
프로세스
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
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
로컬 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
선택 사항: 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이 첫 번째 부팅 시 재부팅되지 않으므로 수동으로 시작해야 합니다.
선택 사항: 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