Vraag Wat is de veiligste manier om op te schonen / opstarten partitie?


Ik heb 200 MB toegewezen gekregen voor de /boot partitie. Telkens wanneer ik de kernel probeer bij te werken, ontvang ik een foutmelding die in hoofdlijnen aangeeft /boot is vol.

Wat kan ik doen om op te ruimen /boot en verwijder / reserveer de oudere kernels?


258
2017-09-14 19:41


oorsprong


Zie de Ubuntu Community Wiki - jarno


antwoorden:


Opdrachtregelmethode:

Controleer eerst je kernelversie, zodat je de kernel-afbeelding in gebruik niet verwijdert, met:

uname -r

Voer nu deze opdracht uit voor een lijst met geïnstalleerde kernels:

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

en verwijder de kernels die je niet meer wilt / nodig hebt door dit te doen:

sudo apt-get remove linux-image-VERSION

Vervang VERSION door de versie van de kernel die u wilt verwijderen.

Als je klaar bent met het verwijderen van de oudere kernels, kun je dit uitvoeren om ooit pakketten te verwijderen die je niet meer nodig hebt:

sudo apt-get autoremove

En als laatste kun je dit uitvoeren om de lijst met grub-kernel te updaten:

sudo update-grub

312
2017-09-14 20:34



de opdrachtregel werkte als een charme, bedankt! - koba101
sudo dpkg --list 'linux-image*' | grep ^ii maakt het een beetje gemakkelijker om alleen de geïnstalleerde kernels te zien. Ook denk ik dat het update-grub is ongevaarlijk maar niet strikt noodzakelijk, dat automatisch wordt uitgevoerd wanneer u een kernel verwijdert. - Nelson
Gebruik sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo "" om de lijst met pakketnamen te zien die gebruikt kunnen worden sudo apt-get remove. head -n -3 wordt gebruikt om 3 meest recente kernels over te houden in het systeem. - Sithsu
sudo apt-get autoremove zou moeten volstaan ​​(meestal laat je de laatste 3 kernels achter) - mbx
Dit is een goed antwoord, maar ik betwijfel of het in de meeste (zo niet alle) gevallen kan werken: het probleem is dat /boot is vol, dus apt-get zal mislukken met een of andere foutcode. Het antwoord hieronder is een beetje "hackier" (ik moet bekennen dat ik mezelf moest stelen om dat uit te geven rm -rf in /boot) maar de enige die waarschijnlijk in deze situatie zal werken. - Marco


OPMERKING: dit is alleen als u apt niet kunt gebruiken om op te ruimen vanwege een 100% volledige / opstartprocedure

Als apt-get niet werkt omdat je / boot 100% is, moet je eerst opschonen / booten. Dit heeft waarschijnlijk een kernel-upgrade van een gedeeltelijke installatie opgevangen, wat betekent dat apt vrijwel volledig bevroor is en blijft vertellen dat je moet rennen apt-get -f install ook al blijft dat bevel falen.

Download de lijst met kernelafbeeldingen en bepaal waar je zonder kunt. Deze opdracht toont geïnstalleerde kernels, behalve de momenteel draaiende kernels sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`. Let op de twee nieuwste versies in de lijst. U hoeft zich geen zorgen te maken over de actieve versie omdat deze hier niet wordt vermeld. Je kunt dat controleren met uname -r.

Creëer een commando om alle bestanden in / boot voor kernels te verwijderen die er niet toe doen om brace-uitbreiding te gebruiken om je gezond te houden. Vergeet niet om de huidige en de twee nieuwste kernelafbeeldingen uit te sluiten. Voorbeeld: sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*. U kunt ook een bereik gebruiken met de syntaxis {80..84}.

sudo apt-get -f install om op te ruimen wat er zo chagrijnig over een gedeeltelijke installatie maakt.

Als u een fout tegenkomt met een regel als "Interne fout: Kon afbeelding niet vinden (/boot/vmlinuz-3.2.0-56-generiek)", voer dan de opdracht uit sudo apt-get purge linux-image-3.2.0-56-generic (met uw juiste versie).

Tenslotte, sudo apt-get autoremove om de oude kernelbeeldpakketten te wissen die verweesd zijn door het handmatig opschonen van de boot.

Suggestie, rennen sudo apt-get update en sudo apt-get upgrade om te zorgen voor eventuele upgrades waarvan een back-up is gemaakt terwijl u wacht tot u de volledige / opstartpartitie ontdekt.

Suggestie 2, recensie https://help.ubuntu.com/community/AutomaticSecurityUpdates en overweeg het instellen van Unattended-Upgrade :: Remove-Unused-Dependencies to true in /etc/apt/apt.conf.d/50unattended-upgrades. Dit is het equivalent van het uitvoeren van autoremove na elke beveiligingsupdate om er zeker van te zijn dat je ongebruikte kernels opruimt, maar ook andere dingen waarvan het denkt dat ze ongebruikt zijn verwijdert, zodat je in de toekomst dit probleem kunt oplossen.


254
2018-03-07 16:54



Op deze manier heb ik het laatste voor de volgende reboot en daarna de vorige voor het geval er iets breekt. Meestal heb ik voldoende ruimte, dus het doet geen pijn om er een paar te hebben en het voldoet aan mijn paranoia omdat ik in geen enkel scenario voldoende back-upopties heb. - flickerfly
Ik heb nog nooit een probleem gehad dat werd veroorzaakt door onbeheerde upgrades. Ik kan me scenario's voorstellen waarbij dit een probleem zou kunnen zijn, meestal afhankelijkheden die verloren gaan bij niet-deb-pakketinstallaties. Zeg dat je php hebt geïnstalleerd, besluit om het te verwijderen en een nieuwere versie van de bron te installeren. Deze versie heeft afhankelijkheden geleverd door de vorige installatie, maar apt is zich er niet van bewust dat dit nog steeds vereist is. De volgende keer dat u automatisch verwijderen uitvoert, zijn die afhankelijkheden verdwenen. Als dit is geautomatiseerd, kan dit een beetje verwarrend zijn. Als je niet buiten de repositories installeert, denk ik dat het volkomen veilig is. - flickerfly
Na het zien van dit in verscheidene vsphere virtuele servers (waar kernels automatisch werden geüpgraded maar daarna niet werden verwijderd), schreef ik een python-script om het te automatiseren. Ik zou er graag meer ogen op willen hebben - EvanK
Als je gebruikt dpkg --purge bij een volledige start krijgt u het volgende $ 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
Dit is erg handig. werkte voor mij. - deepdive


Er is hierover documentatie bij https://help.ubuntu.com/community/RemoveOldKernels

Samenvattend: gebruik

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

De purge-old-kernels tool kan worden geïnstalleerd via sudo apt install byobu. Hier is de beschrijving van zijn man-pagina:

Dit programma verwijdert oude kernel- en headerpakketten uit de   systeem, schijfruimte vrij. Het zal het momenteel nooit verwijderen   draaiende kernel. Standaard zal het tenminste de laatste 2 kernels bevatten,   maar de gebruiker kan die waarde overschrijven met behulp van de --keep  parameter.

Als je een copy-paste-oplossing wilt, stelt ReSearchIT Eng het volgende voor:

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

43
2017-08-09 09:12



In mijn geval werkt apt niet vanwege een in afwachting zijnde kernel en de voorgestelde oplossing is een catch-22: - James Bowery
Ik moest gebroken pakketten eerst repareren askubuntu.com/a/304388/284313 Daarna werkte je oplossing. - James Bowery
Ik denk dat dit vanaf nu de geaccepteerde oplossing zou moeten zijn. - Fran Marzoa
dit is veel veiliger dan het geaccepteerde antwoord. I denk apt-get autoremove --purge zou echter voldoende moeten zijn. - Woodrow Barlow


Ik vond dat het veel gemakkelijker is om de kleine partitie te verlaten en te verplaatsen /boot naar de root. Dit voorkomt ook dat er in de toekomst problemen optreden met de ruimtevaart.

Verplaats eerst uw gegevens van de opstartpartitie naar de root (voer ze uit als sudo -s):

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

Verwijder (of becommentarieer) het /boot binnenkomst /etc/fstab:

vim /etc/fstab

Update grub en controleer of alles klopt:

update-grub

apt moet nu probleemloos kunnen upgraden.

Dit laat een ongebruikte 200mb-partitie (die je voor iets anders zou kunnen gebruiken als je het de moeite waard vindt).


6
2018-04-14 07:43



Dit is een goed idee, maar werkt niet als u volledige-schijf-encryptie voor uw rootpartitie wilt hebben. - Paŭlo Ebermann


Oude kernels verwijderen (om ruimte vrij te maken op / boot) zien: 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]+//')")

Ren dan

sudo apt-get update

3
2017-08-14 14:09



dit was de enige die werkte ... geweldige oplossing - John
Beste antwoord! Dit is de enige oplossing die voor mij werkte; autoremove is dom; het probeert alle kernels met niet-afhankelijke afhankelijkheden opnieuw te installeren voordat deze officieel worden verwijderd. Ik ging steeds weer in cirkels door de ruimte. Dit antwoord is goud. - Lonnie Best


sudo apt-get autoremove

Dit verwijdert alle behalve de laatste 2 kernels. Getest op Ubuntu 16.04 LTS wanneer /boot was op 100% capaciteit en apt-get upgrade is mislukt de laatste kernel-upgrade. De kernel autoremove is iteratief, dus als je meerdere kernels hebt, worden ze één voor één verwijderd. Dus wees geduldig.


2
2017-10-03 16:39





Waarom doe je het met de hand als je het met een gereedschap kunt doen? Je weet dat je het over 30 seconden weer nodig zult hebben, omdat het 30 seconden duurt voordat ze deze dagen een nieuwe kernal-update pushen = P

Ik raad aan deze tool te gebruiken, bootnukem

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

Dan

sudo bootnukem --dry-run

Verwijderen --dry-run zodra je bevestigt dat het er veilig uitziet


0
2018-05-04 17:28