A ネットワーク・インストール設定の作成
ネットワーク・インストールは、特に、OSを複数のシステムにインストールする必要がある場合に便利です。
ブートISOまたはPreboot eXecution Environment (PXE)を使用してOSを複数のシステムにインストールする場合は、次の要素からなるネットワーク・インストール構成を設定できます。
-
IPおよびネットワーク構成、PXE構成ファイル、カーネル・イメージとブート・イメージ、およびカーネル・ブート・ディレクティブを提供するネットワーク・インストール・サーバー。この例では、
dnsmasq
を使用してこれらのサービスを提供します。 -
NFSやHTTPなどのプロトコルを介した、ネットワーク・アクセス可能なファイル・システム・サーバー。ここには、パッケージ、Kickstartファイルおよびその他の必要な構成ファイルが格納される可能性があります。このドキュメントでは、そのファイル・システムとしてNFSを使用しています。なお、ご使用のシステムからインターネットに直接アクセスできる場合は、Oracle Linux yumサーバー上の直接使用可能なBaseOSおよびAppStreamリポジトリをパッケージ・インストール用に使用するように、Kickstartインストールを構成できます。インターネットに直接アクセスできないシステムがパッケージの完全なセットにアクセスできるように、Oracle Linux: Oracle Linuxでのソフトウェアの管理の説明に従って、これらのリポジトリのyumミラーを作成することもできます。ただし、システムのブート時にそれにKickstartファイルを提供するためのメカニズムは、指定する必要があります。
これら2つのコンポーネントは別々のシステムに配置できます。また、それらで最新のOracle Linuxバージョンが実行されている必要はありません。以前のリリースで十分です。便宜上、この例のシナリオでは、2つのコンポーネントが1つのシステムでホストされていると想定しています。また、Kickstartインストールが使用されていると想定しています。
ネットワーク・サーバーの設定
ネットワーク・インストール用のサーバーの準備は、次の一般的なタスクからなります。
NFSの構成方法
既存のNFSサーバーがある場合は、このサービスを使用して、ISOの展開後のコンテンツ、およびKickstart構成ファイルをホストできます。エクスポートした共有ディレクトリが、PXEブート・ホスト用に指定したIP範囲からアクセス可能であることを確認します。
使用可能なNFSサーバーがない場合は、次の手順を使用して、ネットワーク・インストールが可能になるようにそのサービスをインストールし構成します。
ノート:
次に示すNFS構成手順は、ネットワーク・インストールに関連する内容のみに限定されています。NFSの構成の詳細は、適切なOracle Linuxシステム管理ガイドを参照してください。
-
nfs-utils
パッケージをインストールします。sudo dnf install nfs-utils -y
-
ファイアウォール・サービスを実行している場合は、次のfirewallコマンドを入力します。
sudo firewall-cmd --add-service nfs --permanent
代替ファイアウォール・サービスを使用している場合、または外部ファイアウォール・デバイスがある場合は、必ず、PXEブート・ホストにこのシステム上のNFSサービスへのアクセス権を付与するための、ルールを構成してください。
-
ISOイメージを格納するディレクトリを作成します。次に例を示します。
sudo mkdir /var/nfs-exports/ISOs
-
NFS共有ディレクトリをエクスポートします。
sudo exportfs -i -o ro [subnet]:/var/nfs-exports/ISOs
この構文は、そのNFS共有への読取り専用権限でのワールド・アクセスを許可します。subnet (
192.0.2.0/24:/var/nsf-exports/ISOs
など)を追加すると、アクセスがそのサブネットのクライアントのみに限定されます。または、
/etc/exports
ファイル内に、その共有ディレクトリをエクスポートするためのエントリを追加することもできます。次に例を示します。/var/nsf-exports/ISOs 192.0.2.0/24(ro)
その後、次のように、
/etc/exports
をリロードしてそのエントリを実装します。sudo exportfs -ra
詳細は、
exportfs(8)
、exports(5)
およびshowmount(8)
の各マニュアル・ページを参照してください。 -
nfs-server
サービスを開始し、システムのリブートのたびに自動的に開始されるようにそれを構成します。sudo systemctl start nfs-server sudo systemctl enable nfs-server
-
次のように、ダウンロードしたISOイメージをNFS共有ディレクトリのサブディレクトリに展開します。
sudo cp -a T path-to-download-image /var/nfs-exports/ISOs/ol8
-
Kickstartを使用する場合は、NFS共有ディレクトリのサブディレクトリにもKickstartファイルを配置します(
/var/nfs-exports/ISOs/ksfiles
など)。 -
(オプション)別のシステムから、そのNFS共有ディレクトリにアクセスできることを確認します。次に例を示します。
sudo mount -t nfs NFS-server-ip:/var/nfs-exports/ISOs /mnt
dnsmasqの構成方法
dnsmasqルーター通知サーバーは、DNSフォワーダ、DHCPサーバーおよびTFTPサーバーとして機能するように設計されています。dnsmasqは、ほとんどのネットワーク・インストール・シナリオに適用できるため、DHCPサービスとTFTPサービスを別々に構成する必要がない、便利な手段です。
dnsmasqの詳細は、dnsmasq(8)
マニュアル・ページ、/usr/share/doc/dnsmasq-version
ファイルおよびhttps://thekelleys.org.uk/dnsmasq/doc.htmlを参照してください。
-
dnsmasq
パッケージをインストールします。sudo dnf install dnsmasq -y
-
/etc/dnsmasq.conf
ファイル内のパラメータを構成します。-
少なくとも、
enable-TFTP
エントリと、tftp-root
の定義済TFTPサーバー・ディレクトリが必要です。次の例で太字で示しているエントリを参照してください。interface=em1 dhcp-range=10.0.0.101,10.0.0.200,6h dhcp-host=80:00:27:c6:a1:16,10.0.0.253,svr1,infinite dhcp-boot=pxelinux/pxelinux.0 dhcp-match=set:efi-x86_64,option:client-arch,8 dhcp-boot=tag:efi-x86_64,shim.efi enable-tftp tftp-root=/var/lib/tftpboot
ノート:
ご使用のシステムでSELinuxがenforcingモードで有効になっているときに、
/var/lib/tftpboot
以外のTFTPサーバー・ディレクトリを構成した場合は、次のコマンドを実行できるようにpolicycoreutils-python
およびpolicycoreutils
パッケージもインストールする必要があります。sudo /usr/sbin/semanage fcontext -a -t tftpdir_t "/var/tftpboot(/.*)?" sudo /sbin/restorecon -R -v /var/tftpboot
これらのコマンドにより、TFTPサーバー・ディレクトリ階層のデフォルトのファイル・タイプを
tftpdir_t
として定義し、そのファイル・タイプをそのディレクトリ階層全体に適用します。次のリストでは、
/etc/dnsmasq.conf
ファイル内のその他のパラメータについて説明します。-
interface
-
着信クライアント・リクエストを監視するインタフェースを指定します。
-
dhcp-range
-
使用可能なIPアドレスの範囲を特定します。上の例では、
6h
という設定により、アドレスのリースが6時間に指定されています。リース時間無制限で静的アドレスを構成するには、プールではなく、静的ネットワーク・アドレスを指定し、
static
およびinfinite
キーワードを使用します。次に例を示します。dhcp-range=10.0.0.253,static,infinite
-
dhcp-host
-
クライアント・システム用に予約されているIPアドレスを指定します。このシステムはその名前とMACアドレスで特定します。
-
dhcp-boot
-
クライアントのブート・ローダー・ファイルの場所を指定します。BIOSベースのクライアントの場合は、
pxelinux/pxelinux.0
のようにします。UEFIベースのクライアントの場合は、ブート・ローダーを指定する前に設定にtag:efi-x86_64
キーワードを含めます。次に例を示します。dhcp-boot=tag:efi-x86_64,shim.efi
BIOSベースのクライアント用とUEFIベースのクライアント用に別個のエントリを作成する必要があります。
-
- 次のように、このファイル内の
tftp-no-blocksize
行をコメント解除します。# This option stops dnsmasq from negotiating a larger blocksize for TFTP # transfers. It will slow things down, but may rescue some broken TFTP # clients. tftp-no-blocksize
-
-
(オプション) dnsmasqをキャッシュ専用ネーム・サーバーとして使用するには、次の手順を実行します。
-
/etc/resolv.conf
ファイル内で、他のネーム・サーバー・エントリより前に、127.0.0.1のネーム・サーバー・エントリを構成します。次に例を示します。nameserver 127.0.0.1 nameserver 10.0.0.8 nameserver 10.0.0.4
dnsmasqサーバーは、127.0.0.1エントリを無視して、DNS問合せをリスト内の他のネーム・サーバーに転送します。
-
DNSリクエストを受け入れるようにファイアウォールを構成します。
sudo firewall-cmd --add-service=dns --permanent
-
-
dnsmasq
サービスを開始し、システムのリブートのたびに自動的に開始されるようにそれを構成します。sudo systemctl start dnsmasq sudo systemctl enable dnsmasq
PXEブート・ロードの構成
PXEブート・ローダーを構成する手順は、ブート・サーバー用に使用されるシステムのタイプによって異なります。
重要:
サポートする予定のインストールには、正しいカーネルおよびRAMディスク・イメージを使用する必要があります。たとえば、Btrfs rootパーティションを持つシステムをインストールする場合は、UEK Boot ISOを使用して、システムがBtrfsサポートでインストールできるように適切なカーネルおよびイメージを取得する必要があります。BIOSベースのPXEクライアント用に構成する方法
-
pxelinux.0
ブート・ローダーを含むsyslinux
パッケージをインストールします。sudo dnf install syslinux -y
-
TFTPサーバー・ディレクトリの下に
pxelinux/pxelinux.cfg
ディレクトリを作成します。sudo mkdir -p /var/lib/tftpboot/pxelinux/pxelinux.cfg
-
ブート・ローダー・ファイルを
pxelinux
サブディレクトリにコピーします。sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux
-
NFS共有ディレクトリから、インストール・カーネル(
vmlinuz
)およびRAMディスク・イメージ・ファイル(initrd.img
)をpxelinux
サブディレクトリにコピーします。sudo cp /var/nfs-exports/ISOs/ol8/vmlinuz /var/lib/tftpboot/pxelinux/vmlinuz sudo cp /var/nfs-exports/ISOs/ol8/initrd.img /var/lib/tftpboot/pxelinux/initrd.img
-
ブート・ローダーをメニューとして表示するためのモジュールを、ブート・ローダー・ディレクトリにコピーします。
sudo cp /usr/share/syslinux/*.c32 /var/lib/tftpboot/pxelinux
-
pxelinux.cfg
サブディレクトリで、エントリを作成してからブート構成ファイルに追加します。このファイルには、
pxe.conf
などの任意の名前を割り当てることができます。次の例では、このファイル内の標準的なエントリを示します。DEFAULT menu.c32 TIMEOUT 400 ONTIMEOUT BootLocal PROMPT 0 MENU INCLUDE pxelinux.cfg/pxe.conf NOESCAPE 1 LABEL BootLocal localboot 0 TEXT HELP Boot to local hard disk ENDTEXT LABEL OL8 MENU LABEL OL8 kernel vmlinuz append initrd=initrd.img inst.repo=/var/nfs-exports/ISOs/ol8/ \ inst.ks.sendmac inst.ks=/var/nfs-exports/ISOs/ksfiles/kstart-file TEXT HELP Install Oracle Linux 8 ENDTEXT
ブート・ローダーは、これらのエントリに基づいて、
TIMEOUT
期間中にユーザーの介入がなかった場合に自動的にローカル・ドライブからブートを試みます。OSがインストールされていない場合、ブート・ローダーはネットワークからブートし、インストール・プロセスを開始します。このリストでは、構成ファイル内で使用されるディレクティブの一部を説明します。
-
DEFAULT
により、ブート・ローダー・メニューを表示するために使用するモジュールを特定します。基本的なテキスト表示の場合は、
menu.c32
モジュールで十分です。ただし、画像や色などのグラフィカル表示用のディレクティブを追加するには、かわりにvesamenu.c32
モジュールを指定します。 -
TIMEOUT
により、ブート・ローダーが後続のディレクティブに従ってクライアントをブートするまでの期間をtimeout
/10秒単位で指定します。次のディレクティブ(ontimeout
)により、待機期間を過ぎたときのアクションを指定します。 -
PROMPT
により、デフォルトでboot:
プロンプトを表示するかどうかを決定します。PROMPT
が1に設定されている場合は、boot:
プロンプトが表示されます。PROMPT
が0に設定されている場合は、ユーザーがコンソールで[Shift
]または[Alt
]キーを押さないかぎり、boot:
プロンプトは表示されません。 -
MENU INCLUDE
により、作成したブート構成を特定します。 -
kernel
により、カーネル実行可能ファイルの名前を定義します。 -
append
により、カーネルのロード時に追加する必要があるパラメータ(RAMディスク・イメージの名前やファイルの場所など)を定義します。なお、ご使用のシステムからインターネットにアクセスできる場合は、Oracle Linux yumサーバーにあるBaseOSリポジトリを指すようにinst.repo
変数を設定できます。たとえば、x86_64プラットフォーム・システムの場合は、inst.repo
をhttps://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64
に設定できます。重要:
カーネルとRAMディスク・イメージのファイルのパスは、ブート・ローダーが含まれるサブディレクトリ(
pxelinux
など)からの相対パスであるとみなされます。pxelinux/OL8
などのサブディレクトリにvmlinuz
およびinitrd.img
ファイルを配置する場合は、必ず正しい相対パスを指定してください。
-
UEFIベースのPXEクライアント用に構成する方法
-
次のパッケージをインストールします。
-
grubx64.efi
ブート・ローダーを含むgrub2-efi
-
第1段階ブート・ローダー
shim.efi
を含むshim
このパッケージは、UEFIクライアントでセキュア・ブートをサポートするために必要ですが、パススルー・ブート・ローダーとしてすべてのUEFIクライアントに使用する必要があります。
-
-
パッケージの場所に移動し、その内容を展開します。
次のコマンドを実行します:
sudo cd /tempdir sudo rpm2cpio grub2-efi-version.rpm | cpio -idmv sudo rpm2cpio shim-version.rpm | cpio -idmv
-
TFTPサーバー・ディレクトリの下に、
efi
などのサブディレクトリを作成します。sudo mkdir -p /var/lib/tftpboot/efi
-
ブート・ローダーおよびその他の関連ファイルを
efi
サブディレクトリにコピーします。次のコマンドを実行します:
sudo cp /tempdir/boot/efi/EFI/redhat/grubx64.efi /var/lib/tftpboot/efi sudo cp /tempdir/boot/efi/EFI/redhat/shim.efi /var/lib/tftpboot/efi sudo cp /tempdir/boot/efi/EFI/redhat/MokManager.efi /var/lib/tftpboot/efi
ノート:
クライアントでセキュア・ブートをサポートする必要がある場合は、
shim.efi
ファイルとMokManager.efi
ファイルが必要です。MokManager.efi
には、EFIバイナリへの署名に使用するキーを管理するためのユーティリティが備えられています。その後、/etc/dnsmasq.conf
ファイル内でUEFIベースのクライアント用にdhcp-boot
を設定するときに、パススルー・ブート・ローダーとして、shim.efi
を指定します。dnsmasqの構成方法を参照してください。 -
NFS共有ディレクトリから、インストール・カーネル(
vmlinuz
)およびRAMディスク・イメージ・ファイル(initrd.img
)をefi
サブディレクトリにコピーします。sudo cp /var/nfs-exports/ISOs/ol8/vmlinuz -O /var/lib/tftpboot/efi/vmlinuz sudo cp /var/nfs-exports/ISOs/ol8/initrd.img /var/lib/tftpboot/efi/initrd.img
-
efi
サブディレクトリで、エントリを作成してから、それをgrub.cfg
ブート・ローダー構成ファイルに追加します。この構成ファイルには、ネットワークからのブートのみでなく、ローカルでブートするためのオプションも必要です。クライアントが、ネットワークからブートされてインストール・プロセスを開始します。その後、インストール終了時にクライアントが再起動されると、システムがローカル・ドライブからブートされます。
次の例では、このファイル内の標準的なエントリを示します。
set default 0 set timeout=10 menuentry 'ol8 localboot' { echo "Booting from local disk" set root=(hd0,gpt1) chainloader efi/shim.efi boot } menuentry 'ol8' { echo "Loading vmlinuz" linuxefi vmlinuz inst.repo=/var/nfs-exports/ISOs/ol8/ inst.ks.sendmac \ inst.ks=/var/nfs-exports/ISOs/ksfiles/kstart-file echo "Loading /initrd.img" initrdefi initrd.img echo "Booting installation kernel" }
注意:
ブート・ローダー構成は、UEFIベースのシステム間で共通ではありません。ディスク・レイアウトが異なるなどの違いがあるため、特定のブート・ローダー設定がすべてのシステムに共通に適用されるわけではありません。前述の例では、ブート・ローダーを構成する方法を1つのみ示しています。ご使用のシステムに適したブート・ローダー構成を作成する必要があります。
-
linuxefi
により、カーネル実行可能ファイルの名前を定義し、カーネルのロード時に追加する必要があるパラメータ(インストール・パッケージの場所やファイルの場所など)を定義します。 -
initrdefi
により、RAMディスク・イメージの名前を定義します。
重要:
カーネルとRAMディスク・イメージのファイルのパスは、ブート・ローダーが含まれるサブディレクトリ(
efi
など)からの相対パスであるとみなされます。efi/OL8
などのサブディレクトリにvmlinuz
およびinitrd.img
ファイルを配置する場合は、必ず正しい相対パスを指定してください。 -
様々な種類のクライアントのサポート
様々なタイプのクライアントをサポートするために、次の条件に基づいて名前を付けて、構成ファイルを作成できます。
-
クライアントのUUID (例:
a8943708-c6f6-51b9-611e-74e6ac80b93d
)ノート:
UUIDベースのファイル名は、BIOSベースのクライアントの場合のみ有効です。UEFIベースのクライアントの場合は適用しないでください。
-
イーサネットのARPハードウェア・タイプを表す
01-
の後にクライアントのMACアドレスを付けて、コロンではなくダッシュを使用して各バイト値を区切った名前(例:01-80-00-27-c6-a1-16
)MACアドレスを入力するときは、小文字を使用してください。
-
16進表記の、先頭に0xのない、クライアントのIPアドレス(たとえば、
0A0000FD
はIPアドレス10.0.0.253を表す)構成ファイルの数を減らすには、クライアントをIPアドレス範囲別にグループ化します。たとえば、
0A0000E
は、10.0.0.224から10.0.0.239までのIPアドレス範囲を表します。
両方のタイプのクライアントを扱っている場合は、それらのファイル名が互いに異なることを確認してください。たとえば、BIOSベースのクライアントでのこの構成ファイルがA000FC
の場合、UEFIベースのクライアントでのそれに相当するファイルはgrub.cfg-A000FC
になります。
BIOSベースのクライアントの場合はpxelinux/pxelinux.cfg
、UEFIベースのクライアントの場合はefi
サブディレクトリなど、構成ファイルをそれぞれのブート・ローダー・サブディレクトリに配置します。
ブート・ローダーは、一致するファイル名が見つかるまで、次の順序で構成ファイルを検索します。
-
UUID
(たとえば、a8943708-c6f6-51b9-611e-74e6ac80b93d
) -
01-MAC_address
(例:[grub2-cfg-]01-80-00-27-c6-a1-16
) -
IPアドレスの完全32ビット(例:
[grub.cfg-]0A0000FD
) -
IPアドレスの最上位28ビット(例:
[grub.cfg-]0A0000F
) -
IPアドレスの最上位24ビット(例:
[grub.cfg-]0A0000
) -
IPアドレスの最上位20ビット(例:
[grub.cfg-]0A000
) -
IPアドレスの最上位16ビット(例:
[grub.cfg-]0A00
) -
IPアドレスの最上位12ビット(例:
[grub.cfg-]0A0
) -
IPアドレスの最上位8ビット(例:
[grub.cfg-]0A
) -
IPアドレスの最上位4ビット(例:
[grub.cfg-]0
) -
デフォルトの構成ファイル(BIOSベースのクライアントの場合は
default
、UEFIベースのクライアントの場合はgrub.cfg
)。
1つのクライアント・タイプ用の複数の構成ファイルに同一の内容が含まれている場合は、ln
コマンドを使用してそれらのファイルをプライマリ・コピーにリンクできます。次に例を示します。
sudo ln primary-ol-verson [grub.cfg-]0A0000FC
sudo ln primary-ol-verson [grub.cfg-]0A0000FD
sudo ln primary-ol-verson [grub.cfg-]0A0000FE
pxelinuxの詳細は、https://wiki.syslinux.org/wiki/index.php?title=PXELINUXを参照してください。
GRUB 2の詳細は、info grub
コマンドを実行してGRUB 2マニュアルにアクセスしてください。