Самый простой и надежный способ удаления старых ядер: использовать Synaptic.
Как выяснилось, выше указанные методы автоудаления старых ядер не всё учитывают.
Например после purge или remove остаются конфиги (пакеты с пометкой pi или ri). А также выше указанные способы расчитаны на дефолтный набор ядер, если что-то ковыряли руками или установили ядра от новых систем, то тут только в ручную разруливать.
Чтобы учесть все нюансы нужно писать большой скрипт...
Для ручного удаления нужно знать какие пакеты удалять.
Вот они
Метапакеты - это пакеты пустышки, они нужны чтобы притянуть по зависимостям пакеты ядра и соответствующие пакеты исходников и прошивок.
Смотрим используемую версию ядра
uname -r
Метапакеты и firmvare оставляем, неиспользуемые версии ядра и соответствующие исходники ядра удаляем
Также стоит учитывать, что в LTS релизах после выхода более новых версий систем в обновлениях появляются метапакеты с припиской версии системы от которой ядро, например
linux-generic-lts-quantal
linux-image-generic-lts-quantal
linux-headers-generic-lts-quantal
Если перешли на метапакеты от новой версии системы, тогда дефолтные метапакеты можно убрать.