Я проходил различные вопросы о том, как очистить старые ядра Linux. У них всех, кажется, есть различные ответы, и они стары, таким образом, кто-то обязан сказать, что вопрос слишком стар, и запустите новое сообщение, таким образом, здесь это:
Я хочу сделать все следующее:
Что я не хочу:
Давайте по возможности получим комплексное решение проблемы наращивания ядра. Я в настоящее время играю с более старой версией Ubuntu (10.04), прежде чем я обновлю, но у меня была та же проблема с Ubuntu 12.04. Если решение отличается для различных версий, заявите версию, Вы раньше тестировали Ваше решение.
Какие работы:
uname -r
Это правильно возвращает версию ядра, которую я в настоящее время использую.
Вещи, которые не работают:
sudo apt-get autoremove
sudo apt-get clean
sudo apt-get autoremove linux-image-x.x.xx-xx-generic
То, что я думал, должно работать, но не сделало:
sudo apt-get purge linux-image-x.x.xx-xx-generic
Это работало для уменьшения списка, сгенерированного dpkg -l | grep linux-image
:
sudo dpkg --purge linux-image-x.x.xx-xx-generic
Также вот преимущество на rc/ii
проблема:
ii
означает, что 'Это должно быть установлено, и это установлено' тогда как rc
означает, что 'Это удалено/удалено, но это - конфигурационные файлы, все еще там'.
Я думаю, что это решает проблему между несоответствием между терминальным списком и grub2 меню при начальной загрузке. Поскольку я вспоминаю, ii
списки соответствуют списку grub2. Вопрос здесь состоит в том, как сделал ii
записи добираются там во-первых?
Накопление старых ядер до / начальная загрузка полно, таким образом, повреждаясь склонный, ошибка: LP № 1357093 , с фиксацией, реализованной во всех разновидностях Ubuntu 16.04 и более новой.
Большинство пользователей, которые замечают эту проблему установленное 'целое шифрование диска', которое создает крошечный незашифрованный / раздел начальной загрузки. Так как это является крошечным, раздел заполняется быстро, и эти пользователи замечают проблему намного раньше, чем другие.
, Когда новое ядро установлено,/etc/kernel/postinst.d/apt-auto-removal, сценарий отмечает более старые ядра как имеющий право для автоудаления..., но не работает, автоудаляют. Отсутствие автоудаляет, был первоначально предназначен, чтобы позволить человеку рассматривать список удаленных пакетов.
bugfix к LP № 1357093 работает на большинство пользователей - если он не работает на Вас, тогда существует другая первопричина, препятствующая тому, чтобы старые пакеты ядра были способно отмечены, поскольку имеющий право на автоудаляют. Ищите справку один на один в каналах поддержки Ubuntu.
В более старых версиях Ubuntu, необходимо зафиксировать сорняк старые ядра для сохранения пространства вручную. Как Вы фиксируете его, вручную зависит от того, полна ли Ваша начальная загрузка / или нет. Большинство пользователей не замечает проблемы, пока / начальная загрузка не полно, и они становятся склонными и dpkg no-space-left-on-device ошибки.
, Если начальная загрузка / не полна , и способные работы правильно, простое
sudo apt-get autoremove ## Ubuntu 14.04 and older
sudo apt autoremove ## Ubuntu 16.04 and newer
должно удалить все пакеты ядра, которые имеют право на автоудаление.
, Если начальная загрузка / полна , и способный сбой действий с dpkg ошибкой 'никакое пространство, оставленное на устройстве', тогда слишком поздно для использования, автоудаляют.
слишком поздно потому что действия пакета очередей Aptdaemon. Автоудалите скрывается за очередью и способными аварийными прекращениями работы вся остающаяся очередь, когда любое действие перестало работать... включая исчерпывание пространства. (Это - возможно ошибка в apt/aptdaemon)
, лучшая практика здесь должна использовать 'uname' и 'dpkg' для удаления одного или двух старых ядер, освобождая пространство для способного для завершения это поставило действия в очередь. Тогда автоудалите, будет работать.
Пример:
$ uname -r
3.16.0-36-generic ## This is kernel you MUST NOT remove.
$ dpkg -l | grep linux-image
rc linux-image-3.16.0-23-generic ## 'rc' means already removed
rc linux-image-3.16.0-28-generic ## 'rc' can be safely ignored
rc linux-image-3.16.0-29-generic
ii linux-image-3.16.0-30-generic ## 'ii' means installed. Removable
ii linux-image-3.16.0-31-generic ## Removable
ii linux-image-3.16.0-33-generic ## Removable
ii linux-image-3.16.0-34-generic ## Backup working kernel. Don't remove
ii linux-image-3.16.0-36-generic ## Current kernel. DO NOT REMOVE
## Use dpkg to remove one older kernel, freeing enough space for apt to work
$ sudo dpkg --remove linux-image-3.16.0-30-generic
$ sudo apt-get autoremove ## Ubuntu 14.04 and older
$ sudo apt autoremove ## Ubuntu 16.04 and newer
при игнорировании проблемы в течение долгого времени , тогда существуют эффекты второго порядка, как linux-image-generic, указывающий на неправильную версию ядра и способные ошибки зависимости. Нет никакого единственного способа зафиксировать все их сразу.
Обычно простой способ очистить большинство этих проблем состоит в том, чтобы убрать старые пакеты из Вашего локального кэша пакета, обновить Вашу базу данных пакета и переустановить незаконные пакеты из репозиториев Ubuntu (вместо Вашего локального кэша).
$ sudo apt-get update ## Refresh the package database (14.04 and older)
$ sudo apt update ## (16.04 and newer)
$ sudo apt-get autoclean ## Delete the obsolete packages from your local cache (14.04 and older)
$ sudo apt autoclean ## (16.04 and newer)
$ sudo apt-get install --reinstall <packagename> ## Reinstall the offending package with the latest version in the Ubuntu repositories (14.04 and older)
$ sudo apt install --reinstall <packagename> ## (16.04 and newer)
при тихом обнаружении со способными и/или dpkg ошибками ищите справку один на один в каналах поддержки Ubuntu.
Можно попробовать эти команды, для удаления старых файлов конфигурации и старых ядер:
exec sudo -i
CONFOLD=$(dpkg -l | grep '^rc' | awk '{print $2}')
KERNELCUR=$(uname -r | sed 's/-*[a-z]//g' | sed 's/-386//g')
PKGLINUX="linux-(image|headers|ubuntu-modules|restricted-modules)"
METAPKGLINUX="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"
KERNELSOLD=$(dpkg -l | awk '{print $2}' | grep -E "$PKGLINUX" | grep -vE "$METAPKGLINUX" | grep -v "$KERNELCUR")
apt-get purge "$CONFOLD"
apt-get purge "$KERNELSOLD"
update-grub
Вы можете выполнить следующую команду, чтобы найти список установленных ядер.
rpm -q kernel
blockquote>Найдя список ядер, выполните приведенную ниже команду для удаления ядер.
sudo apt-get remove linux-image-x.x.x.x-generic
blockquote>