Как сохранить 4 ядра Linux в / boot по умолчанию до их автоматического удаления

12

Я немного покопался и обнаружил, что автоматическая очистка для ядер включена, /etc/kernel/postinst.d/apt-auto-removalи файл сообщает:

# In the common case this results in two kernels saved (booted into the
# second-latest kernel, we install the latest kernel in an upgrade), but
# can save up to four. Kernel refers here to a distinct release, which can
# potentially be installed in multiple flavours counting as one kernel.

но этот скрипт находится у меня над головой, и я не могу легко найти, насколько автоочистить что-либо, кроме последних 4 ядер.

Fabby
источник
Вы должны изменить скрипт в нескольких местах, другого пути нет. Если вы хотите, вы можете подать отчет об ошибке «wishlist» в aptпакете, чтобы можно было настроить количество ядер.
fkraiem
2
«Четыре» в приведенной вами части относится к необычному случаю, когда «текущая загруженная версия», «версия ядра, к которой мы обращались», «последняя версия ядра» и «вторая последняя версия ядра» все различны, так как все эти версии сохранены. В типичных случаях, однако, это сводится к двум, потому что «текущая загруженная версия» и «вторая последняя версия ядра» одинаковы, а также для двух других.
fkraiem

Ответы:

12

Когда он говорит «до четырех», это означает, что текущие, установленные, последние и предыдущие версии могут отличаться, в результате чего автоматически сохраняются четыре версии (как минимум две). Смотрите эту часть кода:

debkernels="$(echo "$latest_version
$installed_version
$running_version
$previous_version" | sort -u | sed -e '/^$/ d')"

Я думаю, что самый простой способ сохранить старое ядро ​​- расширить $previous_versionсписок. Вместо того:

previous_version="$(echo "$debverlist" | sed -n 2p)"

Делать:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
Мур
источник
Да, похоже, это должно работать. Следует отметить, что, поскольку файл является частью aptпакета, он может быть возвращен к стандартному при aptобновлении.
fkraiem
@fkraiem файл находится в /etc, так что он, вероятно, является conffile, и изменения должны быть сохранены (или, по крайней мере, пользователю будет задан вопрос о них)
muru
1
Да, все файлы в папке /etcявляются conffiles, но кажется, что пользователи часто запутываются, когда "сохранить или заменить?" вопрос всплывает ...
fkraiem
1
Я не запутаюсь ... @fkraiem
Fabby
apt по-прежнему жалуется, The following packages were automatically installed and are no longer required: linux-headers-4.10.0-38 linux-headers-4.10.0-38-generic linux-image-4.10.0-38-generic linux-image-extra-4.10.0-38-generic linux-signed-image-4.10.0-38-generic Use 'sudo apt autoremove' to remove them. но это исполняемый файл, и я перестану беспокоиться об этом и адаптирую вопрос к ответу. :-)
Fabby