Debian でデフォルトのカーネルを設定するには?

Debian でデフォルトのカーネルを設定するには?

私は5.10.0-11-cloud-amd64カーネルを持っていて、5.10.0-12-amd64それをDebianにインストールしました11.25.10.0-12-amd64一時的にデフォルトカーネルに設定したいと思います。私は初めてGrubを使います。デフォルトのカーネルをどのように設定しますか5.10.0-12-amd64?私のもの/lib/modules

5.10.0-10-cloud-amd64  5.10.0-11-cloud-amd64  5.10.0-12-cloud-amd64
5.10.0-11-amd64        5.10.0-12-amd64

私の/boot/には、grub2フォルダではなくgrubフォルダしかありません。コマンドgrep -e "menuentry " -e submenu -e linux /boot/grub/grub.cfg出力:

### BEGIN /etc/grub.d/10_linux ###
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
    linux   /boot/vmlinuz-5.10.0-12-cloud-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-12-cloud-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-12-cloud-amd64-advanced-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-12-cloud-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-12-cloud-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-12-cloud-amd64-recovery-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-12-cloud-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro single console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-12-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-12-amd64-advanced-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-12-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-12-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-12-amd64-recovery-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-12-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro single console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-11-cloud-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-11-cloud-amd64-advanced-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-11-cloud-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-11-cloud-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-11-cloud-amd64-recovery-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-11-cloud-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro single console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-11-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-11-amd64-advanced-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-11-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 
    menuentry 'Debian GNU/Linux, with Linux 5.10.0-11-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-11-amd64-recovery-ccb4ba21-fd62-42c9-b8eb-75a437b1747d' {
        linux   /boot/vmlinuz-5.10.0-11-amd64 root=UUID=ccb4ba21-fd62-42c9-b8eb-75a437b1747d ro single console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

上記のコマンドを提供してくれたTelcoMに感謝します。

答え1

まず、内部に変数があることを/etc/default/grub確認してください。GRUB_DEFAULT=設定またはGRUB_DEFAULT=0設定しないと、起動メニューの最初の項目(アイテム#0)がデフォルトで実行されます。に設定した場合とは別に GRUB_DEFAULT=saved、デフォルト値を確実に変更する唯一の方法は、編集してGRUB_DEFAULT=ルート(または)/etc/default/grubで実行することです。update-grubgrub-mkconfig > /boot/grub/grub.cfg

設定されている場合はい GRUB_DEFAULT=saved、次の2つのコマンドを使用grub-rebootできますgrub-set-default。前者はカーネルブートを設定します1回の実行でのみ機能します。これにより、以前のデフォルト値に戻ります。後者は、grub-set-defaultGRUBブートメニューで別の項目を使用または選択して再変更するまで、GRUBのデフォルト項目を切り替えます。

デフォルト設定の最も簡単な形式は、単にメニュー項目番号(一番上の項目#0から始まる)を指定することです。ただし、最新のGRUBメニューは通常、最新のカーネルを最初に配置し、次に構成されます。他のすべてのコアのサブメニュー2番目の場所には、対応するサブメニューの背後にある他のオペレーティングシステムやその他のカスタマイズ項目があります。

便利な方法でGRUBメニューを表示するには、を実行しますgrep -e "menuentry " -e submenu -e linux /boot/grub/grub.cfg。 (次のスペースは、menuentryいくつかの誤ったヒットをフィルタリングするために使用されます。)多少長いmenuentry合計submenu線が表示されます。実際のメニューと順番が同じです。。また、サブメニュー項目はインデントされますが、メインメニュー項目はインデントされません。これにより、システムを再起動せずに現在アクティブなGRUBメニューの構造を表示できます。

トップレベルのメニュー項目のタイトルは通常カーネルのバージョン番号なしで「Debian GNU / Linux」ですが、上記のコマンドは最初のメニュー項目ブロックの一部であるコマンドもlinux /boot/vmlinuz-<kernel version number> ...リストします。最上位エントリで起動されたカーネルバージョンになります。

サブメニュー内でメニュー項目(行のインデントなど)を選択する必要がある場合、基本項目の仕様はその行の識別子、1文字、および目的の実際のメニュー項目の識別子でなければなりませんmenuentry。メニュー項目識別子は、メニュー項目番号(各メニューから0から始まる)、識別子文字列(各行または行の後に引用符付きの文字列)、または各メニュー項目とサブメニューの表示タイトルです。submenu>$menuentry_id_optionmenuentrysubmenu

Linuxカーネルの識別子文字列は、gnulinux-simple-<Linux root filesystem UUID>最初の項目とgnulinux-<kernel version>-advanced-<Linux root filesystem UUID>「詳細オプション...」サブメニューの項目形式をとるようです。

Debian 11の米国英語構成に表示されるメニュー項目のタイトルは、最初の項目として「Debian GNU/Linux」、サブメニューには「Debian GNU/Linux、with Linux」、サブメニューには「Debian GNU/Linux、 with Linux」があります。非サブメニュー。 - サブメニューに回復モード項目があります。

したがって、GRUBメニューに問題を複雑にする他のオペレーティングシステムがないと仮定すると、次の行を編集して再度変更する5.10.0-12-amd64までカーネルをデフォルトに設定できます。GRUB_DEFAULT=/etc/default/grub

GRUB_DEFAULT="1>Debian GNU/Linux, with Linux 5.10.0-12-amd64"

update-grubルートとして実行します。

より柔軟性が必要な場合は、設定して実行してからGRUB_DEFAULT=saved、デフォルト値を再度変更するまで実行してデフォルト値を変更するか、1回の実行のデフォルト値を変更するために実行します。update-grubgrub-set-default "1>Debian GNU/Linux, with Linux 5.10.0-12-amd64"grub-reboot "1>Debian GNU/Linux, with Linux 5.10.0-12-amd64"

この1>プレフィックスは、サブメニュー項目を最初に選択する必要があるという要件に由来し、常にデフォルトのGRUBメニュー(メニュー項目#1など)の2番目の項目です。

を使用している場合は、grub-set-default単純な英数字ソートに基づいて現在の「最新」カーネルを返すことができますgrub-set-default 0

各メニューレベルの最初の項目番号は#0です。メニュー項目の場合、menuentry 'Debian GNU/Linux, with Linux 5.10.0-12-amd64'メニュー項目番号を含む行を次のように指定できます。

GRUB_DEFAULT="1>2"

つまり、2番目の項目(項目#1)がサブメニューを開き、サブメニューの3番目の項目(項目#2)が選択されます。

またはメニューのタイトルは次のとおりです。

GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 5.10.0-12-amd64"

またはメニューID文字列を使用してください。

GRUB_DEFAULT="gnulinux-advanced-ccb4ba21-fd62-42c9-b8eb-75a437b1747d>gnulinux-5.10.0-12-amd64-advanced-ccb4ba21-fd62-42c9-b8eb-75a437b1747d"

または上記の方法を組み合わせて使用​​してください。

メニュータイトルまたはID文字列を使用すると、カーネルパッケージをインストールして削除しても、選択したカーネルを引き続き使用できる限り、同じカーネルを参照し続けるという利点があります。メニュー項目番号を使用するには、カーネルを更新するたびに設定を確認(必要に応じて調整)する必要があるため、自動更新で使用すると不快な結果につながる可能性があります。

答え2

クラウドイメージは、クラウド環境で不要な機能をサポートするために構築されていません。

ほとんどのハードウェアドライバが無効になり、x32 ABIのサポートが無効になり、マイクロコードの更新とコンピュータのチェック例外も同様です。

選択するカーネルは、インスタンスに提供するユーティリティによって異なります。

関連情報