1

Вскоре после выпуска новых версий ядра для проблем 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 ошибки

Любые идеи о том, как я могу это исправить, чтобы использовать более новые ядра без необходимости переустановки ОС?

/ И т.д. / по умолчанию / личинка:

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
  • Процессор Intel® Core ™ i7-5930K @ 3,50 ГГц × 12
  • GeForce GTX 1080/PCIe/SSE2
  • Гном 3.26.2
  • Тип ОС 64-битная
  • Основной диск m.2 SSD
  • Grub 2.02 ~ beta3-4ubuntu7.1

1 ответ1

0

Я просто столкнулся с той же проблемой. Это было потому, что мой начальный виртуальный диск был слишком большим. Я не знаю, насколько велик, слишком большой, но initrd моего нового ядра был примерно в 10 раз больше, чем стандартный Ubuntu.

Решением было убрать ненужные символы из модулей ядра. Я не разработчик ядра, поэтому символы в модулях мне не нужны. Я нашел этот поток, который предоставил быстрый способ убрать символы: https://unix.stackexchange.com/questions/270390/how-to-reduce-the-size-of-the-initrd-when-compiling-your- ядро

Как только это было сделано, я перестроил initrd, и он был близок к тому же размеру, что и образы initrd по умолчанию. Затем я запустил update-grub и смог загрузить новое ядро.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .