Domanda Perché ubuntu non usa i kernel installati dall'aggiornamento automatico?


Ho usato lo script descritto in questa domanda per elencare il kernel installato sul computer:

Come rimuovere le vecchie versioni del kernel per pulire il menu di avvio?

Nella versione 3.2.0, ho 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 45 e 48. Mi aspetto di eseguire 3.2.0-48 dopo un riavvio, ma sono ancora in esecuzione 3.2.0-32. Perché i kernel installati dall'aggiornamento automatico non vengono utilizzati (e non sono offerti in menu.lst)?

[Sto utilizzando 12.04 LTS]

grep title /boot/grub/menu.lst restituisce:

title       Ubuntu 12.04.1 LTS, kernel 3.2.0-32-generic
title       Ubuntu 12.04.1 LTS, kernel 3.2.0-32-generic (recovery mode)
title       Ubuntu 12.04.1 LTS, kernel 2.6.32-45-generic
title       Ubuntu 12.04.1 LTS, kernel 2.6.32-45-generic (recovery mode)
title       Ubuntu 12.04.1 LTS, kernel 2.6.32-44-generic
title       Ubuntu 12.04.1 LTS, kernel 2.6.32-44-generic (recovery mode)
title       Ubuntu 12.04.1 LTS, kernel 2.6.32-43-generic
title       Ubuntu 12.04.1 LTS, kernel 2.6.32-43-generic (recovery mode)
title       Ubuntu 12.04.1 LTS, memtest86+

Mi sarei aspettato che il kernel tra 3.2.0-33 e 3.2.0-48 fosse in questo file e il valore predefinito fosse l'ultimo. Perché i kernel da 3.2.0 a 33 a 48 non vengono aggiunti in questo file?


Quando ho corso sudo dpkg-reconfigure linux-image-3.2.0-48-generic, ha trovato tutti gli altri kernel e menu.lst rigenerato, ma contiene solo le stesse 9 voci.


5
2018-06-23 03:21


origine


Non riesco a trovarlo linux-image-3.2.0-48-generic pacchetto: packages.ubuntu.com/search?keywords=linux-image-3.2.0 Ci provi sudo dpkg-reconfigure linux-image-3.2.0-48-generic ? - Jérémie Lesage
linux-image-3.2.0-48-generic è un pacchetto valido, rilasciato come aggiornamento per la sicurezza - tramite security.ubuntu.com. Sarà incorporato più tardi nelle fonti regolari in precise-updates. Vedere launchpad.net/ubuntu/precise/+package/... - gertvdijk
Potresti collegare alla risposta specifica che fornisce la sceneggiatura? La domanda ha molte risposte - non so quale hai usato. Ad ogni modo, sembra rotto. Non usarlo: gestisci i kernel o usalo sudo apt-get autoremovese si desidera rimuovere versioni precedenti del kernel. - gertvdijk
@ Jérémie Lesage - Non ho usato questo sito web. Perché è rilevante? Mi affido a "dpkg -l". - Guillaume Coté
@qertvdijk - Non so di collegare a una risposta specifica, ma lo script è: dpkg -l '\' 'linux-'\' '| sed '\' '/ ^ ii /! d; /' \ '' 2.6.32-45 '\' '/ d; s / ^ [^] [^] * ([^] *). * / \ 1 /; / [0-9] /! D '\' - Guillaume Coté


risposte:


Stai facendo due domande: perché è successo e come lo risolvo?

Cosa dovrebbe accadere

Quando il gestore pacchetti installa un nuovo kernel, lo script in /etc/kernel/postinst.d/apt-auto-removal contrassegna il kernel precedente per l'eliminazione al successivo avvio del gestore pacchetti. esso fa funziona correttamente per la maggior parte degli utenti la maggior parte del tempo.

La sceneggiatura è piuttosto conservatrice. Non cancella tutti vecchi kernel, e sbaglia sul lato di lasciare i kernel sul posto piuttosto che eliminare erroneamente il kernel corrente o il kernel precedente (nel caso in cui sia necessario ripristinare). Non esegue la scansione per vedere tutti i kernel che hai installato - utilizza solo i numeri di versione dei kernel nuovi e attuali.

Perché non è successo

Potrebbe essersi verificato un errore nello script, un diverso problema di gestione dei pacchetti avrebbe potuto impedire il contrassegno, diverse azioni dell'utente potrebbero aver notato il pacchetto da installare manualmente prima dell'eliminazione. La causa esatta è sconosciuta e forse inconoscibile. È tutto un ricco arazzo.

Come sistemarlo

La riparazione è molto semplice. Hai bisogno di due informazioni:

  1. Il kernel corrente (usa il comando: uname -r)
  2. Gli altri kernel installati (utilizzare il comando: ls / boot)

Esempio:

$ uname -r
3.11.0-15-generic

$ ls /boot
abi-3.11.0-14-generic         initrd.img-3.11.0-14-generic
abi-3.11.0-15-generic         initrd.img-3.11.0-15-generic
config-3.11.0-14-generic      System.map-3.11.0-14-generic
config-3.11.0-15-generic      System.map-3.11.0-15-generic
extlinux                      vmlinuz-3.11.0-14-generic
grub                          vmlinuz-3.11.0-15-generic

Ignora tutto il file nomi. Guarda tutto il numeri di versione. Puoi vedere dall'esempio che ci sono due versioni del kernel installate:

  • 3.11.0-14-generico (può essere cancellato)
  • 3.11.0-15-generic (il kernel in esecuzione - NON cancellare!)

Quindi possiamo cancellare il vecchio kernel:

sudo apt-get remove linux-image-3.11.0-14-generic

Quando un kernel viene rimosso, il gestore pacchetti rimuoverà automaticamente tutti quei file da / boot e aggiornerà il menu di grub.


0
2018-01-26 04:29