この Topic では、grubby ツールを使用して Alibaba Cloud Linux 3 AI Extension Edition オペレーティングシステムでカーネルブートパラメーターを追加または削除する方法について説明します。
ブート構成ファイルの構造を理解する
ブートエントリ構成ファイル: すべての
GRUBブートエントリ構成は/boot/loader/entries/ディレクトリにあります。ファイル名はmachine-id(`/etc/machine-id`) とカーネルバージョンの組み合わせです。例:c8742e47872643a6839300623c28b57c-5.10.134-19.101.al8.x86_64.conf。構成ファイルの例:
title Alibaba Cloud Linux (5.10.134-19.101.al8.x86_64) 3 (OpenAnolis Edition) version 5.10.134-19.101.al8.x86_64 linux /boot/vmlinuz-5.10.134-19.101.al8.x86_64 initrd /boot/initramfs-5.10.134-19.101.al8.x86_64.img $tuned_initrd options $kernelopts $tuned_params id alinux-20250707132428-5.10.134-19.101.al8.x86_64 grub_users $grub_users grub_arg --unrestricted grub_class kerneloptionsの行は、起動時にカーネルが受け入れるパラメーターを決定します。デフォルトでは、kerneloptsという名前の変数を参照します。この変数は、すべてのブートエントリに適用される共通のカーネルパラメーターを定義します。その値は/boot/grub2/grubenvファイルに保存されます。この変数を変更することで、すべてのカーネルバージョンのパラメーターをグローバルに管理できます。
推奨ツール
これらの構成ファイルを手動で編集すると、システムの起動を妨げる可能性のあるフォーマットエラーが発生する可能性があります。カーネルブートエントリを管理するには、grubby コマンドラインインターフェイスを使用します。grubby は、複雑な構成ファイルの更新を自動的に処理して、原子性と正確性を確保します。
前提条件
開始する前に、次の条件が満たされていることを確認してください:
権限:
root権限を持つユーザーとしてターゲット ECS インスタンスにログインします。データバックアップ (推奨): 本番環境では、操作を実行する前にインスタンスのスナップショットを作成します。これにより、エラーが発生した場合にデータを迅速に回復できます。
AI Extension Edition イメージの特別な構成: Alibaba Cloud Linux 3 AI Extension Edition イメージでカーネルコマンドラインパラメーターまたはブートエントリを変更するには、
grubby変更コマンドを実行する前に、次のコマンドを一度実行する必要があります。efibootmgr -q && test -f /boot/efi/EFI/alinux/grubenv && ln -sf ../efi/EFI/alinux/grubenv /boot/grub2/grubenv # このコマンドは一度だけ実行する必要があります。複数回実行しても悪影響はありません。
この操作により、grubenv 環境が正しくリンクされていることが保証されます。正しくリンクされていない場合、変更は有効になりません。
grubby を使用してブートパラメーターを変更する
このセクションでは、カーネルブートパラメーターを変更するための 2 つのコアメソッドについて説明します。ニーズに基づいて適切なメソッドを選択してください。
すべてのブートエントリのパラメーターをグローバルに変更する
インストールされているすべてのカーネルバージョンにパラメーターを適用する必要がある場合は、このメソッドを使用します。たとえば、nvme_core.io_timeout=4294967295 を追加して、特定のハードウェアをサポートできます。
仕組み:
grubbyは/boot/grub2/grubenvファイル内のkernelopts変数の値を直接変更します。この変数を参照するすべてのブートエントリが影響を受けます。コマンド:
パラメーターの追加
grubby --update-kernel=ALL --args="<NEW_PARAMETER>" # <NEW_PARAMETER> を追加したいパラメーターに置き換えます。例: "nvme_core.io_timeout=4294967295"パラメーターの削除
grubby --update-kernel=ALL --remove-args="<PARAMETER_TO_REMOVE>" # <PARAMETER_TO_REMOVE> を削除したいパラメーターに置き換えます。例: "quiet"
単一のブートエントリのカーネルコマンドラインパラメーターを変更する
現在実行中のカーネルなど、特定のカーネルバージョンに対してテストパラメーターを追加または削除し、他のカーネルバージョンや将来のグローバルな変更に影響を与えたくない場合は、このメソッドを使用します。
仕組み: 単一のブートエントリのカーネルコマンドラインパラメーターを変更するには、
kernelopts変数が展開され、その値が/boot/loader/entries/<RELEVANT_KERNEL_BOOT_ENTRY.conf>の対応するブートエントリ構成ファイルに保存されます。説明このブートエントリのカーネルコマンドラインパラメーターを再度変更するには、ブートエントリを指定する必要があります。これは、ブートエントリの構成ファイルに
kernelopts変数が含まれなくなったためです。コマンド:
パラメーターの追加
grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="<NEW_PARAMETER>" # <NEW_PARAMETER> を追加したいパラメーターに置き換えます。パラメーターの削除
grubby --update-kernel=/boot/vmlinuz-$(uname -r) --remove-args="<PARAMETER_TO_REMOVE>" # <PARAMETER_TO_REMOVE> を削除したいパラメーターに置き換えます。