So behalten Sie 4 Linux-Kernel standardmäßig in / boot bei, bevor sie automatisch entfernt werden

12

Ich habe ein bisschen herumgebuddelt und festgestellt, dass die automatische Bereinigung für Kernel aktiviert ist /etc/kernel/postinst.d/apt-auto-removalund die Datei Folgendes anzeigt:

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

Aber dieses Skript ist weit über meinem Kopf und ich kann nicht leicht herausfinden, wie etwas anderes als die letzten 4 Kernel autoclean.

Fabby
quelle
Sie müssen das Skript an mehreren Stellen ändern, es gibt keine andere Möglichkeit. Wenn Sie möchten, können Sie dem aptPaket einen Fehlerbericht "wishlist" hinzufügen , damit die Anzahl der Kernel angepasst werden kann.
fkraiem
2
Die "vier" in dem von Ihnen zitierten Teil beziehen sich auf den ungewöhnlichen Fall, in dem "die aktuell gebootete Version", "die Kernel-Version, die wir aufgerufen haben", "die neueste Kernel-Version" und "die zweitletzte Kernel-Version". sind alle verschieden, da alle diese Versionen beibehalten werden. In typischen Fällen läuft dies jedoch auf zwei hinaus, da "die aktuell gebootete Version" und "die zweitletzte Kernelversion" identisch sind, und dies auch für die beiden anderen.
fkraiem

Antworten:

12

Wenn "bis zu vier" angezeigt wird, können die derzeit ausgeführte, die aktuell installierte, die neueste und die vorherige Version unterschiedlich sein, sodass vier Versionen automatisch beibehalten werden (mindestens zwei). Siehe diesen Teil des Codes:

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

Ich denke, der einfachste Weg, ältere Kernel zu retten, wäre, die $previous_versionListe zu erweitern. Anstatt von:

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

Tun:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
muru
quelle
Ja, das sieht so aus, als sollte es funktionieren. Da die Datei Teil des aptPakets ist, kann sie beim aptUpgrade auf die Standarddatei zurückgesetzt werden .
Fkraiem
@fkraiem die datei ist in /etc, also ist es vermutlich eine conffile und änderungen sollten beibehalten werden (oder zumindest der benutzer wird danach gefragt)
muru
1
Ja, alle Dateien unter /etcsind conffiles, aber es scheint, dass Benutzer oft verwirrt werden, wenn das "behalten oder ersetzen?" Frage erscheint ...
fkraiem
1
Ich werde nicht verwirrt ... @fkraiem
Fabby
apt beschwert sich immer noch: 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. aber das ist eine ausführbare Datei, und ich werde mich nicht mehr darum kümmern und die Frage an die Antwort anpassen. :-)
Fabby