Я нахожусь на Ubuntu 14.04, и у меня есть много старых ядер, которые я хочу удалить.
Этот вопрос может помочь найти и удалить их, но существует проблема:
Каждый раз
dpkg
удаляет единственное ядро, оно работает/etc/kernel/postinst.d/zz-update-grub
иupdate-initramfs
по всем ядрам, в настоящее время остающимся.
В результате удаление берет навсегда!
Я хочу удалить все пакеты сразу и затем работать update-grub
однажды в конце. Как я могу отключить ненужные шаги?
(Я использую unattended-upgrades
. Возможно, это - то, как я вошел в эту ситуацию.)
Вот что я сделал:
Отредактируйте файл /usr/sbin/grub-mkconfig
(как root) и добавьте следующую строку вверху: (*)
exit 0
[ 1118] Затем выполните apt-get purge
или dpkg -P
, как предложено в связанном вопросе, чтобы удалить нежелательные пакеты. Например, я запустил:
sudo apt-get purge $(dpkg --list | grep -E 'linux-(image|signed-image|headers)' | awk '{ print $2 }' | sort -V | grep -vF "$(uname -r | grep -o '[0-9.-]*' | sed 's/-$//')")
(Нервничаете? Поставьте echo
впереди, чтобы посмотреть, что он очистит, прежде чем запустить его по-настоящему.)
Затем не забудьте снова отредактировать grub-mkconfig
и удалить строку:
exit 0
Затем, наконец, запустите: [ 1128]
sudo update-grub
, чтобы обновить ваш загрузчик.
Этот процесс восстановил 11 ГБ пространства менее чем за 30 минут.
Я также последовал этому прекрасному предложению , чтобы не допустить unattended-upgrades
повторной сборки моих пакетов ядра в будущем.
(*) Я также рассмотрел возможность отключения
BLOCKQUOTE>/usr/sbin/dkms
и/usr/sbin/extlinux-update
и/usr/sbin/update-initramfs
с помощью трюкаexit 0
, но это не сэкономило столько времени, и они оставили файлы в/lib/modules/[kernel_version]/
и/boot/initrd.img-[kernel_version]
так что не очень хороший вариант.