Jak domyślnie przechowywać 4 jądra Linuksa w katalogu / boot, zanim zostaną one automatycznie usunięte

12

Zrobiłem trochę kopania i okazało się, że automatyczne czyszczenie jąder jest włączone /etc/kernel/postinst.d/apt-auto-removali plik stwierdza:

# 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.

ale ten skrypt jest ponad moimi głowami i nie mogę łatwo znaleźć sposobu automatycznego czyszczenia niczego oprócz ostatnich 4 jąder.

Fabby
źródło
Musisz zmodyfikować skrypt w kilku miejscach, nie ma innej drogi. Jeśli chcesz, możesz przesłać raport o błędzie na liście życzeń, aptaby umożliwić dostosowanie liczby jąder.
fkraiem
2
„Cztery” w cytowanej części odnosi się do niecodziennego przypadku, w którym „aktualnie uruchomiona wersja”, „wersja jądra, do której zostaliśmy wezwani”, „najnowsza wersja jądra” i „druga najnowsza wersja jądra” są różne, ponieważ wszystkie te wersje są zachowane. W typowych przypadkach sprowadza się to jednak do dwóch, ponieważ „aktualnie uruchomiona wersja” i „druga najnowsza wersja jądra” są takie same, a także dla dwóch pozostałych.
fkraiem

Odpowiedzi:

12

Co oznacza, gdy mówi „do czterech”, to, że aktualnie działająca, aktualnie zainstalowana, najnowsza i poprzednie wersje mogą się różnić, co powoduje automatyczne utrzymanie czterech wersji (co najmniej dwóch). Zobacz tę część kodu:

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

Myślę, że najprostszym sposobem na zapisanie starszych jąder byłoby rozszerzenie $previous_versionlisty na listę. Zamiast:

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

Robić:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
muru
źródło
Tak, wygląda na to, że powinno działać. Należy zauważyć, że ponieważ plik jest częścią aptpakietu, po aptuaktualnieniu można go przywrócić do domyślnego .
fkraiem
@fkraiem plik jest /etc, więc prawdopodobnie jest to conffile i zmiany powinny zostać zachowane (lub przynajmniej użytkownik zostanie o nie zapytany)
muru
1
Tak, wszystkie pliki poniżej /etcto pliki konfiguracyjne, ale wygląda na to, że użytkownicy często się mylą, gdy „zachować czy zamienić?” wyskakuje pytanie ...
fkraiem
1
Nie będę się mylić ... @fkraiem
Fabby
apt wciąż narzeka: 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. ale jest to plik wykonywalny i przestanę się tym przejmować i dostosowałem pytanie do odpowiedzi. :-)
Fabby