web-dev-qa-db-ja.com

複数のLinuxカーネルイメージとの混乱-古いカーネルでUbuntuが起動する

Ubuntu 16.04を実行しています。ソフトウェアの更新によるプロンプトの後、破棄したので、起動時に端末を開いて更新エイリアスを実行しました。

alias maintain='set -x; Sudo apt-get update && Sudo apt-get upgrade && Sudo apt autoremove && Sudo apt autoclean; set +x'

奇妙なことに、パッケージはアップグレードされませんでしたが、次のメッセージが表示されました。

The following packages have been kept back:

Linux、imageという名前のパッケージが3つあり、ヘッダーは正確な名前を覚えていません。

here をチェックした後、実行します

Sudo apt-get install [3 packages names here]

およびエラーや警告なしでインストールされたパッケージ。実行中にカーネルを完全に更新できないと考えて、ラップトップも再起動しました。更新が完了したかどうかを確認したいので、次のコマンドを実行します[以前の警告を確認しているときにここで見つけたコマンド]を端末で実行します。

$ uname -r
4.4.0-21-generic
$ dpkg -l | grep linux-image
ii  linux-image-4.4.0-21-generic 4.4.0-21.37 AMD64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-22-generic 4.4.0-22.40 AMD64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-24-generic 4.4.0-24.43 AMD64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-21-generic 4.4.0-21.37 AMD64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-22-generic 4.4.0-22.40 AMD64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-24-generic 4.4.0-24.43 AMD64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-generic 4.4.0.24.25 AMD64 Generic Linux kernel image

カーネルから2つのイメージではなく3つのイメージを持っているという事実とは別に、質問は次のとおりです。

カーネルの複数のイメージがインストールされているのはなぜですか?私のエイリアスはautoremove/autocleanを実行するので(そして、もう一度リブートしてエイリアスを再実行して安全な側でエラーが発生します)、削除されませんか?また、再起動後、Ubuntuは最新のカーネルバージョンを使用するべきではありませんか?

update1:​​ls/bootの結果:

$ ls /boot
abi-4.4.0-21-generic     config-4.4.0-22-generic      initrd.img-4.4.0-22-generic  memtest86+_multiboot.bin     vmlinuz-4.4.0-21-generic
abi-4.4.0-22-generic     config-4.4.0-24-generic      initrd.img-4.4.0-24-generic  System.map-4.4.0-21-generic  vmlinuz-4.4.0-22-generic
abi-4.4.0-24-generic     grub                         memtest86+.bin               System.map-4.4.0-22-generic  vmlinuz-4.4.0-24-generic
config-4.4.0-21-generic  initrd.img-4.4.0-21-generic  memtest86+.elf               System.map-4.4.0-24-generic

update2:Sudo update-grubを実行して再起動した後、私はまだ得ます:

$ uname -r
4.4.0-21-generic

また、新しいカーネルパッケージがインストールされたときに、端末出力からgrubが更新されたことを覚えています。

update3:grub2の高度な起動オプションからカーネル4.4.0-24を起動して、Sudo update-grubを再度実行しようとしました。しかし、再起動後uname -rは4.4.0-21を示しています:(

update4:私は問題にアプローチする他の角度を考えています。新しいカーネルにロードするようにgrubを手動で設定することを検討しましたが、新しいカーネルをダウンロードするたびに再度行う必要があるため、これは修正ではなく回避策です。この間、私はgrub-customizerを使用していくつかのマイナーな調整を行ったことを思い出しました(win7でデュアルブートするため)。人々が何が間違っているのか、どうすれば修正できるのかを見つけられるように、/ boot/grub/grub.cfgから関連するエントリを貼り付けています。これは、ubuntuからのメニューエントリと、高度なブートオプションからの2つ(9つのうち)のサブメニューエントリです。

# # BEGIN /etc/grub.d/40_custom_proxy ###
menuentry "Ubuntu 16" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
else
  search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
fi
linux   /boot/vmlinuz-4.4.0-21-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
initrd  /boot/initrd.img-4.4.0-21-generic
}
# ## END /etc/grub.d/40_custom_proxy ###

menuentry "Ubuntu, with Linux 4.4.0-21-generic" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-advanced-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
    else
      search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
    fi
    echo    'Loading Linux 4.4.0-21-generic ...'
    linux   /boot/vmlinuz-4.4.0-21-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.4.0-21-generic
}

menuentry "Ubuntu, with Linux 4.4.0-24-generic" --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-24-generic-advanced-4e2b96c0-04a0-4750-bd14-479f684bf3be' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  4e2b96c0-04a0-4750-bd14-479f684bf3be
    else
      search --no-floppy --fs-uuid --set=root 4e2b96c0-04a0-4750-bd14-479f684bf3be
    fi
    echo    'Loading Linux 4.4.0-24-generic ...'
    linux   /boot/vmlinuz-4.4.0-24-generic root=UUID=4e2b96c0-04a0-4750-bd14-479f684bf3be ro  quiet splash $vt_handoff
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.4.0-24-generic
}

それがどの程度関連しているかはわかりません-そのファイルは変更されないはずです。しかし、問題が何であれ、そのファイルにフットプリントを作成して特定できると推測しています。 (できれば)

5
Karsus

/boot/grub/grub.cfgを見て、何かを変更すべきかどうか疑問に思った後、システムのセットアップ時にgrub-customiserを使用したことを思い出しました。そこにあるものを見るために開けました。

UbuntuとWindows 7の両方から削除されたエントリがありました。削除されたUbuntuエントリの詳細はどういうわけかver 4.4.0-24でした(おそらくupdate-grubが自動更新したのでしょうか?)。私はわかりません。エントリを削除し、最初のオプションとしてそのエントリを復元しました。これで、Ubuntuは最新のインストール済みカーネルでロードされます。

$ uname -r
4.4.0-24-generic

そして、すべてがうまくいくことを願っています。 (少なくとも次のカーネル更新まで。)

Grub-customizerのいくつかのエントリから、エントリがカスタムとしてラベル付けされている場合、新しいカーネルがインストールされても更新されないのではないかと疑っています。わからない。

とにかく、コメントしてくれて、それを理解するのを助けてくれたみんなに感謝します。あなたなしではできなかったでしょう。

2
Karsus