Red Hat Training

A Red Hat training course is available for RHEL 8

9.3. PXE を使用してネットワークからインストールするための準備

本セクションでは、PXE 起動およびネットワークインストールを有効にするために、PXE サーバーで TFTP および DHCP を設定する方法を説明します。

9.3.1. ネットワークインストールの概要

ネットワークインストールでは、インストールサーバーへのアクセスがあるシステムに、Red Hat Enterprise Linux をインストールできます。ネットワークインストールには、少なくとも 2 つのシステムが必要です。

PXE サーバー
DHCP サーバー、TFTP サーバー、および HTTP サーバー、HTTPS サーバー、FTP サーバー、または NFS サーバーを実行しているシステム。各サーバーが稼働する物理システムが同じである必要はありませんが、本セクションの手順では、1 つのシステムですべてのサーバーが稼働していることが想定されています。
クライアント
Red Hat Enterprise Linux をインストールしているシステム。インストールが開始すると、クライアントは DHCP サーバーに問い合わせ、TFTP サーバーからブートファイルを受け取り、HTTP サーバー、HTTPS サーバー、FTP サーバー、または NFS サーバーからインストールイメージをダウンロードします。その他のインストール方法とは異なり、クライアントはインストールを開始するのに物理的な起動メディアを必要としません。
注記

ネットワークからクライアントをブートするには、BIOS/UEFI またはクイックブートメニューで設定します。ハードウェアによっては、ネットワークから起動するオプションが無効になっていたり、利用できない場合があります。

PXE を使用してネットワークから Red Hat Enterprise Linux をインストールする準備を行う手順は次のとおりです。

手順

  1. インストール ISO イメージまたはインストールツリーを NFS サーバー、HTTPS サーバー、HTTP サーバー、または FTP サーバーにエクスポートします。
  2. TFTP サーバーおよび DHCP サーバーを設定し、PXE サーバーで TFTP サービスを開始します。
  3. クライアントを起動して、インストールを開始します。
重要

GRUB2 ブートローダーは、TFTP サーバーの他に、HTTP からのネットワークブートをサポートします。このプロトコルからブートファイル (カーネルおよび初期 RAM ディスク (vmlinuz および initrd)) を送ると時間がかかり、タイムアウトが発生する場合もあります。HTTP サーバーにはこのリスクがありませんが、ブートファイルを送信する場合は TFTP サーバーを使用することが推奨されます。

9.3.2. BIOS ベースのクライアント向けに TFTP サーバーの設定

この手順に従って、TFTP サーバーおよび DHCP サーバーを設定し、BIOS ベースの AMD および Intel の 64 ビットシステム用 PXE サーバーで、TFTP サービスを開始します。

重要

本セクションのすべての設定ファイルは例となります。設定の詳細は、アーキテクチャーや特定の要件によって異なります。

手順

  1. root で、次のパッケージをインストールします。ネットワークに DHCP サーバーがすでに設定されている場合は、dhcp-server パッケージを除外します。

    # yum install tftp-server dhcp-server
  2. ファイアウォールで、tftp service サービスへの着信接続を許可します。

    # firewall-cmd --add-service=tftp
    注記
    • このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに --permanent オプションを追加します。
    • ISO インストールファイルの場所によっては、HTTP などのサービスの着信接続を許可しないといけない場合があります。
  3. 以下の例の /etc/dhcp/dhcpd.conf ファイルのように、SYSLINUX に同梱されているブートイメージを使用するように 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. DVD ISO イメージファイルの SYSLINUX パッケージから pxelinux.0 ファイルにアクセスします。ここで、my_local_directory は、作成するディレクトリーの名前です。

    # mount -t iso9660 /path_to_image/name_of_image.iso /mount_point -o loop,ro
    # cp -pr /mount_point/BaseOS/Packages/syslinux-tftpboot-version-architecture.rpm /my_local_directory
    # umount /mount_point
  5. パッケージをデプロイメントします。

    # rpm2cpio syslinux-tftpboot-version-architecture.rpm | cpio -dimv
  6. tftpboot/pxelinux/ ディレクトリーを作成し、そのディレクトリーから pxelinux/ ディレクトリーにすべてのファイルをコピーします。

    # mkdir /var/lib/tftpboot/pxelinux
    # cp my_local_directory/tftpboot/* /var/lib/tftpboot/pxelinux
  7. pxelinux/ ディレクトリー内に pxelinux.cfg/ ディレクトリーを作成します。

    # mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
  8. default という名前の設定ファイルを作成し、以下の例のように pxelinux.cfg/ ディレクトリーに追加します。

    default vesamenu.c32
    prompt 1
    timeout 600
    
    display boot.msg
    
    label linux
      menu label ^Install system
      menu default
      kernel images/RHEL-8/vmlinuz
      append initrd=images/RHEL-8/initrd.img ip=dhcp inst.repo=http://10.32.5.1/RHEL-8/x86_64/iso-contents-root/
    label vesa
      menu label Install system with ^basic video driver
      kernel images/RHEL-8/vmlinuz
      append initrd=images/RHEL-8/initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://10.32.5.1/RHEL-8/x86_64/iso-contents-root/
    label rescue
      menu label ^Rescue installed system
      kernel images/RHEL-8/vmlinuz
      append initrd=images/RHEL-8/initrd.img rescue
    label local
      menu label Boot from ^local drive
      localboot 0xffff
    注記
    • このランタイムイメージなしでは、インストールプログラムは起動できません。inst.stage2 起動オプションを使用して、イメージの場所を指定します。または、inst.repo= オプションを使用して、イメージおよびインストールソースを指定することも可能です。
    • inst.repo で使用したインストールソースの場所には、有効な treeinfo ファイルが含まれている必要があります。
    • インストールソースとして RHEL8 インストール DVD を選択すると、.treeinfo ファイルが BaseOS リポジトリーおよび AppStream リポジトリーを指定します。単一の inst.repo オプションを使用することで両方のリポジトリーを読み込むことができます。
  9. /var/lib/tftpboot/ ディレクトリーに、ブートイメージファイルを保存するサブディレクトリーを作成し、そのディレクトリーにブートイメージファイルをコピーします。この例のディレクトリーは、/var/lib/tftpboot/pxelinux/images/RHEL-8/ になります。

    # mkdir -p /var/lib/tftpboot/pxelinux/images/RHEL-8/
    # cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/images/RHEL-8/
  10. DHCP サーバーで dhcpd サービスを開始して有効にします。localhost で DHCP サーバーを設定している場合は、ローカルホストで dhcpd サービスを開始して有効にします。

    # systemctl start dhcpd
    # systemctl enable dhcpd
  11. tftp.socket サービスを開始して有効にします。

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

    これにより、PXE 起動サーバーでは、PXE クライアントにサービスを提供する準備が整いました。クライアント (Red Hat Enterprise Linux のインストール先システム) を起動し、起動ソースを指定するように求められたら、PXE ブート を選択してネットワークインストールを開始できます。

9.3.3. UEFI ベースのクライアント向けに TFTP サーバーの設定

この手順に従って、TFTP サーバーおよび DHCP サーバーを設定し、UEFI ベースの AMD64、Intel 64、および 64 ビット ARM システム用に、PXE サーバーで TFTP サービスを開始する方法を説明します。

重要
  • 本セクションのすべての設定ファイルは例となります。設定の詳細は、アーキテクチャーや特定の要件によって異なります。
  • Red Hat Enterprise Linux 8 UEFI PXE ブートは、MAC ベースの grub メニューファイルで小文字のファイル形式に対応します。たとえば、grub2 の MAC アドレスのファイル形式は grub.cfg-01-aa-bb-cc-dd-ee-ff です。

手順

  1. root で、次のパッケージをインストールします。ネットワークに DHCP サーバーが設定されている場合は、dhcp-server パッケージを除外します。

    # yum 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. DVD ISO イメージファイルにある shim パッケージの BOOTX64.EFI ファイルと、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 8' {
      linuxefi images/RHEL-8.x/vmlinuz ip=dhcp inst.repo=http://10.32.5.1/RHEL-8.x/x86_64/iso-contents-root/
      initrdefi images/RHEL-8.x/initrd.img
    }
    注記
    • このランタイムイメージなしでは、インストールプログラムは起動できません。inst.stage2 起動オプションを使用して、イメージの場所を指定します。または、inst.repo= オプションを使用して、イメージおよびインストールソースを指定することも可能です。
    • inst.repo で使用したインストールソースの場所には、有効な treeinfo ファイルが含まれている必要があります。
    • インストールソースとして RHEL8 インストール DVD を選択すると、.treeinfo ファイルが BaseOS リポジトリーおよび AppStream リポジトリーを指定します。単一の inst.repo オプションを使用することで両方のリポジトリーを読み込むことができます。
  8. /var/lib/tftpboot/ ディレクトリーに、ブートイメージファイルを保存するサブディレクトリーを作成し、そのディレクトリーにブートイメージファイルをコピーします。この例のディレクトリーは、/var/lib/tftpboot/images/RHEL-8.x/ になります。

    # mkdir -p /var/lib/tftpboot/images/RHEL-8/
    # cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/images/RHEL-8/
  9. DHCP サーバーで dhcpd サービスを開始して有効にします。localhost で DHCP サーバーを設定している場合は、ローカルホストで 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 ブート を選択してネットワークインストールを開始できます。

9.3.4. IBM Power システム用のネットワークサーバーの設定

この手順に従って、GRUB2 を使用して、IBM Power システム用のネットワーク起動サーバーを設定する方法を説明します。

重要

本セクションのすべての設定ファイルは例となります。設定の詳細は、アーキテクチャーや特定の要件によって異なります。

手順

  1. root で、次のパッケージをインストールします。ネットワークに DHCP サーバーが設定されている場合は、dhcp-server パッケージを除外します。

    # yum install tftp-server dhcp-server
  2. ファイアウォールで、tftp service サービスへの着信接続を許可します。

    # firewall-cmd --add-service=tftp
    注記
    • このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに --permanent オプションを追加します。
    • ISO インストールファイルの場所によっては、HTTP などのサービスの着信接続を許可しないといけない場合があります。
  3. tftp のルートに、GRUB2 ネットワーク起動ディレクトリーを作成します。

    # grub2-mknetdir --net-directory=/var/lib/tftpboot
    Netboot directory for powerpc-ieee1275 created. Configure your DHCP server to point to /boot/grub2/powerpc-ieee1275/core.elf
    注記

    この手順で説明しているように、コマンドの出力は、DHCP 設定で設定する必要があるファイル名をユーザーに通知します。

    1. PXE サーバーを x86 マシンで実行している場合は、tftp root に GRUB2 ネットワーク起動ディレクトリーを作成する前に、grub2-ppc64-modules をインストールする必要があります。

      # yum install grub2-ppc64-modules
  4. 以下の例のように、GRUB2 設定ファイル (/var/lib/tftpboot/boot/grub2/grub.cfg) を作成します。

    set default=0
    set timeout=5
    
    echo -e "\nWelcome to the Red Hat Enterprise Linux 8 installer!\n\n"
    
    menuentry 'Red Hat Enterprise Linux 8' {
      linux grub2-ppc64/vmlinuz ro ip=dhcp inst.repo=http://10.32.5.1/RHEL-8/x86_64/iso-contents-root/
      initrd grub2-ppc64/initrd.img
    }
    注記
    • このランタイムイメージなしでは、インストールプログラムは起動できません。inst.stage2 起動オプションを使用して、イメージの場所を指定します。または、inst.repo= オプションを使用して、イメージおよびインストールソースを指定することも可能です。
    • inst.repo で使用したインストールソースの場所には、有効な treeinfo ファイルが含まれている必要があります。
    • インストールソースとして RHEL8 インストール DVD を選択すると、.treeinfo ファイルが BaseOS リポジトリーおよび AppStream リポジトリーを指定します。単一の inst.repo オプションを使用することで両方のリポジトリーを読み込むことができます。
  5. このコマンドを使用して DVD ISO イメージをマウントします。

    # mount -t iso9660 /path_to_image/name_of_iso/ /mount_point -o loop,ro
  6. ディレクトリーを作成し、DVD ISO イメージから initrd.img ファイルおよび vmlinuz ファイルをコピーします。以下に例を示します。

    # cp /mount_point/ppc/ppc64/{initrd.img,vmlinuz} /var/lib/tftpboot/grub2-ppc64/
  7. 以下の例のように、GRUB2 に同梱されているブートイメージを使用するように DHCP サーバーを設定します。DHCP サーバーがすでに設定されている場合は、DHCP サーバーでこの手順を実行します。

    subnet 192.168.0.1 netmask 255.255.255.0 {
      allow bootp;
      option routers 192.168.0.5;
      group { #BOOTP POWER clients
        filename "boot/grub2/powerpc-ieee1275/core.elf";
        host client1 {
        hardware ethernet 01:23:45:67:89:ab;
        fixed-address 192.168.0.112;
        }
      }
    }
  8. ネットワーク設定に合わせて、サンプルパラメーターの subnetnetmaskroutersfixed-address、および hardware ethernet を変更します。file name パラメーターは、この手順のステップで、grub2-mknetdir コマンドで出力したファイル名となります。
  9. DHCP サーバーで dhcpd サービスを開始して有効にします。localhost で DHCP サーバーを設定している場合は、ローカルホストで 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 ブート を選択してネットワークインストールを開始できます。