Я использовал сценарий, описанный в этом вопросе, чтобы перечислить ядро, установленное на компьютере:
Как удалить старые версии ядра, чтобы очистить меню загрузки?
[ 115] В 3.2.0 у меня есть 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45 и 48. Я ожидаю запустить 3.2.0-48 после перезагрузки, но Я все еще работаю 3.2.0-32. Почему ядра, установленные с помощью автоматического обновления, не используются (и не предлагаются в menu.lst)?
[Я использую 12.04 LTS]
grep title /boot/grub/menu.lst result в:
title Ubuntu 12.04.1 LTS, kernel 3.2.0-32-generic
title Ubuntu 12.04.1 LTS, kernel 3.2.0-32-generic (recovery mode)
title Ubuntu 12.04.1 LTS, kernel 2.6.32-45-generic
title Ubuntu 12.04.1 LTS, kernel 2.6.32-45-generic (recovery mode)
title Ubuntu 12.04.1 LTS, kernel 2.6.32-44-generic
title Ubuntu 12.04.1 LTS, kernel 2.6.32-44-generic (recovery mode)
title Ubuntu 12.04.1 LTS, kernel 2.6.32-43-generic
title Ubuntu 12.04.1 LTS, kernel 2.6.32-43-generic (recovery mode)
title Ubuntu 12.04.1 LTS, memtest86+
Я ожидал, что ядро между 3.2.0-33 и 3.2.0-48 будет в этом файле и по умолчанию будет самое последнее. Почему ядро с 3.2.0-33 по 48 не добавлено в этот файл?
Когда я запустил sudo dpkg-reconfigure linux-image-3.2.0-48-generic
, он обнаружил все остальные ядра и перегенерировал menu.lst, но в нем содержится только те же 9 записей.
Вы задаете два вопроса: почему это произошло и как я могу это исправить?
Что должно произойти
Когда менеджер пакетов устанавливает новое ядро скрипт в /etc/kernel/postinst.d/apt-auto-removal помечает предыдущее ядро для удаления при следующем запуске менеджера пакетов. Он работает правильно для большинства пользователей большую часть времени.
Сценарий довольно консервативный. Он не удаляет все старые ядра, и он оставляет ошибку на месте, оставляя ядра на месте, вместо того, чтобы ошибочно удалить ваше текущее ядро или предыдущее ядро (в случае, если вам нужно вернуться). Он не сканирует, чтобы увидеть все установленные вами ядра - он просто использует номера версий нового и текущего ядер.
Почему этого не произошло
В скрипте могла быть ошибка, другая проблема управления пакетами могла помешать маркировке, несколько действий пользователя могли бы пометить пакет для ручной установки перед удалением. Точная причина неизвестна и, возможно, неизвестна. Это все богатый гобелен.
Как это исправить
Исправить очень легко. Вам нужно две части информации:
Пример:
$ uname -r
3.11.0-15-generic
$ ls /boot
abi-3.11.0-14-generic initrd.img-3.11.0-14-generic
abi-3.11.0-15-generic initrd.img-3.11.0-15-generic
config-3.11.0-14-generic System.map-3.11.0-14-generic
config-3.11.0-15-generic System.map-3.11.0-15-generic
extlinux vmlinuz-3.11.0-14-generic
grub vmlinuz-3.11.0-15-generic
Игнорировать все имена файлов . Посмотрите на все номера версий . Из примера видно, что установлены две версии ядра:
Таким образом, мы можем удалить старое ядро:
sudo apt-get remove linux-image-3.11.0-14-generic
При удалении ядра менеджер пакетов автоматически удалит все эти файлы из / загрузиться и обновить меню grub.