Elimina nuovi kernel / avvio completo


8

Abbiamo alcuni server Ubuntu 16.04. unattended-upgradesvengono abilitati automaticamente dal 16.04 e la partizione di avvio si trova su una partizione separata. A causa degli aggiornamenti automatici della sicurezza, la partizione di avvio sta esaurendo lo spazio con i nuovi kernel.

Non possiamo semplicemente riavviare i sistemi, quindi la macchina sta ancora usando il penultimo kernel.

Quali kernel dovrei rimuovere? Tutti tranne il corrente, il più vecchio e il più recente?

Ragazzi avete qualche consiglio?

Ho anche notato che il kernel più recente ha lo stato "Half Configured". Questo kernel probabilmente non funzionerebbe, quindi dovrei rimuoverlo e usare un kernel più vecchio.

Uscita di dpkg -l | grep linux image:

    ii  linux-image-4.4.0-21-generic --> old kernel
    ii  linux-image-4.4.0-34-generic --> current kernel
    ii  linux-image-4.4.0-36-generic --> new kernel
    ii  linux-image-4.4.0-38-generic --> new kernel
    ii  linux-image-4.4.0-42-generic --> new kernel
    ii  linux-image-4.4.0-45-generic --> new kernel
    ii  linux-image-4.4.0-47-generic --> new kernel
    ii  linux-image-4.4.0-51-generic --> new kernel
    ii  linux-image-4.4.0-53-generic --> new kernel
    iF  linux-image-4.4.0-57-generic --> new kernel

Risposte:


7

Per eliminare il vecchio kernel, è possibile utilizzare lo purge-old-kernelsstrumento da riga di comando.

Questo programma rimuoverà i vecchi pacchetti kernel e header dal sistema, liberando spazio su disco. Non rimuoverà mai il kernel attualmente in esecuzione. Per impostazione predefinita, manterrà almeno gli ultimi 2 kernel, ma l'utente può sovrascrivere quel valore usando il parametro --keep. Eventuali parametri aggiuntivi verranno passati direttamente aapt-get

Per installare purge-old-kernels, eseguire:

sudo apt install byobu

o

sudo apt install bikeshed

Per mantenere in nesecuzione l'ultimo kernel:

sudo purge-old-kernels --keep n

e, g: n = 2

sudo purge-old-kernels --keep 2

Aggiornamento grub:

sudo update-grub

2
byobuè probabilmente il pacchetto che si desidera per 16.04 Xenuial: purge-old-kernelssiamo stati spostati da bikesheda byobuvolte tra il fidato e Xenial, anche se bikeshedora raccomanda byobuquindi ci si può comunque ottenere il programma a meno che non si dispone di no-install-raccomanda.
Wolfgang,

4

Per Ubuntu, Grub2 mostra automaticamente l'ultimo kernel e nasconde i kernel più vecchi. Se vuoi vederli, puoi premere Maiusc durante l'avvio.

Quindi, prima di eliminare i kernel più vecchi, avvia con l'ultimo kernel disponibile (grub2 lo carica di default all'avvio). Per verificare quale kernel stai usando puoi usare il comando:

uname -r

La raccomandazione è di mantenere almeno due o preferibilmente tre kernel, incluso l'ultimo. Il motivo è che avrai almeno uno / due altri kernel con cui avviare se si verifica che non riesci ad avviare con l'ultimo kernel.

Per rimuovere i kernel più vecchi, apri il terminale e controlla il tuo kernel corrente:

uname -r 

Quindi per elencare tutti i kernel installati sul tuo sistema.

dpkg --list | grep linux-image 

Trova tutti i kernel inferiori al tuo kernel corrente. Eseguire i comandi seguenti per rimuovere il kernel selezionato:

sudo apt-get purge linux-image-x.x.x.x-generic 

Infine, esegui i comandi seguenti per aggiornare grub2

sudo update-grub2 

E riavvia il tuo sistema.


1
Dalla domanda: "non possiamo semplicemente riavviare i sistemi" . La tua risposta richiede di farlo due volte.
Corse di leggerezza in orbita,

3

apt-get autoremove, eseguito periodicamente, dovrebbe essere in grado di aiutarti a realizzare ciò che desideri. Il kernel in esecuzione, il kernel precedente e gli ultimi due kernel dovrebbero essere sufficienti.


1
Dato l'elenco dei kernel installati e il fatto che il kernel in esecuzione sia vecchio, direi "il kernel in esecuzione, il kernel precedente e i due kernel più recenti".
Stephen Kitt,

2

Avvia uno dei kernel precedenti.

Primo tentativo apt autoremove --purge

Se non funziona dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Controlla cosa verrà disinstallato.

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P Questo eliminerà il kernel listet dal comando seguente.

sudo apt -f install

e di sicuro

 sudo update-grub
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.