Come mantenere 4 kernel Linux in / boot di default prima che vengano rimossi automaticamente


12

Ho fatto un po 'di ricerche e ho scoperto che la pulizia automatica per i kernel è attiva /etc/kernel/postinst.d/apt-auto-removale il file indica:

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

ma quella sceneggiatura è molto al di sopra della mia testa e non riesco facilmente a trovare come pulire automaticamente se non gli ultimi 4 kernel.


Devi modificare lo script in diversi punti, non c'è altro modo. Se lo si desidera, è possibile presentare una segnalazione bug "wishlist" sul aptpacchetto per consentire la personalizzazione del numero di kernel.
fkraiem,

2
I "quattro" nella parte citata si riferiscono al caso insolito in cui "la versione attualmente avviata", "la versione del kernel per cui siamo stati chiamati", "l'ultima versione del kernel" e "la seconda versione del kernel più recente" sono tutti distinti, poiché tutte quelle versioni sono mantenute. In casi tipici, tuttavia, ciò si riduce a due perché "la versione attualmente avviata" e "la seconda versione del kernel più recente" sono uguali, e allo stesso modo per le altre due.
fkraiem,

Risposte:


12

Ciò che significa quando dice "fino a quattro" è che le versioni attualmente in esecuzione, quelle attualmente installate, le versioni più recenti e precedenti possono essere diverse, determinando la conservazione automatica di quattro versioni (con un minimo di due). Vedi questa parte del codice:

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

Penso che il modo più semplice per farlo salvare i kernel più vecchi sarebbe estenderlo $previous_versiona un elenco. Invece di:

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

Fare:

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

Sì, sembra che dovrebbe funzionare. Si noti che poiché il file fa parte del aptpacchetto, potrebbe essere ripristinato a quello predefinito quando aptviene aggiornato.
fkraiem,

@fkraiem il file è in /etc, quindi è presumibilmente un file di configurazione e le modifiche dovrebbero essere preservate (o, almeno, all'utente verrà chiesto di loro)
muru

1
Sì, tutti i file sotto /etcsono conffile, ma sembra che gli utenti spesso si confondano quando "mantieni o sostituisci?" si apre una domanda ...
fkraiem,

1
Non mi confonderò ... @fkraiem
Fabby,

apt si lamenta ancora: 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. ma questo è un eseguibile e smetterò di preoccuparmene e ho adattato la domanda per adattarla alla risposta. :-)
Fabby il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.