Domanda Qual è il modo più sicuro per pulire / avviare la partizione?


Ho 200 MB assegnati per il /boot partizione. Ogni volta che cerco di aggiornare il kernel, ricevo un messaggio di errore che in pratica afferma /boot è pieno.

Cosa posso fare per pulire /boot e rimuovere / eseguire il backup dei kernel più vecchi?


258
2017-09-14 19:41


origine


Vedere il Ubuntu Community Wiki - jarno


risposte:


Metodo della riga di comando:

Innanzitutto controlla la versione del tuo kernel, in modo da non eliminare l'immagine del kernel in uso, eseguendo:

uname -r

Ora esegui questo comando per un elenco di kernel installati:

dpkg --list 'linux-image*' | grep ^ii

ed elimina i kernel che non vuoi / hanno più bisogno eseguendo questo:

sudo apt-get remove linux-image-VERSION

Sostituisci VERSION con la versione del kernel che vuoi rimuovere.

Quando hai finito di rimuovere i kernel più vecchi, puoi eseguirlo per rimuovere tutti i pacchetti che non ti serviranno più:

sudo apt-get autoremove

E finalmente puoi lanciarlo per aggiornare la lista del kernel di grub:

sudo update-grub

312
2017-09-14 20:34



la linea di comando ha funzionato come un incantesimo, grazie! - koba101
sudo dpkg --list 'linux-image*' | grep ^ii rende un po 'più facile vedere solo i kernel installati. Anche io penso che update-grub è innocuo ma non strettamente necessario, che viene eseguito automaticamente quando si disinstalla un kernel. - Nelson
Uso sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo "" per ottenere l'elenco dei nomi dei pacchetti da utilizzare con sudo apt-get remove. head -n -3 è usato per mantenere 3 kernel più recenti rimasti nel sistema. - Sithsu
sudo apt-get autoremove dovrebbe essere sufficiente (di solito ti lasciano con gli ultimi 3 kernel) - mbx
Questa è una buona risposta, ma dubito che possa funzionare in molti casi (se non tutti): il problema è questo /boot è pieno, così apt-get fallirà con qualche codice di errore o altro. La risposta qui sotto è un po '"hacker" (devo confessare che dovevo armarmi di me stesso per emetterlo rm -rf in /boot) ma l'unico che è probabile che funzioni in questa situazione. - Marco


NOTA: questo è solo se non è possibile utilizzare apt per ripulire a causa di un pieno / avvio al 100%

Se apt-get non funziona perché il tuo / boot è al 100%, dovrai prima pulire / avviare. Questo probabilmente ha catturato un aggiornamento del kernel in un'installazione parziale, il che significa che apt ha praticamente bloccato tutto e continuerà a dirti di correre apt-get -f install anche se quel comando continua a fallire.

Ottieni l'elenco delle immagini del kernel e determina cosa puoi fare senza. Questo comando mostrerà i kernel installati ad eccezione di quello attualmente in esecuzione sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`. Nota le due versioni più recenti nell'elenco. Non devi preoccuparti di quello in esecuzione in quanto non è elencato qui. Puoi verificarlo con uname -r.

Crea un comando per eliminare tutti i file in / boot per i kernel che non contano con l'espansione delle bretelle per mantenerti sano. Ricorda di escludere le attuali e due più recenti immagini del kernel. Esempio: sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*. Puoi anche usare un intervallo con la sintassi {80..84}.

sudo apt-get -f install per ripulire ciò che rende scortese l'installazione parziale.

Se si verifica un errore che include una riga come "Errore interno: impossibile trovare l'immagine (/boot/vmlinuz-3.2.0-56-generic)", quindi eseguire il comando sudo apt-get purge linux-image-3.2.0-56-generic (con la tua versione appropriata).

Finalmente, sudo apt-get autoremove per cancellare i vecchi pacchetti immagine del kernel che sono stati resi orfani dal boot pulito manuale.

Suggerimento, corri sudo apt-get update e sudo apt-get upgrade per occuparsi di eventuali aggiornamenti di cui è stato eseguito il backup durante l'attesa per scoprire la partizione completa / di avvio.

Suggerimento2, revisione https://help.ubuntu.com/community/AutomaticSecurityUpdates e prendere in considerazione l'impostazione Unattended-Upgrade :: Remove-Unused-Dependencies su true in /etc/apt/apt.conf.d/50unattended-upgrades. Questo sarà l'equivalente di eseguire l'autoremove dopo ogni aggiornamento della sicurezza per essere sicuri di ripulire i kernel inutilizzati, ma rimuoverà anche altre cose che pensa siano inutilizzate, salvandoti da questo problema in futuro.


254
2018-03-07 16:54



In questo modo ho l'ultima per il prossimo riavvio e poi quella prima nel caso in cui qualcosa si rompa in quello. Di solito ho un sacco di spazio quindi non mi fa male avere alcuni e soddisfa la mia paranoia per non avere abbastanza opzioni di backup in ogni scenario. - flickerfly
Non ho mai avuto un problema causato da aggiornamenti non presidiati. Posso immaginare scenari in cui questo potrebbe essere un problema in gran parte intorno alle dipendenze che vengono persi su installazioni non deb-pacchettate. Si supponga di installare php, decidere di disinstallarlo e installare una versione più recente dal sorgente. Questa versione ha dipendenze fornite dall'installazione precedente, ma apt non sa che è ancora necessario. La prossima volta che esegui la rimozione automatica, quelle dipendenze spariranno. Se automatizzato, questo potrebbe essere un po 'confuso. Se non si installa all'esterno dei repository, credo che sia completamente sicuro. - flickerfly
Dopo aver visto questo in parecchi server virtuali di vsphere (dove i kernel venivano automaticamente aggiornati ma non rimossi in seguito), scrissi a script python per automatizzarlo. Mi piacerebbe avere più occhi su di esso - EvanK
Se usi dpkg --purge su un avvio completo otterrai quanto segue $ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic - flickerfly
Questo è molto utile. ha funzionato per me - deepdive


C'è documentazione su questo a https://help.ubuntu.com/community/RemoveOldKernels

In breve: uso

sudo apt-get autoremove --purge
# and/or:
sudo purge-old-kernels

Il purge-old-kernels lo strumento può essere installato tramite sudo apt install byobu. Ecco la descrizione dalla sua manpage:

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

Se si desidera una soluzione copia-incolla, ReSearchIT Eng ha suggerito quanto segue:

sudo apt install -y byobu
sudo purge-old-kernels -y --keep 1
sudo apt-get -y autoremove --purge

43
2017-08-09 09:12



Nel mio caso, apt non funziona a causa di un kernel in sospeso e la correzione suggerita è un catch-22: - James Bowery
Ho dovuto risolvere prima i pacchetti rotti con askubuntu.com/a/304388/284313 Dopo che la tua soluzione ha funzionato. - James Bowery
Penso che questa dovrebbe essere la soluzione accettata fin d'ora. - Fran Marzoa
questo è molto più sicuro della risposta accettata. credo apt-get autoremove --purge dovrebbe essere sufficiente, però. - Woodrow Barlow


Ho scoperto che è molto più facile abbandonare la piccola partizione e spostarsi /boot alla radice. Ciò impedisce anche eventuali problemi di spazio in futuro.

Prima sposta i tuoi dati dalla partizione di avvio a root (esegui come sudo -s):

cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot

Rimuovi (o commenta) il /boot entrata in /etc/fstab:

vim /etc/fstab

Aggiorna grub e assicurati che tutto sia corretto:

update-grub

apt ora dovrebbe essere in grado di aggiornare senza problemi.

Questo lascia una partizione 200mb inutilizzata (che potresti usare per qualcos'altro se ritieni che valga la pena).


6
2018-04-14 07:43



Questa è una buona idea, ma non funziona se si desidera avere la crittografia dell'intero disco per la partizione di root. - Paŭlo Ebermann


Rimozione di vecchi kernel (per liberare spazio su / boot) vedere: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")

Quindi corri

sudo apt-get update

3
2017-08-14 14:09



questo era l'unico che funzionava ... ottima soluzione - John
Migliore risposta! Questa è l'unica soluzione che ha funzionato per me; autoremove è stupido; prova a reinstallare i kernel con dipendenze non soddisfatte prima di rimuoverle ufficialmente. Stavo andando in circolo a corto di spazio ancora e ancora. Questa risposta è d'oro. - Lonnie Best


sudo apt-get autoremove

Questo rimuove tutti tranne gli ultimi 2 kernel. Testato su Ubuntu 16.04 LTS quando /boot era al 100% della capacità e apt-get upgrade fallito è l'ultimo aggiornamento del kernel. Il kernel autoremove è iterativo, quindi se hai diversi kernel, verranno rimossi uno alla volta. Quindi sii paziente.


2
2017-10-03 16:39





Perché farlo a mano quando puoi farlo con uno strumento? Sai che ne avrai di nuovo bisogno in 30 secondi, perché impiegano 30 secondi per inviare un nuovo aggiornamento kernal in questi giorni = P

Raccomando di usare questo strumento, bootnukem

git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh

Poi

sudo bootnukem --dry-run

Rimuovere --dry-run una volta confermato, sembra sicuro


0
2018-05-04 17:28