Как удалить старые версии ядра, чтобы очистить меню загрузки?

Каждый раз, когда я устанавливаю новое ядро ​​Linux, оно остается в grub_config, каждый раз делая меню загрузки длиннее.

Я знаю, что могу вручную искать установленные пакеты и удалять их.

Предоставляет ли Ubuntu более простой способ очистить их или не показывать в списке загрузки?

735
задан 22 January 2016 в 18:20

38 ответов

16.04 и более новые версии Ubuntu

sudo apt autoremove

Эта команда удаляет пакеты, которые были автоматически установлены в разрешить зависимость, но теперь от них больше не зависят. Сюда входят старые версии заголовков linux - * и образ linux - * . (Этот процесс также продуман, оставляя одну запасную версию ядра в качестве запасного варианта!)

11.10 и более новые версии Ubuntu

GRUB2 и отображение всех ядер

Последние версии Grub2 , установленный в Ubuntu , автоматически отображает последнее ядро ​​и скрывает старые ядра, которые, возможно, были установлены.

GNU GRUB

Если вы не видите свой grub - не забудьте нажать Shift при загрузке.

Как видите, отображается только последнее ядро.

Если вы выберете показанный вариант (нажмите , введите ), тогда все старые ядра станут видимыми и доступными для загрузки с.

GNU GRUB Previous versions

Как безвозвратно удалить старые ядра

Первая загрузка с последним доступным ядром.

Есть несколько способов удалить старые ядра. Лично я бы не стал трогать Computer Janitor , поскольку признано, что это нарушает работу вашего компьютера своими предложениями.

synaptic

Альтернативой является Synaptic ( sudo apt install synaptic )

найдите linux-image , щелкните ядро ​​правой кнопкой мыши, выберите полное удаление и, наконец, нажмите кнопку Применить , чтобы удалить ядро.

Synaptic Package Manager

Повторите поиск, но на этот раз для linux-header - вы можете удалить связанные заголовки для образа ядра, выбранного ранее.

Synaptic , но не будет пытаться проверить, что вы пытаетесь удалить. .. вы можете случайно удалить свое новейшее ядро ​​- или даже удалить все свои ядра с помощью этого инструмента, в результате чего вы останетесь с незагружаемой Ubuntu !.

Не забудьте проверить, какое ядро ​​вы используете, введите:

uname -r

Результат будет примерно таким:

Terminal <uname -r>

Запомните результат и число - убедитесь, что вы не удалили соответствующий im возраст или заголовок.

Рекомендация

Моя рекомендация - сохранить как минимум два, а лучше три ядра, включая самое последнее. Причина рекомендации заключается в том, что у вас будет по крайней мере одно / два других ядра для загрузки, если по какой-либо причине вы не можете загрузиться с последним ядром, или если у вас есть регрессивные возможности, такие как нарушение беспроводной связи.

622
ответ дан 22 January 2016 в 18:20

באזירט אויף אַ פריערדיקן ענטפער פון David Kemp, די ווייַטערדיק שריפט וועט רייניקן אַלע כעדערז און בילדער אַחוץ פֿאַר די לעצטע 2 ווערסיעס.

#!/bin/sh
# This script assumes that the installed linux-image and linux-headers packages
# share the same versions (i.e. if a linux-image version number is installed,
# the corresponding linux-headers package will also be installed, and vice
# versa.)

SECONDTOLASTVER=$(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -r -n | sed '/^[^0-9]\+$/d' | sed 's/^.*-\([0-9\.]\+-[0-9]\+\).*/\1/' | uniq | sed -n 2p)

# get a list of package names matching the argument passed to the function, and
# return only those package names which should be removed
get_pkgs_to_remove_matching () {
    if [ -n "$SECONDTOLASTVER" ]; then
        echo $(dpkg --list | grep $1 | awk '{ print $2 }' | sort | sed -n '/'"$SECONDTOLASTVER"'/q;p')
    fi
}

echo $(get_pkgs_to_remove_matching linux-image) $(get_pkgs_to_remove_matching linux-headers) | xargs sudo apt-get purge

(נוצן apt-get -y צו באַזייַטיקן אָן קשיא)

2
ответ дан 22 January 2016 в 18:20

Установите диспетчер синаптических пакетов и перейдите на вкладку фильтров (я думаю, фильтры, если не попробуйте все 5) и выберите «локальный». Это покажет вам потерянные пакеты в вашей системе, такие как ядра. После их удаления запустите update-grub . Эта команда обновляет список параметров загрузки для grub.

Если это не удается, вы всегда можете попробовать apt-get remove linux-image-version-generic .

1
ответ дан 22 January 2016 в 18:20

Следующая строка команд будет очищать любые установленные ядра Linux, кроме текущего запущенного (grep -v uname -r) и самого последнего доступного ядра (dpkg -l | .... | tail -1):

dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | grep -v `dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | tail -1` | grep -v `uname -r` | xargs apt-get -y purge

Я использую это, чтобы сохранить загрузочные тома рабочего стола относительно чистыми, но в ситуации с сервером вы, вероятно, захотите расширить логику и написать несколько дополнительных сценариев для поддержки списка последних X ядер, загруженных сервером.

Что-то вроде сценария запуска, который выполняет:

uname -r >> /root/bootedkernels
cat /root/bootedkernels | sort -u | tail -3 > /root/bootedkernels # Keep the last 3 booted kernels

и затем использует:

dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | grep -vf /root/bootedkernels | grep -v `dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | tail -1` | grep -v `uname -r` | xargs apt-get -y purge
0
ответ дан 22 January 2016 в 18:20

Mba hananana fifehezana kely kokoa amin'ireo kinova hitazona, safidio mazava tsara ireo tianao esorina. Ohatra, raha te-hanala ireo kinova kininina 3.2.0 ianao. [49-53] dia ampiasao tsotra ho an'ny loop :

for k in 49 51 52 53 ; do aptitude remove --purge linux-image-3.2.0-${k}-generic ; done

Amboary ny lisitry ny kinova kernel mba hifanaraka.

1
ответ дан 22 January 2016 в 18:20

Попробуйте это. Запустите его как корень.

Сохранить этот сценарий, как, скажем, ./keep-n-kernels.sh

Pass, в качестве аргумента командной строки, количество последних ядер, которые вы хотите сохранить.

    
#!/bin/bash

# pass n as a command line argument, and it will find all the installed
# kernels and keep only the n most recent ones => uninstall all older ones

# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'
# this command gives the list of all packages EXCEPT for the latest kernel.
# source : https://help.ubuntu.com/community/Lubuntu/Documentation/RemoveOldKernels

n=$1

# find the installed kernel versions :
# dpkg-query -W -f='${Version}\n' 'linux-image-*' | grep . | sort -n
# gives version numbers, one in each line
# dpkg-query -W -f='${Version}\n' 'linux-image-*' | grep . | sed 's/\...$//g' | grep -v '\...$'| sort -u
# gives only the ones that appear in linux-image

# suffix, e.g. -generic-pae
# the kind of kernel you boot into
suffix=$(uname -r | sed 's:^[0-9]\.[0-9]\.[0-9]\-[0-9]\{2\}::g')

command="apt-get purge "

for version in $(dpkg-query -W -f='${Version}\n' 'linux-image-*' | grep . | sed 's/\...$//g' | grep -v '\...$'| sort -u | head -n -${n})
do
    command=${command}"^linux-image-${version}${suffix} "
done

$command

Пример использования :

# ./keep-n-kernels.sh 4 # launch the apt-get command to remove all but the 4 most recent kernels

Если вы хотите [И ВАШ СВОЙ РИСК], вы можете добавить -y (или флаг силы) в apt-получить команду и сделать его неактивным.

1
ответ дан 22 January 2016 в 18:20

Просто чтобы вмешаться, вы можете также введите

apt-get remove linux- {image, headers} -xyz- {1,2, ..., n}

как root, и работа будет выполнена.

1
ответ дан 22 January 2016 в 18:20

Если вы используете ansible для управления машинами, эта книга может оказаться полезной.

---
 - hosts: all
   become: yes
   tasks:
    - name: "Run apt-get autoremove"
      apt: 
        name: linux-image-generic
        autoremove: yes
        state: present 
        update_cache: yes
        cache_valid_time: 3600
0
ответ дан 22 January 2016 в 18:20

Я использую рабочий стол KDE, и самый простой вариант, который я нашел, - это использование приложения kde-config-grub2, как предлагается здесь: https://www.kubuntuforums.net/ showthread.php? 58075-remove-old-linux-versions (который я уже установил для установки фонового изображения, варианта загрузки по умолчанию и т.п.). Рядом с раскрывающимся списком, где вы можете выбрать запись по умолчанию, есть кнопка «Удалить старые записи». Нажав на эту кнопку, вы увидите список всех установленных ядер, и вы сможете выбрать, какие из них нужно удалить. Когда вы примените изменения, он будет использовать dpkg для фактического удаления их из системы, а также из меню GRUB.

1
ответ дан 22 January 2016 в 18:20

У меня есть скрипт для этого, который не нуждается в очень модном разборе строк.

Удалите заголовки и изображения, кроме текущего, чтобы освободить место

sudo apt-get autoremove --purge 'linux-headers-[0-9].*' linux-headers-$(uname -r)+ linux-headers-$(uname -r | cut -d- -f1,2)+ 'linux-image-[0-9].*' linux-image-$(uname -r)+
2
ответ дан 22 January 2016 в 18:20

Я использую unattended-upgrades, поэтому мне очень понравился ответ Qwerty , который настраивает его для автоматического удаления старых пакетов ядра.

Однако была одна проблема: после установки нового ядра этот процесс удалял бы пакет для работающего в данный момент ядра!

Это не полностью разрушает ОС. На самом деле я редко замечал, что это произошло, пока мне не потребовалась горячая загрузка модуля (например, путем подключения USB-устройства), а затем модуль не мог быть найден.

В качестве решения этой проблемы я создал скрипт для генерации виртуального пакета currently-installed-kernel, который эффективно закрепляет текущий пакет ядра до следующей загрузки.

Сценарий называется pin-current-kernel-with-package.sh. Вот последняя версия (вероятно) и первая версия (определенно).

Просто сохраните этот скрипт где-нибудь и добавьте его в процесс загрузки . Например, сохраните его в /root/bit/pin-current-kernel-with-package.sh, затем отредактируйте /etc/rc.local и добавьте следующую строку:

bash /root/bin/pin-current-kernel-with-package.sh

Теперь ваш работающий пакет ядра никогда не будет удален!

0
ответ дан 22 January 2016 в 18:20

Скорее используйте apt, клиентскую среду, чем apt-get, чтобы очистить старые образы ядра:

$ sudo apt autoremove --purge
...
The following packages will be REMOVED:
  linux-headers-4.4.0-51* linux-headers-4.4.0-51-generic* linux-image-4.4.0-51-generic* linux-image-extra-4.4.0-51-generic*
0
ответ дан 22 January 2016 в 18:20

Я даю два более безопасных варианта методов в других ответах: один использует менеджер синапсов , а другой - терминал .

С этими вариантами вы удаляете только те пакеты, которые система идентифицирует как сменные. Нет никакого риска, что вы удалите ядра Linux, которые используются в настоящее время - как это случилось со мной несколько недель назад; - (

Использование Synaptic Manager

Вместо того, чтобы искать linux-image по все установленных пакетов, выберите пакеты с автоматическим удалением (см. Красный эллипс на рисунке ниже). Теперь из этого списка удалите необходимое linux-образ . enter image description here

Использование терминала

Аналогично, если вы удаляете ядра на терминале, показывайте только ядра с автоматическим удалением , запустив [ 1116]

 sudo apt-get -s autoremove | grep linux-image

А затем удалите ядро ​​linux-image-x.x.x-x-generic, которое вы хотите удалить из данного списка, запустив

 sudo apt-get purge linux-image-x.x.x-x-generic 
0
ответ дан 22 January 2016 в 18:20

Чтобы удалить ядра, которые были автоматически установлены через регулярные обновления системы, откройте терминал и запустите:

sudo apt autoremove --purge

Чтобы узнать текущую версию ядра, запустите uname -r, а также вы можете запустите uname --help, чтобы узнать больше обо всех командах uname

Вы также можете запустить df -h, чтобы показать вам драйверы файловой системы, аналогично вы можете запустить df --help для получения дополнительной информации.

Чтобы включить автоматическое удаление старых ядер: отредактируйте файл конфигурации, используя gksu

gksudo gedit /etc/apt/apt.conf.d/50unattended-upgrades

Когда файл откроется, раскомментируйте следующую строку и измените значение на true :

// Unattended-Upgrade :: Remove-Unused-Dependencies " false ";

Если вам нужно установить gksu , вы можете запустить sudo apt install gksu

Чтобы очистить старые пакеты, мы можем использовать sudo apt-get clean

Для получения дополнительной информации посетите http://ubuntuhandbook.org/index.php/2016/ 05 / удалить старый-ядра-убунту-16-04 /

0
ответ дан 22 January 2016 в 18:20

В следующий раз, при удалении старых ядер, откройте терминал и используйте эту команду:

sudo apt-get autoremove linux-headers-2.6.38-10-generic

Вы можете использовать Synaptic для получения точного имени ядра, которое вы собираетесь удалить. Просто откройте Synaptic и найдите "linux-заголовки", а затем выберите запись о том, какое ядро вы хотите удалить. Соответствующая запись будет помечена в конце "-generic".

Чтобы очистить систему от любых неиспользуемых (оставшихся) зависимостей, используйте эту команду:

sudo apt-get autoremove
1
ответ дан 22 January 2016 в 18:20

Вот сценарий, который я использую для хранения 2 пакетов ядра установленными (т.е. текущий и предыдущий). Это также удаляет initrd-VERSION-generic.old-dkms файлы, разбросанные DKMS, который может заполнение маленький раздел начальной загрузки.

Сценарий:

echo "**Removing -generic.old-dkms files from /boot**" && rm -f /boot/*-generic.old-dkms # if using DKMS it creates initrd-VERSION-generic.old-dkms in /boot and doesn't clean them up, meaning after a few kernel upgrades /boot can become full
OLDKERNEL=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- | awk '{print "linux-image-" $0}')
OLDHEADERS=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- | sed 's/-generic//g' | awk '{print "linux-headers-" $0}')
OLDHEADERS=${OLDHEADERS//-pae/} # remove -pae string as linux-header packages don't have it in their names
if [ -n "$OLDKERNEL" -o -n "$OLDHEADERS" ]; then
apt-get -q remove --purge $OLDKERNEL $OLDHEADERS
echo "**Finished removing old kernels**"
else
echo "**No old kernels found**"
fi
-3
ответ дан 22 January 2016 в 18:20

вот приблизительный набросок того, что я сделал, осторожно, так как я не эксперт в Linux, убедитесь, что вы знаете, что делаете, и сделали резервную копию всех файлов, которые вы изменяете.

gedit /boot/grub/grub.cfg

затем найдите записи, которые вы хотите сохранить, мы выделим и скопируем их

cd /etc/grub.d
ls

вы увидите список файлов, таких как 10_linux и 30_os-prober

sudo chmod -x 10_linux

, это остановит автоматическое добавление всех записей linux в меню загрузки grub .

gksudo gedit 40_custom

откройте файл пользовательского меню загрузки, затем вернитесь к grub.cfg (который все еще должен быть открыт в gedit) и скопируйте записи, которые вы хотите сохранить ... например,

menuentry "My Default Karmic" {
  set root=(hd0,1)
  search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
  linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
  initrd /boot/initrd.img-2.6.31-11-generic
}

вставьте их в 40_custom , а затем сохраните его.

sudo chmod 755 40_custom

делает его исполняемым, затем, наконец, мы обновляем grub, который изменяет файл grub.cfg:

sudo update-grub

ОСТОРОЖНО, если вы обновите ядро ​​или ОС, ваше меню загрузки, вероятно, будет не обновлять ... вам придется сделать это вручную. Но выполнение этой процедуры позволит вам настроить меню загрузки немного больше, например, удалить версию ядра и просто указать имя ubuntu ... например, Ubuntu Lucid 10.04 и т. Д.

Надеюсь, кто-то сочтет это полезным, так как это мне потребовалось время, чтобы понять ... нигде не видел этого решения ...

1
ответ дан 22 January 2016 в 18:20

Вы можете использовать ukuu - это весь графический интерфейс - для обновления и удаления старых ядер. У меня работает!

Просто не забудьте оставить последние 2 установленными и, очевидно, «работающее» ядро.

Вы также можете настроить ukuu на отображение только основных выпусков, даже ядер RC, скрытых выпусков.

ukuu

Вы можете найти ukuu в Synaptic или инструкции здесь:

OMG! Инструкции по установке Ubuntu ukuu

2
ответ дан 22 January 2016 в 18:20

ailurus имеет функцию удаления старых ядер, а также неиспользуемых конфигураций. Я лично удаляю вручную из синаптики. Вы можете установить ailurus из getdeb , а также из ppa

2
ответ дан 22 January 2016 в 18:20

Самый быстрый / простой способ (применимый по крайней мере с 12.04), который уже поставляется с Ubuntu, - apt-get . Выполните следующие действия, если вы хотите удалить все старые версии ядра, которые не используются (кроме предыдущей, которую вы не используете. Это необходимо для того, чтобы убедиться, что в случае сбоя текущей версии ядра каким-либо образом у вас есть способ вернуться в предыдущее состояние). Сделайте следующее:

sudo apt-get autoclean

Это удалит все старые файлы (включая версии ядра), которые могут у вас быть. Обратите внимание, что если у вас много старых версий, это займет некоторое время, поскольку необходимо убедиться, что удаление версии ядра не вызывает проблем. Для меня удаление последних 12 версий ядра заняло около 2 минут. Вы также можете сделать следующее:

sudo apt-get clean

Что удалит все загруженное и сохраненное в папке кэша apt. Наконец, у вас есть:

sudo apt-get autoremove

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

28
ответ дан 22 January 2016 в 18:20

Ubuntu 16.04+:

$ sudo apt autoremove
...
The following packages will be REMOVED:
  linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic linux-tools-4.4.0-57 linux-tools-4.4.0-57-generic

Ubuntu 15.10 и ниже:

Я нахожу это самым простым и быстрым способом. В нём хранится последнее ядро, а также ещё два:

sudo apt-get install bikeshed
sudo purge-old-kernels

Для изменения количества хранимых дополнительных ядер:

sudo purge-old-kernels --keep 3
62
ответ дан 22 January 2016 в 18:20

Удаление записей из Grub 2. Записи должны быть удалены путем редактирования или удаления файлов в папке /etc/grub.d. Файл /boot/grub/grub.cfg доступен только для чтения и обычно не требует редактирования.

Слишком много ядер?

  • Если вы не уверены в используемом в настоящее время ядре, в терминале типа отсоедините -r.

  • Ядра, удаленные через APT (Synaptic, "apt-get delete" и т.д.), автоматически обновят grub.cfg и никаких действий от пользователя не требуется.

  • Отличным инструментом для удаления ядер (и пунктов меню) является Ubuntu-Tweak, безопасное и простое в использовании приложение с графическим интерфейсом.

  • Установка ubuntu-Tweak

  • Ubuntu-Tweak будет доступна в разделе Приложения > Системные инструменты.

Удаление старых записей ядра

  • Выберите "Очиститель пакетов" слева и "Очистить ядро" справа.

  • Нажмите кнопку "Разблокировать" в правом нижнем углу, введите пароль.

  • Выберите из отображаемого списка изображения ядра и заголовки, которые вы хотите удалить. Используемого ядра нет в списке.

  • Нажмите кнопку "Очистка" в правом нижнем углу, чтобы удалить выбранные образы ядра и заголовки.

Удаление операционных систем из меню Grub

  • Другие операционные системы, которые были удалены с компьютера, также будут удалены из меню, как только "update-grub" будет запущен от имени root.

  • Пункты меню скриптами помещаются в меню Grub2. Если вы не хотите, чтобы в меню были введены другие операционные системы, отключите /etc/grub.d/30_osprober

  • Выполните эту команду, чтобы остановить выполнение скрипта
    sudo chmod -x /etc/grub. d/30_os-prober

  • DISABLE_30_OS-PROBER='true' в /etc/default/grub

Удалить Memtest86+ из меню Grub
sudo chmod -x /etc/grub.d/20_memtest86+

  • Запустите команду обновления grub.cfg

Source

Примечание:. После обновления ядра в меню GRUB добавляется новая запись, которую при желании можно удалить старую. Однако, большинство опытных пользователей посоветуют оставить хотя бы одну запасную запись на случай, если что-то пойдет не так с обновлением, и вам нужно будет загрузить старую версию ядра для поиска и устранения неисправностей.

Альтернативный способ удаления записей ядра (Kernel entries) (до 10.04)

для GRUB, а не для GRUB2

стартап-менеджера Install startupmanager

Вы можете найти его в разделе System>>Administration>>>. alt text
alt text
На втором скриншоте видно, что можно выбрать количество отображаемых ядер? Обычно я просто держу его на 1, но когда я получаю обновление ядра я всегда меняю его на 2 перед перезагрузкой, так что я могу выбрать старое ядро, если новое ядро имеет проблемы с моим оборудованием. Как только я узнаю, что новое ядро хорошо работает, я меняю его обратно на 1.

44
ответ дан 22 January 2016 в 18:20

Чистая командная строка, это удалит все, кроме текущей и второй по актуальности (через «-2» в команде head ниже):

OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- |
    awk '{print "linux-image-" $0 " linux-headers-" $0}' )
if [ -n "$OLD" ]; then
    apt-get -qy remove --purge $OLD
fi
apt-get -qy autoremove --purge
41
ответ дан 22 January 2016 в 18:20

Обновление: purge-old-kernels в настоящее время устарело .

Я написал сценарий для очистки ядер даже в сложных условиях . Он называется linux-purge , и вы можете найти его здесь .

Если вы просто хотите очистить ядра (и связанные пакеты), которые старше, чем используемое в настоящее время ядро , когда система не сломана, вы можете использовать этот сценарий .

Также есть страница документации Ubuntu, в которую я внес свой вклад относительно удаления старых ядер здесь .

38
ответ дан 22 January 2016 в 18:20

Принятый ответ с использованием sed для постоянного удаления старых ядер имеет некоторые недостатки, если кто-то не перезагрузил компьютер после обновления ядра, команда удалит и новое ядро.

Вот альтернативное решение, которое будет учитывать все ситуации для удаления только реальных старых ядер:

#!/bin/bash
kernels=( $(grep -Po "^linux-image-[^-]+-[^-]+-generic\b" < <(dpkg --get-selections)) )
cur_rel=$(grep -Po ".*(?=-[a-z]*$)" < <(uname -r))

for kernel in "${kernels[@]}"; do
    ker_rel=$(grep -Po "[0-9].*(?=-[a-z]*)" <<< "$kernel")
    dpkg --compare-versions "$ker_rel" gt "$cur_rel" && echo "Please Restart your computer first" && break
    dpkg --compare-versions "$ker_rel" lt "$cur_rel" && sudo apt-get remove "$kernel"
done

Если у вас есть какая-либо версия, которая новее текущей, это даст вам предупреждение о необходимости сначала перезагрузить компьютер. Также обратите внимание, что старые ядра сохраняются по уважительной причине: если вы каким-то образом испортите свое текущее ядро, сделав вашу систему нестабильной, вы сможете загрузиться с любым старым ядром.

3
ответ дан 22 January 2016 в 18:20

Чтобы выяснить, какие ядра и заголовки установлены, используйте

dpkg -l | grep linux-image

dpkg -l | grep linux-headers

Вы можете удалить их по одному или вместе, просто убедитесь, что они самые последние.

Есть также несколько удобных команд и скриптов для автоматизации удаления.

http://ubuntuforums.org/showthread.php? t=1658648

Следующие утверждения об удалении всех неиспользуемых ядер и заголовков:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | grep -v hwe | xargs sudo apt-get purge

(используйте apt-get -y для удаления без вопросов)

Вот что происходит при выполнении на 18.04.1:

~$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]

\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | xargs sudo apt-get -y purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.15.0-33* linux-headers-4.15.0-33-generic* linux-headers-4.15.0-34* linux-headers-4.15.0-34-generic* linux-image-4.15.0-33-generic* linux-image-4.15.0-34-generic*
  linux-modules-4.15.0-33-generic* linux-modules-4.15.0-34-generic* linux-modules-extra-4.15.0-33-generic* linux-modules-extra-4.15.0-34-generic*
0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.
After this operation, 671 MB disk space will be freed.
(Reading database ... 227403 files and directories currently installed.)
Removing linux-headers-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-headers-4.15.0-33 (4.15.0-33.36) ...
Removing linux-headers-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-headers-4.15.0-34 (4.15.0-34.37) ...
Removing linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-image-4.15.0-33-generic (4.15.0-33.36) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-33-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Found linux image: /boot/vmlinuz-4.15.0-34-generic
Found initrd image: /boot/initrd.img-4.15.0-34-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-image-4.15.0-34-generic (4.15.0-34.37) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-36-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-36-generic
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-34-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
(Reading database ... 156180 files and directories currently installed.)
Purging configuration files for linux-image-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
dpkg: warning: while removing linux-modules-4.15.0-33-generic, directory '/lib/modules/4.15.0-33-generic' not empty so not removed
Purging configuration files for linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-image-4.15.0-33-generic (4.15.0-33.36) ...
Purging configuration files for linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
~$ uname -r
4.15.0-36-generic
26
ответ дан 22 January 2016 в 18:20

Для того, чтобы удалить старые ядра образов Linux, сначала загрузитесь в ядро, которое хотите сохранить.

Также вы можете проверить версию ядра с помощью команды uname -r, чтобы не удалить по ошибке не ту версию.

Теперь перейдите в менеджер пакетов synaptic и найдите linux-image и удалите старые версии, кроме той, что показана верхней командой. Обычно я предпочитаю использовать последнюю.

Теперь, когда вы перезагрузитесь, вы увидите более чистое grub-меню.

17
ответ дан 22 January 2016 в 18:20

Лично мне нравится использовать Synaptic. Это позволяет мне чувствовать себя увереннее в том, что происходит. Единственное приложение, которое я использовал и которое имеет возможность удалять старые ядра, это Ubuntu Tweak.

Как удалить ядра, которые вы не используете:

  • Открыть UbuntuTweak
  • Нажмите на "Package Cleaner" в разделе "Applications" в левой панели
  • В правой части "cleaning view" нажмите "Clean Kernels"
  • Выберите все ядра - я думаю, что используемого ядра нет в списке, но на всякий случай проверьте, запущено ли uname -a в терминале
9
ответ дан 22 January 2016 в 18:20

Вы можете удалить старые ядра (linux-image-... пакеты) с помощью Synaptic, что удалит их из меню загрузки. Не удаляйте запущенное ядро (вы можете проверить его версию с помощью uname -r).

Имейте в виду, что наличие одной или двух старых версий может помочь в диагностике, если что-то пойдет не так.

Или же вы можете отредактировать/удалить записи вручную (gksu gedit /boot/grub/grub.cfg), но они будут заново сгенерированы при обновлении до более нового ядра. Если вы думаете об удалении опций recovery mode - не надо. Они могут пригодиться, если вы сломаете что-то, что препятствует загрузке.


См. на этой странице.

7
ответ дан 22 January 2016 в 18:20

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

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