SpectreとMeltdownの問題(おそらく無関係)のために新しいカーネルバージョンがリリースされた直後に、最新のカーネルアップデート(当時は4.13.0-25.29)をインストールしました。再起動するとすぐに、「適切なメモリターゲットが見つかりませんでした」というGrubエラーが表示されました。
以前のカーネルを使用すると問題が解決することがわかりました。これまでのところ、動作しているカーネルと壊れているカーネルのリストがあります。
4.13.0-21.24は動作します
4.13.0-25.29エラー
4.13.0-31.34エラー
4.13.0-32.35エラー
OSを再インストールせずに新しいカーネルを使用するためにこれを修正する方法についてのアイデアはありますか?
/ etc/default/grub:
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
/boot/grub/grub.cfg:
# Broken entry (disk UUID has been replaced)
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-[DISK-UUID]' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root [DISK-UUID]
else
search --no-floppy --fs-uuid --set=root [DISK-UUID]
fi
linux /boot/vmlinuz-4.13.0-32-generic.efi.signed root=UUID=[DISK-UUID] ro quiet splash $vt_handoff
initrd /boot/initrd.img-4.13.0-32-generic
}
# Working entry (disk UUID has been replaced)
menuentry 'Ubuntu, with Linux 4.13.0-21-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.13.0-21-generic-advanced-[DISK-UUID]' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root [DISK-UUID]
else
search --no-floppy --fs-uuid --set=root [DISK-UUID]
fi
echo 'Loading Linux 4.13.0-21-generic ...'
linux /boot/vmlinuz-4.13.0-21-generic.efi.signed root=UUID=[DISK-UUID] ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.13.0-21-generic
}
システム情報:
私はちょうど同じ問題に遭遇しました。最初のramdiskが大きすぎたためです。大きさが大きすぎるかどうかはわかりませんが、新しいカーネルのinitrdは、Ubuntuのデフォルトのカーネルの約10倍でした。
解決策は、カーネルモジュールから不要なシンボルを取り除くことでした。私はカーネル開発者ではないので、モジュール内のシンボルは私には役に立ちません。シンボルを削除する簡単な方法を提供するこのスレッドを見つけました: https://unix.stackexchange.com/questions/270390/how-to-reduce-the-size-of-the-initrd-when-カーネルのコンパイル
それが完了したら、initrdを再構築しましたが、デフォルトのinitrdイメージとほぼ同じサイズでした。次に、update-grubを実行すると、新しいカーネルを起動できました。