Ubuntu: удаление неиспользуемых ядер
May 9, 2016 23:17 · 273 words · 2 minute read
Вместе с обновлениями в Ubuntu устанавливаются новые версии ядра, при этом старые не удаляются и занимают место на жестком диске. Давайте разберемся как быстро и без вреда системе удалить старые ядра!
Первый вариант — графический (не наш случай). С помощью менеджера пакетов Synaptic нужно вручную отметить устаревшие версии ядра для удаления и нажать кнопку «Применить».
Второй вариант — консольный. Чтобы удалить все ядра кроме последней и предпоследней версии можно сначала выполнить:
apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
а потом запустить команду:
apt-get autoremove
Третий вариант — тоже консольный (мой выбор). Оставить только текущую версию ядра и удались все остальные можно с помощью команды:
export KERNEL="$(uname -r | grep -Po '([0-9\.\-]*[0-9])?')"; dpkg --get-selections | grep -E "linux-(header|image).*" | grep -iw install | sort | grep -v "$KERNEL" | grep -v "lts" | sed 's/install//g' | xargs dpkg -P
Разберем данную команду подробнее. Первая часть в переменную KERNEL
записывает текущую версию ядра:
export KERNEL="$(uname -r | grep -Po '([0-9\.\-]*[0-9])?')"
Вторая часть выводит список всех пакетов в системе:
dpkg --get-selections
Третья часть выбирает из списка всех пакетов в системе те пакеты, в имени которых есть linux-header
или linux-image
:
grep -E "linux-(header|image).*"
Четвертая часть среди оставшихся пакетов выбирает только установленные:
grep -iw install
Пятая часть сортирует вывод оставшихся пакетов:
sort
Шестая часть убирает из выборки пакеты с текущей версией ядра и lts-версии:
grep -v "$KERNEL" | grep -v "lts"
Седьмая часть удаляет слово install
:
sed 's/install//g'
В последней части наконец удаляются старые неиспользуемые ядра — xargs
передает имена пакетов менеджеру пакетов dpkg
, который удаляет их с ключом -P
(purge
):
xargs dpkg -P