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

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

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

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

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

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

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

手順

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

次のネットワークブートプロトコルを選択できます。

HTTP
Red Hat は、クライアント UEFI がサポートしている場合は HTTP ブートを使用することを推奨します。通常、HTTP ブートは信頼性に優れています。
PXE (TFTP)
PXE ブートはクライアントシステムによって広くサポートされています。ただし、このプロトコルを介したブートファイルの送信は低速で、タイムアウトにより失敗する可能性があります。

2.6.2. HTTP ブートおよび PXE ブート用の DHCPv4 サーバーの設定

サーバー上で DHCP バージョン 4 (DHCPv4) サービスを有効にし、ネットワークブート機能を提供できるようにします。

前提条件

  • IPv4 プロトコルを介したネットワークインストールを準備している。

    IPv6 の場合は、HTTP ブートおよび PXE ブート用の DHCPv6 サーバーの設定 を参照してください。

  • サーバーのネットワークアドレスがわかっている。

    以下の手順の例では、サーバーには次の設定のネットワークカードが搭載されています。

    IPv4 アドレス
    192.168.124.2/24
    IPv4 ゲートウェイ
    192.168.124.1

手順

  1. DHCP サーバーをインストールします。

    dnf install dhcp-server
  2. DHCPv4 サーバーをセットアップします。/etc/dhcp/dhcpd.conf ファイルに次の設定を入力します。アドレスはネットワークカードと一致するように置き換えます。

    option architecture-type code 93 = unsigned integer 16;
    
    subnet 192.168.124.0 netmask 255.255.255.0 {
      option routers 192.168.124.1;
      option domain-name-servers 192.168.124.1;
      range 192.168.124.100 192.168.124.200;
      class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
        next-server 192.168.124.2;
              if option architecture-type = 00:07 {
                filename "redhat/EFI/BOOT/BOOTX64.EFI";
              }
              else {
                filename "pxelinux/pxelinux.0";
              }
      }
      class "httpclients" {
        match if substring (option vendor-class-identifier, 0, 10) = "HTTPClient";
        option vendor-class-identifier "HTTPClient";
        filename "http://192.168.124.2/redhat/EFI/BOOT/BOOTX64.EFI";
      }
    }
  3. DHCPv4 サービスを起動します。

    # systemctl enable --now dhcpd

2.6.3. HTTP ブートおよび PXE ブート用の DHCPv6 サーバーの設定

サーバー上で DHCP バージョン 6 (DHCPv4) サービスを有効にし、ネットワークブート機能を提供できるようにします。

前提条件

  • IPv6 プロトコルを介したネットワークインストールを準備している。

    IPv4 の場合は、HTTP ブートおよび PXE ブート用の DHCPv4 サーバーの設定 を参照してください。

  • サーバーのネットワークアドレスがわかっている。

    以下の手順の例では、サーバーには次の設定のネットワークカードが搭載されています。

    IPv6 アドレス
    fd33:eb1b:9b36::2/64
    IPv6 ゲートウェイ
    fd33:eb1b:9b36::1

手順

  1. DHCP サーバーをインストールします。

    dnf install dhcp-server
  2. DHCPv6 サーバーをセットアップします。/etc/dhcp/dhcpd6.conf ファイルに次の設定を入力します。アドレスはネットワークカードと一致するように置き換えます。

    option dhcp6.bootfile-url code 59 = string;
    option dhcp6.vendor-class code 16 = {integer 32, integer 16, string};
    
    subnet6 fd33:eb1b:9b36::/64 {
            range6 fd33:eb1b:9b36::64 fd33:eb1b:9b36::c8;
    
            class "PXEClient" {
                    match substring (option dhcp6.vendor-class, 6, 9);
            }
    
            subclass "PXEClient" "PXEClient" {
                    option dhcp6.bootfile-url "tftp://[fd33:eb1b:9b36::2]/redhat/EFI/BOOT/BOOTX64.EFI";
            }
    
            class "HTTPClient" {
                    match substring (option dhcp6.vendor-class, 6, 10);
            }
    
            subclass "HTTPClient" "HTTPClient" {
                    option dhcp6.bootfile-url "http://[fd33:eb1b:9b36::2]/redhat/EFI/BOOT/BOOTX64.EFI";
                    option dhcp6.vendor-class 0 10 "HTTPClient";
            }
    }
  3. DHCPv6 サービスを起動します。

    # systemctl enable --now dhcpd6
  4. DHCPv6 パケットがファイアウォールの RP フィルターによって破棄されている場合は、そのログを確認してください。ログに rpfilter_DROP エントリーが含まれている場合は、/etc/firewalld/firewalld.conf ファイルで次の設定を使用してフィルターを無効にします。

    IPv6_rpfilter=no

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

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

重要

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

手順

  1. root で、次のパッケージをインストールします。

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

    # firewall-cmd --add-service=tftp
    注記
    • このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに --permanent オプションを追加します。
    • ISO インストールファイルの場所によっては、HTTP などのサービスの着信接続を許可しないといけない場合があります。
  3. 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/AppStream/Packages/syslinux-tftpboot-version-architecture.rpm /my_local_directory
    # umount /mount_point
  4. パッケージをデプロイメントします。

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

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

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

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

    # mkdir -p /var/lib/tftpboot/pxelinux/images/RHEL-9/
    # cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/images/RHEL-9/
  9. tftp.socket サービスを開始して有効にします。

    # systemctl enable --now tftp.socket

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

2.6.5. 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 で、次のパッケージをインストールします。

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

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

    # mount -t iso9660 /path_to_image/name_of_image.iso /mount_point -o loop,ro
  4. DVD ISO イメージから EFI ブートイメージをコピーします。

    # mkdir /var/lib/tftpboot/redhat
    # cp -r /mount_point/EFI /var/lib/tftpboot/redhat/
    # umount /mount_point
  5. コピーしたファイルのパーミッションを修正します。

    # chmod -R 755 /var/lib/tftpboot/redhat/
  6. /var/lib/tftpboot/redhat/EFI/BOOT/grub.cfg の内容を次の例に置き換えます。

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

    # mkdir -p /var/lib/tftpboot/images/RHEL-9/
    # cp /path_to_x86_64_images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/images/RHEL-9/
  8. tftp.socket サービスを開始して有効にします。

    # systemctl enable --now tftp.socket

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

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

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

重要

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

手順

  1. root で、次のパッケージをインストールします。

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

    # 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 をインストールする必要があります。

      # dnf 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 9 installer!\n\n"
    
    menuentry 'Red Hat Enterprise Linux 9' {
      linux grub2-ppc64/vmlinuz ro ip=dhcp inst.repo=http://192.168.124.2/RHEL-9/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 enable --now dhcpd
  10. tftp.socket サービスを開始して有効にします。

    # systemctl enable --now tftp.socket

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