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 をインストールする準備を行う手順は次のとおりです。
手順
- インストール ISO イメージまたはインストールツリーを NFS サーバー、HTTPS サーバー、HTTP サーバー、または FTP サーバーにエクスポートします。
- TFTP サーバーおよび DHCP サーバーを設定し、PXE サーバーで TFTP サービスを開始します。
- クライアントを起動して、インストールを開始します。
GRUB2 ブートローダーは、TFTP サーバーの他に、HTTP からのネットワークブートをサポートします。このプロトコルからブートファイル (カーネルおよび初期 RAM ディスク (vmlinuz
および initrd
)) を送ると時間がかかり、タイムアウトが発生する場合もあります。HTTP サーバーにはこのリスクがありませんが、ブートファイルを送信する場合は TFTP サーバーを使用することが推奨されます。
9.3.2. BIOS ベースのクライアント向けに TFTP サーバーの設定
この手順に従って、TFTP サーバーおよび DHCP サーバーを設定し、BIOS ベースの AMD および Intel の 64 ビットシステム用 PXE サーバーで、TFTP サービスを開始します。
本セクションのすべての設定ファイルは例となります。設定の詳細は、アーキテクチャーや特定の要件によって異なります。
手順
root で、次のパッケージをインストールします。ネットワークに DHCP サーバーがすでに設定されている場合は、
dhcp-server
パッケージを除外します。# yum install tftp-server dhcp-server
ファイアウォールで、
tftp service
サービスへの着信接続を許可します。# firewall-cmd --add-service=tftp
注記-
このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに
--permanent
オプションを追加します。 - ISO インストールファイルの場所によっては、HTTP などのサービスの着信接続を許可しないといけない場合があります。
-
このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに
以下の例の
/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"; } } }
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
パッケージをデプロイメントします。
# rpm2cpio syslinux-tftpboot-version-architecture.rpm | cpio -dimv
tftpboot/
にpxelinux/
ディレクトリーを作成し、そのディレクトリーからpxelinux/
ディレクトリーにすべてのファイルをコピーします。# mkdir /var/lib/tftpboot/pxelinux
# cp my_local_directory/tftpboot/* /var/lib/tftpboot/pxelinux
pxelinux/
ディレクトリー内にpxelinux.cfg/
ディレクトリーを作成します。# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
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
オプションを使用することで両方のリポジトリーを読み込むことができます。
-
このランタイムイメージなしでは、インストールプログラムは起動できません。
/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/
DHCP サーバーで
dhcpd
サービスを開始して有効にします。localhost で DHCP サーバーを設定している場合は、ローカルホストでdhcpd
サービスを開始して有効にします。# systemctl start dhcpd # systemctl enable dhcpd
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
です。
手順
root で、次のパッケージをインストールします。ネットワークに DHCP サーバーが設定されている場合は、dhcp-server パッケージを除外します。
# yum install tftp-server dhcp-server
ファイアウォールで、
tftp service
サービスへの着信接続を許可します。# firewall-cmd --add-service=tftp
注記-
このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに
--permanent
オプションを追加します。 - ISO インストールファイルの場所によっては、HTTP などのサービスの着信接続を許可しないといけない場合があります。
-
このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに
以下の例の
/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"; } } }
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
パッケージを抽出します。
# rpm2cpio shim-version-architecture.rpm | cpio -dimv
# rpm2cpio grub2-efi-version-architecture.rpm | cpio -dimv
ブートディレクトリーから、EFI ブートイメージをコピーします。ARCH を shim または grub に置き換え、その後にアーキテクチャーを追加します (
grubx64
など)。# mkdir /var/lib/tftpboot/uefi # cp my_local_directory/boot/efi/EFI/redhat/ARCH.efi /var/lib/tftpboot/uefi/
以下の例のように、
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
オプションを使用することで両方のリポジトリーを読み込むことができます。
-
このランタイムイメージなしでは、インストールプログラムは起動できません。
/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/
DHCP サーバーで
dhcpd
サービスを開始して有効にします。localhost で DHCP サーバーを設定している場合は、ローカルホストでdhcpd
サービスを開始して有効にします。# systemctl start dhcpd # systemctl enable dhcpd
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 システム用のネットワーク起動サーバーを設定する方法を説明します。
本セクションのすべての設定ファイルは例となります。設定の詳細は、アーキテクチャーや特定の要件によって異なります。
手順
root で、次のパッケージをインストールします。ネットワークに DHCP サーバーが設定されている場合は、dhcp-server パッケージを除外します。
# yum install tftp-server dhcp-server
ファイアウォールで、
tftp service
サービスへの着信接続を許可します。# firewall-cmd --add-service=tftp
注記-
このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに
--permanent
オプションを追加します。 - ISO インストールファイルの場所によっては、HTTP などのサービスの着信接続を許可しないといけない場合があります。
-
このコマンドは、次にサーバーを再起動するまで、一時的にアクセスを有効にします。永続的アクセスを有効にするには、コマンドに
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 設定で設定する必要があるファイル名をユーザーに通知します。
PXE サーバーを x86 マシンで実行している場合は、tftp root に
GRUB2
ネットワーク起動ディレクトリーを作成する前に、grub2-ppc64-modules
をインストールする必要があります。# yum install grub2-ppc64-modules
以下の例のように、
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
オプションを使用することで両方のリポジトリーを読み込むことができます。
-
このランタイムイメージなしでは、インストールプログラムは起動できません。
このコマンドを使用して DVD ISO イメージをマウントします。
# mount -t iso9660 /path_to_image/name_of_iso/ /mount_point -o loop,ro
ディレクトリーを作成し、DVD ISO イメージから
initrd.img
ファイルおよびvmlinuz
ファイルをコピーします。以下に例を示します。# cp /mount_point/ppc/ppc64/{initrd.img,vmlinuz} /var/lib/tftpboot/grub2-ppc64/
以下の例のように、
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; } } }
-
ネットワーク設定に合わせて、サンプルパラメーターの
subnet
、netmask
、routers
、fixed-address
、およびhardware ethernet
を変更します。file name
パラメーターは、この手順のステップで、grub2-mknetdir
コマンドで出力したファイル名となります。 DHCP サーバーで
dhcpd
サービスを開始して有効にします。localhost で DHCP サーバーを設定している場合は、ローカルホストでdhcpd
サービスを開始して有効にします。# systemctl start dhcpd # systemctl enable dhcpd
tftp.socket
サービスを開始して有効にします。# systemctl start tftp.socket # systemctl enable tftp.socket
これにより、PXE 起動サーバーでは、PXE クライアントにサービスを提供する準備が整いました。クライアント (Red Hat Enterprise Linux のインストール先システム) を起動し、起動ソースを指定するように求められたら、PXE ブート を選択してネットワークインストールを開始できます。