Почему GrUB не может найти ядро, которое уже найдено?

После обновления до 15.04 мне нужно иметь заголовки ядра, соответствующие запущенному ядру (для другого пакета).

При обновлении установлено ядро ​​3.19.0-17. На всякий случай я тоже установил linux-headers-generic. Затем я запустил sudo update-grub и перезагрузился. Тем не менее, система загрузилась в ядро ​​3.16.0-31 (что подтверждается uname -r).

После долгих раскопок я обнаружил, что GrUB распознает ядро ​​3.19 в update-grub и даже заполняет его в /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

Но, удерживая < kbd> Shift во время загрузки, нет возможности выбрать 3.19 (хотя я могу выбрать любой другой). После запуска uname -r подтверждает, что он загрузился в 3.16:

$ uname -r
3.16.0-31-generic

Вывод обрезан из dpkg -l, показывая, что ядро ​​3.19 действительно установлено:

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
задан 22 November 2015 в 23:58

1 ответ

Более старая версия GRUB (0.9.7) вероятный используемый menu.lst определить, что отобразиться, в то время как более новая версия GRUB (GRUB 2) использование grub.cfg вместо этого. Похоже, что у Вас есть некоторое соединение GRUB и установленного GRUB 2.

Используя update-grub от grub пакет обновит menu.lst файл, который ничего эффективно не сделает, если загрузчик будет GRUB 2, который является тем, что происходит здесь. Вместо этого необходимо установить grub2-common (который должен удалить grub пакет). Затем при выполнении update-grub (или update-grub2; оба делают то же самое), grub.cfg файл обновляется вместо этого.

Ответ на основе этого ответа.

4
ответ дан 22 November 2015 в 23:58

Другие вопросы по тегам:

Похожие вопросы: