web-dev-qa-db-ja.com

Grub / Ubuntu:カーネルのアップグレード後に適切なメモリターゲットが見つかりませんでした

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
}

システム情報:

  • Ubuntu 17.10
  • インテル®Core™i7-5930KCPU @ 3.50GHz×12
  • GeForce GTX 1080/PCIe/SSE2
  • Gnome 3.26.2
  • OSタイプ64ビット
  • プライマリディスクm.2SSD
  • Grub 2.02〜beta3-4ubuntu7.1
3
Allan Bogh

私はちょうど同じ問題に遭遇しました。最初のramdiskが大きすぎたためです。大きさが大きすぎるかどうかはわかりませんが、新しいカーネルのinitrdは、Ubuntuのデフォルトのカーネルの約10倍でした。

解決策は、カーネルモジュールから不要なシンボルを取り除くことでした。私はカーネル開発者ではないので、モジュール内のシンボルは私には役に立ちません。シンボルを削除する簡単な方法を提供するこのスレッドを見つけました: https://unix.stackexchange.com/questions/270390/how-to-reduce-the-size-of-the-initrd-when-カーネルのコンパイル

それが完了したら、initrdを再構築しましたが、デフォルトのinitrdイメージとほぼ同じサイズでした。次に、update-grubを実行すると、新しいカーネルを起動できました。

2
Jim Gallagher