2.5.3. UEFI 기반 클라이언트용 TFTP 서버 구성

다음 절차를 사용하여 TFTP 서버와 DHCP 서버를 구성하고 UEFI 기반 AMD64, Intel 64 및 64비트 ARM 시스템의 PXE 서버에서 TFTP 서비스를 시작합니다.

중요
  • 이 섹션의 모든 구성 파일은 예시입니다. 구성 세부 정보는 아키텍처 및 특정 요구 사항에 따라 다릅니다.
  • Red Hat Enterprise Linux 9 UEFI PXE 부팅은 MAC 기반 grub 메뉴 파일의 소문자 파일 형식을 지원합니다. 예를 들어 grub2의 MAC 주소 파일 형식은 grub.cfg-01-aa-bb-cc-dd-ee-ff입니다.

절차

  1. root로 다음 패키지를 설치합니다. 네트워크에 DHCP 서버가 이미 구성되어 있는 경우 dhcp-server 패키지를 제외합니다.

    # dnf install tftp-server dhcp-server
  2. 방화벽에서 tftp service에 대한 수신 연결을 허용합니다.

    # firewall-cmd --add-service=tftp
    참고
    • 이 명령은 다음 서버가 재부팅될 때까지 임시 액세스를 활성화합니다. 영구 액세스를 활성화하려면 명령에 --permanent 옵션을 추가합니다.
    • 설치 ISO 파일의 위치에 따라 HTTP 또는 기타 서비스에 대해 들어오는 연결을 허용해야 할 수 있습니다.
  3. 다음 예제 /etc/dhcp/dhcpd.conf 파일에 표시된 대로 shim 과 함께 패키지된 부팅 이미지를 사용하도록 DHCP 서버를 구성합니다. DHCP 서버가 이미 구성된 경우 DHCP 서버에서 이 단계를 수행합니다.

    option space pxelinux;
    option pxelinux.magic code 208 = string;
    option pxelinux.configfile code 209 = text;
    option pxelinux.pathprefix code 210 = text;
    option pxelinux.reboottime code 211 = unsigned integer 32;
    option architecture-type code 93 = unsigned integer 16;
    
    subnet 10.0.0.0 netmask 255.255.255.0 {
    	option routers 10.0.0.254;
    	range 10.0.0.2 10.0.0.253;
    
    	class "pxeclients" {
    	  match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    	  next-server 10.0.0.1;
    
    	  if option architecture-type = 00:07 {
    	    filename "BOOTX64.EFI";
    	  } else {
    	    filename "pxelinux/pxelinux.0";
    		}
      }
    }
  4. shim 패키지에서 BOOTX64.EFI 파일에 액세스하고 DVD ISO 이미지 파일의 grub2-efi 패키지에서 grubx64.efi 파일에 액세스합니다. 여기서 my_local_directory 는 사용자가 생성한 디렉터리의 이름입니다.

    # mount -t iso9660 /path_to_image/name_of_image.iso /mount_point -o loop,ro
    # cp -pr /mount_point/BaseOS/Packages/shim-version-architecture.rpm /my_local_directory
    # cp -pr /mount_point/BaseOS/Packages/grub2-efi-version-architecture.rpm /my_local_directory
    # umount /mount_point
  5. 패키지를 추출합니다.

    # rpm2cpio shim-version-architecture.rpm | cpio -dimv
    # rpm2cpio grub2-efi-version-architecture.rpm | cpio -dimv
  6. 부팅 디렉터리에서 EFI 부팅 이미지를 복사합니다. ARCH 를 shim 또는 grub로 교체한 다음 아키텍처(예: grubx64 )를 사용합니다.

    # mkdir /var/lib/tftpboot/uefi
    # cp my_local_directory/boot/efi/EFI/redhat/ARCH.efi /var/lib/tftpboot/uefi/
  7. 다음 예와 같이 grub.cfg라는 구성 파일을 tftpboot/ 디렉토리에 추가합니다.

    set timeout=60
    menuentry 'RHEL 9' {
      linuxefi images/RHEL-9.x/vmlinuz ip=dhcp inst.repo=http://10.32.5.1/RHEL-9.x/x86_64/iso-contents-root/
      initrdefi images/RHEL-9.x/initrd.img
    }
    참고
    • 설치 프로그램은 런타임 이미지 없이는 부팅할 수 없습니다. inst.stage2 부팅 옵션을 사용하여 이미지 위치를 지정합니다. 또는 inst.repo= 옵션을 사용하여 이미지와 설치 소스를 지정할 수 있습니다.
    • inst.repo와 함께 사용되는 설치 소스 위치에는 유효한 .treeinfo 파일이 포함되어야 합니다.
    • RHEL9 설치 DVD를 설치 소스로 선택하면 .treeinfo 파일이 BaseOS 및 AppStream 리포지토리를 가리킵니다. 단일 inst.repo 옵션을 사용하여 두 리포지토리를 로드할 수 있습니다.
  8. /var/lib/tftpboot/ 디렉터리에 부팅 이미지 파일을 저장하고 부팅 이미지 파일을 디렉터리에 복사합니다. 이 예에서 디렉터리는 /var/lib/tftpboot/images/RHEL-9.x/ 입니다.

    # mkdir -p /var/lib/tftpboot/images/RHEL-9/
    # cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/images/RHEL-9/
  9. DHCP 서버에서 dhcpd 서비스를 시작하고 활성화합니다. localhost에 DHCP 서버를 구성한 경우 localhost에서 dhcpd 서비스를 시작하고 활성화합니다.

    # systemctl start dhcpd
    # systemctl enable dhcpd
  10. tftp.socket 서비스를 시작하고 활성화합니다.

    # systemctl start tftp.socket
    # systemctl enable tftp.socket

    이제 PXE 부팅 서버가 PXE 클라이언트를 제공할 준비가 되었습니다. Red Hat Enterprise Linux를 설치하는 시스템인 클라이언트를 시작하고, 부팅 소스를 지정하라는 메시지가 표시되면 PXE 부팅 을 선택한 다음 네트워크 설치를 시작할 수 있습니다.

추가 리소스