PXEサーバを構築してOSをインストールする!(Rocky Linux 9)

Rocky Linux 9でPXEサーバを構築します。

TFTPサーバを構築する!

以下の記事を参照して、TFTPサーバを構築します。

DHCPサーバを構築する!

以下の記事を参照して、DHCPサーバを構築します。

TFTPサーバ上のPXE用のブートローダのパスを追記します。

# cat /etc/dhcp/dhcpd.conf 
...
subnet 10.1.0.0 netmask 255.255.0.0 {
    range dynamic-bootp 10.1.251.1 10.1.251.254;
    option broadcast-address 10.1.255.255;
    option routers 10.1.0.1;
        filename "/pxeboot/pxelinux.0";
}

PXEのブートローダをインストールする!

PXEのブートローダをインストールします。

# dnf install syslinux
Last metadata expiration check: 3:33:27 ago on Sun 23 Apr 2023 09:59:28 AM JST.
Dependencies resolved.
==================================================================================================================
 Package                          Architecture          Version                       Repository             Size
==================================================================================================================
Installing:
 syslinux                         x86_64                6.04-0.20.el9                 baseos                560 k
Installing dependencies:
 mtools                           x86_64                4.0.26-4.el9_0                baseos                209 k
 syslinux-nonlinux                noarch                6.04-0.20.el9                 baseos                559 k

Transaction Summary
==================================================================================================================
Install  3 Packages
...
  mtools-4.0.26-4.el9_0.x86_64      syslinux-6.04-0.20.el9.x86_64      syslinux-nonlinux-6.04-0.20.el9.noarch     

Complete!

PXEのブートローダをコピーします。

# mkdir /var/lib/tftpboot/pxeboot
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxeboot/

Rocky Linux 9のブートローダを配置する!

Rocky Linux 9のメディアを/tmpに転送した後、/var/lib/isoに移動し、マウントします。

# mkdir /var/lib/iso
# mv /tmp/Rocky-9.1-x86_64-dvd.iso /var/lib/iso
# mount -o loop,ro /var/lib/iso/Rocky-9.1-x86_64-boot.iso  /mnt

Rocky Linux 9のISOの「isolinux」ディレクトリの内容をすべて以下のディレクトリコピーします。

# cp /mnt/isolinux/* /var/lib/tftpboot/pxeboot

Rocky Linux 9のISOのメディアをアンマウントします。

# umount /mnt

HTTPサーバを構築してRocky Linux 9のリポジトリを公開する!

以下の記事を参照して、HTTPサーバを構築します。

Rocky Linux 9のメディアを配置して、WWWサーバから公開するためのディレクトを作成します。

# mkdir /var/www/html/rocky-91

Rocky Linux 9のメディアを作成したディレクトリにマウントします。

# mount -o loop,ro /var/lib/iso/Rocky-9.1-x86_64-boot.iso  /var/www/html/rocky-91

PXEによる起動の設定を行う!

環境に合わせて、PXEによる起動の設定ファイルを作成します。Rocky Linux 9のリポジトリを公開したURLと、Kickstartを配置したURLを間違いのないように設定します。

# mkdir /var/lib/tftpboot/pxeboot/pxelinux.cfg
# cat < EOF /var/lib/tftpboot/pxeboot/pxelinux.cfg/default
default vesamenu.c32
timeout 50

display boot.msg

label rocky-91
  menu label ^Install Rocky Linux 9.1
  menu default
  kernel rocky-91/vmlinuz
  append initrd=rocky-91/initrd.img ip=dhcp inst.repo=http://10.1.21.31/rocky-91 inst.ks=http://10.1.22.1/kickstart/vmsins02.cfg

Kickstartの設定ファイルを作成する!

Kickstartの設定ファイルを作成して、WWWサーバに配置します。repoの指定をWWWサーバに変更し、cdromの指定を無効にします。今回の例では、PXEサーバと、Kickstartを配置したサーバを別にしていますが、同じWWWサーバ上にすることもできます。

# cat /var/www/html/kickstart/vmsins02.cfg 
...
repo --name="AppStream" --baseurl=http://10.1.21.31/rocky-91/AppStream
...
#cdrom
...
reboot

PXEブートする!

PXEブートすると、DHCPでアドレスが割り当てられ、自動でRocky Linux 9のインストールまで完了します。

おわりに

Rocky Linux 9では、PXEサーバを利用すると、OSのインストールまで自動で完了させることができます。

関連記事

参考書籍(Amazon)