私は使う人気のあるオペレーティングシステム20.04最近のカーネルのアップグレードにはいくつかの問題が発生し、以前のカーネルバージョンに戻す必要がありました。 (より具体的には、カーネルがアップグレードされ、以前のバージョンのElasticSearchの問題のためにv5.16
戻す必要がありました)。v5.15
ご存知のように、Pop OSはsystemd-boot
。すべてが再びうまく機能していました。数日前まで、システムがカーネルv5.16で起動することがわかりました! systemdブートメニューを再確認しましたが、まだ古いカーネルオプションでブートするように設定されています!私の考えでは、古いカーネルオプションがアップグレードされてv5.16に切り替えられたようですが、これは望ましくありません!
残念ながら、状況を過度に単純化したいとgrub
思われ、systemd-boot
比較できる明示的なカーネルバージョンを表示しません!
だから私はデフォルトのブートカーネルを変更するための別のオプションを検索しましたが、私が見つけたのは次のとおりです。この記事。したがって、次のコマンドを使用してデフォルトのカーネルオプションを変更します。
me@pop-os:~$ sudo kernelstub -v -l -k /boot/vmlinuz-5.15.23-76051523-generic -i /boot/initrd.img-5.15.23-76051523-generic
kernelstub.Config : INFO Looking for configuration...
kernelstub : INFO System information:
OS:..................Pop!_OS 20.04
Root partition:....../dev/sda3
ESP Path:............/boot/efi
ESP Partition:......./dev/sda1
ESP Partition #:.....1
NVRAM entry #:.......-1
Boot Variable #:.....0000
Kernel Boot Options:.quiet loglevel=0 systemd.show_status=false splash
Kernel Image Path:.../boot/vmlinuz-5.15.23-76051523-generic
Initrd Image Path:.../boot/initrd.img-5.15.23-76051523-generic
Force-overwrite:.....False
kernelstub.Installer : INFO Copying Kernel into ESP
kernelstub.Installer : INFO Copying initrd.img into ESP
kernelstub.Installer : INFO Setting up loader.conf configuration
kernelstub.Installer : INFO Making entry file for Pop!_OS
kernelstub.Installer : INFO Backing up old kernel
kernelstub.Installer : INFO Making entry file for Pop!_OS
me@pop-os:~$ echo $?
0
上記のように、コマンドは正常に実行され、終了コードが表示されますが、0
適用されません。出力をもう一度確認してみると、kernelstub
まだ以前と同じです!
me@pop-os:~$ sudo kernelstub -p
kernelstub.Config : INFO Looking for configuration...
kernelstub : INFO System information:
OS:..................Pop!_OS 20.04
Root partition:....../dev/sda3
ESP Path:............/boot/efi
ESP Partition:......./dev/sda1
ESP Partition #:.....1
NVRAM entry #:.......-1
Boot Variable #:.....0000
Kernel Boot Options:.quiet loglevel=0 systemd.show_status=false splash
Kernel Image Path:.../boot/vmlinuz-5.17.5-76051705-generic
Initrd Image Path:.../boot/initrd.img-5.17.5-76051705-generic
Force-overwrite:.....False
kernelstub : INFO Configuration details:
ESP Location:................../boot/efi
Management Mode:...............True
Install Loader configuration:..True
Configuration version:.........3
私のシステムにインストールしたカーネルは次のとおりです。
me@pop-os:~$ dpkg --list | grep linux-image | grep ii
ii linux-image-5.15.23-76051523-generic Linux kernel image for version 5.15.23 on 64 bit x86 SMP
ii linux-image-5.16.19-76051619-generic Linux kernel image for version 5.16.19 on 64 bit x86 SMP
ii linux-image-5.17.5-76051705-generic Linux kernel image for version 5.17.5 on 64 bit x86 SMP
ii linux-image-generic Generic Linux kernel image
修正する:@telcoMの答えに基づいて、出力は次のようになりますbootctl list
。
me@pop-os:~$ sudo bootctl list
Boot Loader Entries:
title: Pop!_OS (Pop_OS-current.conf)
id: Pop_OS-current.conf
source: /boot/efi/loader/entries/Pop_OS-current.conf
linux: /EFI/Pop_OS-4574dd5b-40ad-462f-bfbe-22676dd09bdc/vmlinuz.efi
initrd: /EFI/Pop_OS-4574dd5b-40ad-462f-bfbe-22676dd09bdc/initrd.img
options: root=UUID=4574dd5b-40ad-462f-bfbe-22676dd09bdc ro quiet loglevel=0 systemd.show_status=false splash
title: Pop!_OS (Pop_OS-oldkern.conf) (default)
id: Pop_OS-oldkern.conf
source: /boot/efi/loader/entries/Pop_OS-oldkern.conf
linux: /EFI/Pop_OS-4574dd5b-40ad-462f-bfbe-22676dd09bdc/vmlinuz-previous.efi
initrd: /EFI/Pop_OS-4574dd5b-40ad-462f-bfbe-22676dd09bdc/initrd.img-previous
options: root=UUID=4574dd5b-40ad-462f-bfbe-22676dd09bdc ro quiet loglevel=0 systemd.show_status=false splash
title: Pop!_OS recovery
id: Recovery-9D1B-C521.conf
source: /boot/efi/loader/entries/Recovery-9D1B-C521.conf
linux: /EFI/Recovery-9D1B-C521/vmlinuz.efi
initrd: /EFI/Recovery-9D1B-C521/initrd.gz
options: boot=casper hostname=recovery userfullname=Recovery username=recovery live-media-path=/casper-9D1B-C521 live-media=>
title: Reboot Into Firmware Interface
id: auto-reboot-to-firmware-setup
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
ご覧のとおり、デフォルトのブートカーネルはこのold-kernel
オプションに設定されていますが、明示的なカーネルバージョンを指定しないと、以前のカーネルと現在のカーネルのバージョンがわかりません。しかし、私が見ている行動に基づいて推測することはできold = 5.16
ますcurrent = 5.17
。
この問題をどのように解決できますか?デフォルトのブートカーネルをv5.15に設定し、絶対に変更したくないとします。
答え1
まず、システムがカーネル5にアップデートされました。番号17.5、5.16.19は今すぐold-kernel
出力を表示しますsudo bootctl list
。
私はPop OSを直接使用していませんが、私が理解したところによると、デフォルトの起動項目を設定するコマンドはであり、systemd-boot
利用bootctl set-default
可能な開始項目を表示するコマンドはですbootctl list
。
私が正しく理解したと仮定すると、kernelstub
コマンドは各コアの詳細のみを管理し、正しいコアを指定しない限り、デフォルトでは最新のコアで実行されます。
あなたのkernelstub -v -l ...
コマンドは明らかに機能するので、Pop OSの3番目のエントリが必要ですbootctl list
。ここで、5.15カーネルは5.16で最初にソケットにプッシュされ、old-kernel
5.17(?)の導入とともにリストから完全に削除されました。したがって、正しい方向に進んでいますが、さらにいくつかのステップを実行してください。
sudo bootctl list
とを使用すると、sudo bootctl set-default
5.15カーネルをデフォルトの起動オプションに復元できます。
その後、古いElasticSearchに固執する必要がある限り、新しいカーネルパッケージが到着しないようにする必要があります。パッケージマネージャを設定する必要があります捕まえる~のためカーネルメタパッケージ最新のカーネルパッケージを依存関係として使用してください。新しいカーネルイメージパッケージのインストールをトリガするのは、メタパッケージのアップグレードです。
Debian では、linux-image-amd64
最も高いレベルがlinux-image-generic
仮想パッケージです。 Pop OS Builderは構造を単純化しているようで、あなたの場合、メタパッケージはそのlinux-image-generic
逆のようです。
GUIパッケージマネージャを使用して予約を設定することもできますが、コマンドラインでは次のようになります。
sudo apt-mark hold linux-image-generic
または
echo "linux-image-generic hold" | sudo dpkg --set-selections
既存のパッケージ予約を表示するには:
dpkg --get-selections | grep "\<hold$"
または
apt-mark showhold
最後に、ElasticSearchをアップグレードしたり、5.15カーネルとの整合性を維持したりするために、要件から逸脱する可能性があります。この時点でカーネルを再更新できるように予約を削除する必要があります。
sudo apt-mark unhold linux-image-generic
または
echo "linux-image-generic install" | sudo dpkg --set-selections
答え2
コマンドはkernelstub
正常に動作する可能性がありますが、まだ間違ったカーネルで起動しています。最近同様の問題が発生し、2つの事実を発見しました。
kernelstub -p
別のカーネルへのブートが正しく設定されていても、出力は他のカーネルを表示するように変更されません。- Kernelstubは「現在の」ブートオプションのみを変更します。
したがって、コマンドは機能できますが、再起動時にデフォルトのオプション「old-kernel」は、設定したカーネルを使用しないことを意味します。質問のコマンドを実行して再起動し、「現在」オプションを選択したら、必要なカーネルで起動する必要があります。uname -r
現在使用中のカーネルバージョンチェックを実行して確認できます。
答え3
Pop!_OS 22.04では、カーネルのバージョンをめちゃくちゃにし、最高のバージョンを見つけるためにバージョンを切り替える必要がある同様の問題がありました。
カーネルバージョンを6.6.10に設定するには、次のようにしました。
# update-initramfs -u -k 6.6.10-76060610-generic
カーネルバージョン6.6.10-...を使用する必要があります。 「既存のinitramfsのアップデート」
これによりkernelstub -p
、起動時に必要なカーネル(6.6.10)の表示と使用が修正されます。再起動後:
$ uname -r
6.6.10-76060610-generic
$ sudo kernelstub -p
...
Kernel Boot Options:.quiet loglevel=0 systemd.show_status=false splash systemd.unified_cgroup_hierarchy=0
Kernel Image Path:.../boot/vmlinuz-6.6.10-76060610-generic
Initrd Image Path:.../boot/initrd.img-6.6.10-76060610-generic
Force-overwrite:.....False
...
「現在」および「以前の」構成で使用されているカーネルバージョンを確認するために、ディレクトリ/boot/efi/EFI/Pop.../
と/boot/
ディレクトリ内のカーネルイメージのチェックサムを比較しました。カーネルイメージの/boot/
ファイル名にバージョンがあるからです。ハッキーだけど動作します。