3.10. bootupd を使用して RHCOS ノード上のブートローダーを更新する
bootupd
を使用して RHCOS ノード上のブートローダーを更新するには、RHCOS マシン上で bootupctl update
コマンドを手動で実行するか、systemd
ユニットを使用してマシン設定を指定する必要があります。
grubby
またはその他のブートローダーツールとは異なり、bootupd
はカーネル引数を渡すなどのカーネル領域の設定を管理しません。カーネル引数を設定するには、ノードにカーネル引数を追加する を参照してください。
bootupd
を使用してブートローダーを更新すると、BootHole 脆弱性から保護できます。
3.10.1. ブートローダーを手動で更新する
bootupctl
コマンドラインツールを使用して、システムのステータスを手動で検査し、ブートローダーを更新できます。
システムのステータスを検査します。
# bootupctl status
x86_64
の出力例Component EFI Installed: grub2-efi-x64-1:2.04-31.el8_4.1.x86_64,shim-x64-15-8.el8_1.x86_64 Update: At latest version
aarch64
の出力例Component EFI Installed: grub2-efi-aa64-1:2.02-99.el8_4.1.aarch64,shim-aa64-15.4-2.el8_1.aarch64 Update: At latest version
最初にバージョン 4.4 以前にインストールされた OpenShift Container Platform クラスターには、明示的な導入フェーズが必要です。
システムのステータスが
Adoptable
の場合に、導入を実行します。# bootupctl adopt-and-update
出力例
Updated: grub2-efi-x64-1:2.04-31.el8_4.1.x86_64,shim-x64-15-8.el8_1.x86_64
更新が利用可能な場合は、更新を適用して、次回の再起動時に変更が有効になるようにします。
# bootupctl update
出力例
Updated: grub2-efi-x64-1:2.04-31.el8_4.1.x86_64,shim-x64-15-8.el8_1.x86_64
3.10.2. マシン設定を通してブートローダーを自動更新する
bootupd
を使用してブートローダーを自動更新するもう 1 つの方法は、必要に応じて起動するたびにブートローダーを更新する systemd サービスユニットを作成することです。このユニットは、ブートプロセス中に bootupctl update
コマンドを実行し、マシン設定を通してノードにインストールされます。
更新操作が予期せず中断されるとノードが起動不能になる可能性があるため、この設定はデフォルトでは有効になっていません。この設定を有効にする場合は、ブートローダーを更新する間、ブートプロセス中にノードが中断されないように注意してください。通常、ブートローダーの更新操作はすぐに完了するため、リスクは低くなります。
bootupctl-update.service
systemd ユニットの内容を含む Butane 設定ファイル99-worker-bootupctl-update.bu
を作成します。注記Butane の詳細は、「Butane を使用したマシン設定の作成」を参照してください。
出力例
variant: openshift version: 4.16.0 metadata: name: 99-worker-chrony 1 labels: machineconfiguration.openshift.io/role: worker 2 systemd: units: - name: bootupctl-update.service enabled: true contents: | [Unit] Description=Bootupd automatic update [Service] ExecStart=/usr/bin/bootupctl update RemainAfterExit=yes [Install] WantedBy=multi-user.target
Butane を使用して、ノードに配信される設定を含む
MachineConfig
オブジェクトファイル (99-worker-bootupctl-update.yaml
) を生成します。$ butane 99-worker-bootupctl-update.bu -o 99-worker-bootupctl-update.yaml
以下の 2 つの方法のいずれかで設定を適用します。
-
クラスターがまだ起動していない場合は、マニフェストファイルを生成した後に、
MachineConfig
オブジェクトファイルを<installation_directory>/openshift
ディレクトリーに追加してから、クラスターの作成を続行します。 クラスターがすでに実行中の場合は、ファイルを適用します。
$ oc apply -f ./99-worker-bootupctl-update.yaml
-
クラスターがまだ起動していない場合は、マニフェストファイルを生成した後に、