web-dev-qa-db-ja.com

GrUBがすでに見つかったカーネルを見つけられないのはなぜですか?

15.04にアップグレードした後、実行中のカーネルに一致するカーネルヘッダーが必要です(別のパッケージ用)。

アップグレードにより、カーネル3.19.0-17がインストールされました。念のため、linux-headers-genericもインストールしました。次に、Sudo update-grubを実行して再起動しました。それでも、システムはカーネル3.16.0-31で起動しました(uname -rで確認)。

掘り下げて調べた結果、GrUBはupdate-grubで3.19カーネルを認識し、/boot/grub/menu.lstに追加することもわかりました。ただし、起動時には、GrUBはブートメニューで3.16カーネルまでしか認識しません。 GruBが3.19で起動できるように、これを修正するにはどうすればよいですか?


現在のシステムからの出力は次のとおりです。

Sudo update-grubは常に次の出力を生成します。

$ Sudo update-grub
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-3.19.0-17-generic
Found kernel: /boot/vmlinuz-3.16.0-31-generic
Found kernel: /boot/vmlinuz-3.13.0-40-generic
Found kernel: /boot/vmlinuz-3.11.0-19-generic
Found kernel: /boot/vmlinuz-3.8.0-35-generic
Found kernel: /boot/memtest86+.bin
Found kernel: /boot/vmlinuz-3.19.0-17-generic
Found kernel: /boot/vmlinuz-3.16.0-31-generic
Found kernel: /boot/vmlinuz-3.13.0-40-generic
Found kernel: /boot/vmlinuz-3.11.0-19-generic
Found kernel: /boot/vmlinuz-3.8.0-35-generic
Found kernel: /boot/memtest86+.bin
Updating /boot/grub/menu.lst ... done

/boot/grub/menu.lstの実行後にupdate-grubを開く場合、最初のオプションは次のとおりです。

title        Ubuntu 15.04, kernel 3.19.0-17-generic
uuid        ac9d0eaf-e090-4c29-8e7b-30e98ed07d29
kernel        /boot/vmlinuz-3.19.0-17-generic root=UUID=ac9d0eaf-e090-4c29-8e7b-30e98ed07d29 ro quiet splash
initrd        /boot/initrd.img-3.19.0-17-generic

しかし、開催 Shift 起動中に、3.19を選択するオプションはありません(ただし、他のいずれかを選択できます)。起動後、uname -rは3.16で起動したことを確認します。

$ uname -r
3.16.0-31-generic

3.19カーネルが実際にインストールされていることを示すdpkg -lから切り取られた出力:

ii  linux-headers-3.19.0-17                              3.19.0-17.17                               all          Header files related to Linux kernel version 3.19.0
ii  linux-headers-3.19.0-17-generic                      3.19.0-17.17                               AMD64        Linux kernel headers for version 3.19.0 on 64 bit x86 SMP
ii  linux-headers-generic                                3.19.0.17.16                               AMD64        Generic Linux kernel headers

また、grubとヘッダーのパージ/再インストール、および結果にならなかった他のいくつかのことも試みました。

3
imallett

古いバージョンのGRUB(0.9.7)は、おそらくmenu.lstを使用して何を表示するかを決定し、新しいバージョンのGRUB(GRUB 2)は代わりにgrub.cfgを使用します。 GRUBとGRUB 2が混在してインストールされているようです。

grubパッケージのupdate-grubを使用すると、menu.lstファイルが更新されます。これは、ブートローダーがGRUB 2である場合、事実上何もしません。代わりに、grub2-commonをインストールする必要があります(grubパッケージをアンインストールする必要があります)。次に、update-grub(またはupdate-grub2;両方とも同じこと)を実行すると、代わりにgrub.cfgファイルが更新されます。

this answerに基づく回答。

4
saiarcot895