Vraag Hoe maak ik meer ruimte vrij in / opstarten?


Mijn /boot partitie is bijna vol en ik krijg een waarschuwing elke keer dat ik mijn systeem opnieuw start. Ik heb al oude kernelpakketten (linux-headers ...) verwijderd, eigenlijk heb ik dat gedaan om een ​​nieuwere kernelversie te installeren die bij de automatische updates kwam.

Na het installeren van die nieuwe versie is de partitie bijna weer vol. Dus wat kan ik nog meer verwijderen? Zijn er nog andere bestanden gekoppeld aan de oude kernelafbeeldingen?

Hier is een lijst met bestanden die op mijn staan /boot partitie:

:~$ ls /boot/
abi-2.6.31-21-generic         lost+found
abi-2.6.32-25-generic         memtest86+.bin
abi-2.6.38-10-generic         memtest86+_multiboot.bin
abi-2.6.38-11-generic         System.map-2.6.31-21-generic
abi-2.6.38-12-generic         System.map-2.6.32-25-generic
abi-2.6.38-8-generic          System.map-2.6.38-10-generic
abi-3.0.0-12-generic          System.map-2.6.38-11-generic
abi-3.0.0-13-generic          System.map-2.6.38-12-generic
abi-3.0.0-14-generic          System.map-2.6.38-8-generic
boot                          System.map-3.0.0-12-generic
config-2.6.31-21-generic      System.map-3.0.0-13-generic
config-2.6.32-25-generic      System.map-3.0.0-14-generic
config-2.6.38-10-generic      vmcoreinfo-2.6.31-21-generic
config-2.6.38-11-generic      vmcoreinfo-2.6.32-25-generic
config-2.6.38-12-generic      vmcoreinfo-2.6.38-10-generic
config-2.6.38-8-generic       vmcoreinfo-2.6.38-11-generic
config-3.0.0-12-generic       vmcoreinfo-2.6.38-12-generic
config-3.0.0-13-generic       vmcoreinfo-2.6.38-8-generic
config-3.0.0-14-generic       vmcoreinfo-3.0.0-12-generic
extlinux                      vmcoreinfo-3.0.0-13-generic
grub                          vmcoreinfo-3.0.0-14-generic
initrd.img-2.6.31-21-generic  vmlinuz-2.6.31-21-generic
initrd.img-2.6.32-25-generic  vmlinuz-2.6.32-25-generic
initrd.img-2.6.38-10-generic  vmlinuz-2.6.38-10-generic
initrd.img-2.6.38-11-generic  vmlinuz-2.6.38-11-generic
initrd.img-2.6.38-12-generic  vmlinuz-2.6.38-12-generic
initrd.img-2.6.38-8-generic   vmlinuz-2.6.38-8-generic
initrd.img-3.0.0-12-generic   vmlinuz-3.0.0-12-generic
initrd.img-3.0.0-13-generic   vmlinuz-3.0.0-13-generic
initrd.img-3.0.0-14-generic   vmlinuz-3.0.0-14-generic

Momenteel gebruik ik de 3.0.0-14-generic kernel.


524
2017-12-22 10:06


oorsprong


Het is de moeite waard te vermelden dat niet elke Ubuntu-installatie een aparte / boot-partitie heeft - vaak zal het allemaal maar één grote partitie zijn. Dit antwoord is van toepassing op degenen die wel een aparte / boot-partitie hebben. Degenen die LVM of "full disk" -encryptie gebruiken, hebben een aparte / boot nodig, anders kan dit optioneel zijn. - thomasrutter
Als iemand anders hetzelfde probleem heeft als ik: nadat / zonder ruimte is overgebleven, zal "apt-get-upgrade" mislukken bij het opnieuw genereren van initrd-bestanden voor de kernels die zijn geïnstalleerd of die het script van de update-initramfs gelooft, zijn geïnstalleerd door de inhoud van / var / lib / initramfs-tools. In deze situatie kan men oude kernels niet verwijderen met apt-get omdat de fscking / boot-partitie geen ruimte over heeft op het apparaat. Men kan dit doen met "dpkg-P" gevolgd door het opruimen van het corresponderende item in / boot (naar vrije ruimte) en / var / lib / initramfs-tools (de initrd-afbeelding zal niet worden gegenereerd). - wojci
Een belangrijk punt voor de juiste antwoorden is dat zij u vertellen om de pakketjes bevat de oudere versies van de kernel. Veel webpagina's die dit probleem aanpakken, raden aan de. Rechtstreeks te verwijderen bestanden in de / boot-partitie; dat kan een tijdje werken, maar je kunt uiteindelijk een pakket bijwerken dat opnieuw bestanden maakt die ontbreken voor de kernelversies die pakketten bevatten, waardoor je je ruimtegebrek hebt. - kgrittn
help.ubuntu.com/community/RemoveOldKernels - jarno


antwoorden:


Je hebt veel ongebruikte kernels. Verwijder alle behalve de laatste kernels met:

sudo apt-get purge linux-image-{3.0.0-12,2.6.3{1-21,2-25,8-{1[012],8}}}

Dit is steno voor:

sudo apt-get purge linux-image-3.0.0-12 linux-image-2.6.31-21 linux-image-2.6.32-25 linux-image-2.6.38-10 linux-image-2.6.38-11 linux-image-2.6.38-12 linux-image-2.6.38-8

De. Verwijderen linux-image-x.x.x-x pakket zal ook verwijderen linux-image-x.x.x-x-generic.

De headers zijn geïnstalleerd in /usr/src en worden gebruikt bij het bouwen van out-tree kernelmodules (zoals het eigen nvidia-stuurprogramma en virtualbox). De meeste gebruikers zouden deze headerpakketten moeten verwijderen als het bijpassende kernelpakket (linux-image-*) is niet geïnstalleerd.

Ga als volgt te werk om alle geïnstalleerde kernels weer te geven:

dpkg -l linux-image-\* | grep ^ii

Eén opdracht om alle kernels en headers weer te geven die kunnen worden verwijderd, met uitzondering van de actueel draaiende kernel:

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

Het selecteert alle pakketten met de naam die beginnen met linux-headers-<some number> of linux-image-<some number>, drukt de pakketnamen af ​​voor geïnstalleerde pakketten en sluit vervolgens de huidige geladen / draaiende kernel (niet noodzakelijkerwijs de laatste kernel!). Dit past in de aanbeveling om een ​​nieuwere kernel te testen voordat oudere, gekende-naar-werk-kernels worden verwijderd.

Dus, na het upgraden van kernels en opnieuw opstarten om het te testen, kun je alle andere kernels verwijderen met:

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

600
2017-12-24 14:34



Fantastisch antwoord. Nog een stukje info zou kunnen helpen: hoe weet je (zeker) welke van de kernels je gebruikt? Waarschijnlijk kun je niet zomaar aannemen dat dit de laatste is ... Bewerk: En het looks zoals het antwoord is uname -a. Waarschijnlijk het beste om ervoor te zorgen dat er geen in afwachting zijnde restart-to-install-new-kernel is (zoals ik deed; maar ik zag de wanverhouding tussen uname -a en de "nieuwste" kernel). - T.J. Crowder
@freddyb gedaan. Merk op dat de commando's worden afgedrukt / verwijderd kernels anders dan de geladen / opgestarte. - Lekensteyn
Als apt-get purge mislukt vanwege niet-afhankelijke afhankelijkheden, kunt u het advies volgen op askubuntu.com/questions/171209/... - svandragt
Zeer grondig antwoord en werkt nog steeds ... en nog steeds nodig in 2014. Nogal belachelijk dat het nog steeds niet automatisch wordt gedaan door de GUI-tools. - allprog
@ byf-ferdy De kernel is een essentieel onderdeel van het OS, als de nieuwste versie op de een of andere manier niet volledig werkt met je hardware, dan kun je nog steeds een andere versie selecteren om van op te starten. Een leuke functie zou waarschijnlijk iets zijn dat alle automatisch geïnstalleerde kernels ouder dan een maand verwijdert (behalve de laatste twee). - Lekensteyn


Je opstartpartitie is vol. Omdat dit een kernel-update is, worden deze bestanden naar de opstartpartitie gekopieerd, zodat u ze moet opruimen. Hier is een blogpost die je laat zien hoe je de oude kernelafbeeldingen met één commando kunt wissen. Ik zal een basisoverzicht geven van de methode. Gebruik deze opdracht om de huidige versie van uw kernel af te drukken:

uname -r

Gebruik vervolgens deze opdracht om alle kernels die je hebt geïnstalleerd die niet je nieuwste kernel zijn, af te drukken:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]'

Zorg ervoor dat uw huidige kernel niet in die lijst staat. Merk op hoe dit de meerderheid is van het laatste commando (beneden). Om deze oude kernels te verwijderen en verwijderen, wil je deze argumenten naar:

sudo apt-get -y purge

Nu kunnen we alles doen wat we willen door deze laatste twee bevelen te combineren in deze onheilige rotzooi:

dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e '[0-9]' | xargs sudo apt-get -y purge

En die ene opdracht zorgt voor alles voor je. Ik zal bevestigen dat dit perfect werkt, maar nooit iemand op internet vertrouwt. :) Voor meer informatie geeft de blogpost een zeer goede uitleg over wat elk deel van de opdracht zo leest, zodat u tevreden bent dat het doet wat u wilt.


200
2018-02-21 03:38



Dit werkte prima, bedankt. - Michael Durrant
dit komt ook overeen met linux-libc-dev: amd64 - Frederick Nord
wat zal de onbedoelde verwijdering van "linux-libc-dev: amd64" veroorzaken? - ConfusedStack
@FrederickNord bedankt voor de heads-up. Dit verholpen. Het zou een aantal problemen hebben veroorzaakt bij het compileren van c-programma's. - dward
Het commando klinkt goed, maar als ik het uitvoer krijg ik dezelfde fout die ik krijg als ik iets wil installeren en het kan het niet doen omdat de boot vol is: --------------- ----------- De volgende pakketten hebben niet-afhankelijke afhankelijkheden: linux-image-extra-4.2.0-27-generiek: Afhankelijk van: linux-image-4.2.0-27-generiek maar het gaat niet te installeren linux-image-extra-4.2.0-30-generiek: Afhankelijk van: linux-image-4.2.0-30-generiek maar het zal niet worden geïnstalleerd - Alex


sudo apt-get autoremove

Met deze opdracht wordt de taak automatisch uitgevoerd.


94
2017-11-05 05:58



Zoals de naam al doet vermoeden, is apt-get AUTOremove een geautomatiseerde operatie waarbij het systeem zijn "beste gok" neemt wat u probeert te bereiken. Het mag niet worden gebruikt als een vervanging voor het systeembeheer van gezond verstand. Het probleem met deze aanpak: Als u (of een update) een pakket verwijdert dat deel uitmaakt van deze afhankelijkheidslijst, wil de functie voor automatisch verwijderen alle andere pakketten in de lijst met afhankelijkheden verwijderen, zodat u een systeem zonder bureaublad hebt (en soms zelfs met een volledig kapot systeem). - Rinzwind
Referentie: 1 van de vele bronnen voor deze opmerking hierboven: linuxquestions.org/questions/debian-26/... - Rinzwind
als linux-image-generic is geïnstalleerd en nieuwe kernels niet expliciet zijn geïnstalleerd, zal dit oude kernels verwijderen. Gezond verstand is om geen wijzigingen in het systeem te accepteren zonder ze eerst te lezen. Als het gezond verstand is gebruikt voordat dit commando wordt gebruikt, zijn er geen problemen. - mchid
@Rinzwind - Deze opdracht heeft 250 mb van mijn schijfruimte geleegd door oude 'linux headers' te verwijderen - Chinmaya B
autoremove werkt indien gebruikt voor er is een uit-ruimte-conditie. Zodra apt echter geen ruimte meer heeft en afbreekt (en de gebruiker merkt uiteindelijk het probleem op), is het te laat om autremove of een andere apt-gebaseerde oplossing uit te voeren. Als dat het geval is voor u, probeer dan een van de op dpkg gebaseerde oplossingen. - user535733


De Synaptic Package Manager kan worden gebruikt om gemakkelijk oude kernelafbeeldingen te selecteren en te verwijderen. Screenshot of Synaptic Package Manager

Als u Synaptic nog niet hebt geïnstalleerd:

sudo apt-get install synaptic

Start de applicatie en selecteer de getoonde opties.

Je zou in staat moeten zijn om alle "linux-" pakketten met de versie "2.6.x" te markeren, waarbij x tussen 31 en 38 is, afhankelijk van de bestanden in je / bootmap.

Klik met de rechtermuisknop op elk van die linux-pakketten en kies de optie "Markeren voor volledige verwijdering". Klik ten slotte op de knop Toepassen. Hiermee worden alle bestanden en bijbehorende bestanden verwijderd. Jouw /boot map zou nu een beetje opgeruimder moeten zijn.


38
2017-12-24 14:34



Ik ben op 14.04. Ik heb deze situatie in het verleden afgehandeld via de opdrachtregel, maar ik heb besloten om deze methode vandaag te proberen ... voor mij waren mijn linux-afbeeldingen gelokaliseerd onder geïnstalleerd (handmatig), niet geïnstalleerd (lokaal of verouderd) - Ryan
Oh nee. Ik kan Synaptic niet installeren omdat er geen spatie op staat /boot! - John McGehee
@JohnMcGehee fsck en parted moeten dat probleem voor u oplossen. - FlipMcF


Bedankt voor je gedetailleerde bericht van je probleem, dit zette me op de goede weg. Hoewel het handig is om eerdere kernelbestanden te behouden, kunt u ze allemaal in één keer verwijderen, vink deze post aan:
Alle ongebruikte linialen, afbeeldingen en modules van Linux-kernel verwijderen

Gereed via de opdrachtregel. Als u dit via extern gebruik doet, werkt iets als WINSCP om een ​​terminalsessie te openen en het gewoon in te plakken, zeer goed.

Hier wordt het gekopieerd van de artikellink, ik stel voor dat je het volledige artikel leest:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

24
2018-06-01 12:53





Dit is een nieuw antwoord op een oude vraag, maar een eenvoudige manier om dit ding (en meer) schoon te maken, is door het te installeren Ubuntu Tweak. Naar installeer het:

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

dan kun je Ubuntu Tweak uitvoeren, naar het tabblad "portier" gaan en vanaf hier is het een kwestie van drie klikken:

Ubuntu tweak janitor for old kernels

Het is beter om de laatste kernel (je weet maar nooit) of een bekende werkende kernel voor de veiligheid te verlaten, hoewel; maar dat is eenvoudig aanpasbaar.

Je kunt dezelfde tool gebruiken om veel dingen te reinigen - onthoud gewoon dat als je thumbnail cache of TBC cache opruimt, het systeem ze opnieuw moet opbouwen als ze nodig zijn.


22
2017-11-25 13:11



Ik heb geprobeerd om Ubuntu tweak te installeren en ook naar de repository-website te gaan. Er staat dat het alleen om 13.10 uur en eerder is. Heb je een bijgewerkte versie voor 15.04? - JayCouture.com
@ JayCouture.com De versie op de site is voor 14.04 (de "voor 13.10 en eerder" is een link naar oudere releases). Ik negeer of er een versie is voor 14.10 of 15.04. - Rmano


Ik kon het probleem oplossen door het te gebruiken dpkg om de pakketten rechtstreeks te verwijderen. Hoewel de pakketten nog steeds worden vermeld in dpkg -l, de bestanden zijn verwijderd van /boot, ruimte vrijmaken.

phrogz@planar:/boot$ sudo dpkg --remove linux-image-2.6.32-30-server
(Reading database ... 145199 files and directories currently installed.)
Removing linux-image-2.6.32-30-server ...
Running postrm hook script /usr/sbin/update-grub.
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-35-server
Found linux image: /boot/vmlinuz-2.6.32-34-server
Found initrd image: /boot/initrd.img-2.6.32-34-server
Found linux image: /boot/vmlinuz-2.6.32-33-server
Found initrd image: /boot/initrd.img-2.6.32-33-server
Found linux image: /boot/vmlinuz-2.6.32-32-server
Found initrd image: /boot/initrd.img-2.6.32-32-server
Found linux image: /boot/vmlinuz-2.6.32-31-server
Found initrd image: /boot/initrd.img-2.6.32-31-server
Found memtest86+ image: /memtest86+.bin
done

# Repeat for kernels -31 and -32 and -33, up to (but not including)
# the version listed by `uname -a`

Na dit, apt-get -f install mijn afhankelijkheidsproblemen opgelost, en alles ging goed met de wereld.

Ik accepteer dit antwoord van mij echter niet, omdat ik nog steeds moet weten of ik het mijne moet vergroten /boot maat of iets anders doen.


17
2017-12-03 18:47



U moet in de eerste plaats niet over een afzonderlijke / opstartpartitie beschikken, of u moet de grootte ervan vergroten omdat 100 MB te klein is. - psusi
Bedankt, ik verwijder via: sudo dpkg --remove linux-headers-3.5.0-28* - TiloBunt
en sudo dpkg --remove linux-image-3.5.0-28* voor de afbeelding, gecontroleerd via df -h - TiloBunt


Je kunt stoppen met het gebruik van een aparte / boot-partitie, dan zul je daar niet zo'n beperkte ruimte hebben. Hiertoe ontkoppelt u de partitie en koppelt u deze vervolgens ergens anders naartoe en kopieert u alle bestanden daar naar de map / boot in uw hoofdpartitie. Verwijder vervolgens het item uit / etc / fstab en installeer grub opnieuw. Bijvoorbeeld (u moet de juiste partitie gebruiken):

sudo -s
umount /boot
mount /dev/sda2 /mnt
cp -a /mnt/* /boot/
umount /mnt
gedit /etc/fstab
grub-install /dev/sda

Je kunt dan gparted gebruiken om de oude / boot-partitie te verwijderen en eventueel de root-partitie uitbreiden om die ruimte te gebruiken. Om de root partitie uit te breiden, moet je booten vanaf de livecd, en de vrije ruimte moet onmiddellijk naar rechts zijn. Als de / boot-partitie zich momenteel links van de root-partitie bevindt, moet u eerst de root-partitie naar links verplaatsen en vervolgens uitbreiden, maar dit kan heel, heel lang duren, dus misschien niet de moeite waard de problemen.


11
2017-12-22 16:38



Verhuizen / opstarten naar mijn hoofdpartitie is geen oplossing voor mij, omdat alles behalve / boot is gecodeerd. Dat zou je op mijn vraag niet kunnen weten, sorry. - user6722
Dit is een goede oplossing als de bovenstaande oplossingen niet werken omdat er helemaal geen ruimte is op het opstartvolume of als u herhaaldelijk het probleem met de "lege schijf" hebt. Lees eerst eerst waarom het soms nodig is om een ​​/ boot-partitie te hebben: (help.ubuntu.com/community/DiskSpace) - svandragt
@svandragt, er is eigenlijk geen reden meer om een ​​/ boot-partitie nodig te hebben deze dagen. Over het enige dat overblijft is als je bios kapot is en de hele schijf niet kan zien, en elke machine die in het laatste decennium werd gemaakt, heeft niet zo'n beperking. Andere oudere zaken zoals het gebruik van raid of LVM worden nu goed behandeld door grub2. - psusi
Er zijn een paar redenen om een ​​aparte opstartpartitie te hebben. Maar ik ben er niet zeker van dat de voordelen de verhoogde complexiteitsinstelling waard zijn. 1. OS kan profiteren van snellere opstart via ext2. 2. De beveiliging kan worden verhoogd door / boot op te zetten als RO. (rootkits, etc.), of zelfs ongemount blijven tijdens OS runtime. 3. grub (1) heeft nog (enkele) problemen met ext4. 4. Vereist voor het uitvoeren van lvm (grubv1). Hoewel dit niet van toepassing is op de standaard ubuntu-instelling. - David Cahill
lsblk kan worden gebruikt om te bepalen welke partitie wat is - Mr Purple


Voor mij allebei apt-get purge en dpkg --remove beide zijn mislukt. Dus moest ik een paar oudere kernel-images van / boot with verwijderen rm -f.


5
2017-10-14 09:22



Dit is geen goede manier om pakketten te verwijderen. Hoewel dit antwoord niet erg specifiek is over waarom het verwijderen ervan op de juiste manier is mislukt, weet ik zeker dat als die informatie werd gegeven (in een afzonderlijke vraag natuurlijk) we zouden kunnen proberen de oorzaak van het probleem te achterhalen. - thomasrutter
Ik geloof dat het is mislukt, want /boot partitie was vol. Deze commando's proberen eerst de kernel te upgraden naar recent en er mee te crashen No space left on device tijdens het genereren initrd.img - vp_arth
WAARSCHUWING, het direct verwijderen van bestanden kan tot problemen leiden, omdat een update van het Linux-firmware-pakket het initrd.img-bestand voor elke versie waarvan wordt gedacht dat het is geïnstalleerd, kan reconstrueren op basis van pakketinformatie. Zien: askubuntu.com/questions/865577/... - kgrittn
bedankt, dit is de levensreddende definitieve oplossing als niets anders werkt. - Jeff Puckett