Vraag Waarom verwijdert Ubuntu geen oude kernels automatisch? [duplicaat]


Deze vraag heeft hier al een antwoord:

Ik vraag me af waarom Ubuntu de oude kernels niet automatisch zal verwijderen.

Zeker, niets is perfect en er kunnen dingen fout gaan, dus als een update niet werkt, is het misschien geweldig om een ​​back-up-kernel te hebben. Maar het zou ook voldoende zijn om gewoon de nieuwste kernel en die voor de laatste te bewaren en alle oudere kernel te verwijderen.

Is er een reden waarom Ubuntu dit niet automatisch doet?


91
2018-02-27 14:35


oorsprong


Kijk of hieronder goed genoeg is. Ik heb wat middelen bijeengebracht en er is veel twijfel over wat moet worden beschouwd als verwijderd. - Rinzwind
@Rinzwind verwijderen? Arch overschrijft ze simpelweg - en dan blijven sommige dingen onbruikbaar totdat je herstart (zoals iptables). - muru
"Waarom verwijdert Ubuntu geen oude kernels automatisch?" het doet. "Ik vraag me af waarom Ubuntu de oude kernels niet handmatig zal verwijderen." Ik heb geen idee wat je daarmee bedoelt. - Braiam
Het lijkt mij extreem dom dat ik elke tweede maand het bericht "opstart van schijfruimte" krijg en dan dit nogal technische probleem moet oplossen. Ik begrijp echt waarom ubuntu geen systeem is voor niet-technische gebruikers. - sunew
@sunew ja, dit probleem heeft de machine van mijn ouders die 12.04 draaide volledig gedood voor de volledige LTS-periode - vulde de inodetabellen van de schijf op! Er zou hier een verstandige standaard moeten zijn dat technische gebruikers (die opzettelijk verschillende kernels installeren) gemakkelijk kunnen overschrijven. - artfulrobot


antwoorden:


Is er een reden waarom Ubuntu dit niet automatisch doet?

Ik kan maar 1 reden zien: het werkt niet perfect; er is geen schone manier om op dit moment te beslissen wat de definitie van "oude kernels" is. "oud" betekent niet "ongebruikt" noch betekent het "ongewenst". En elke fout hierin zal de machine van een gebruiker doden.

Dus tot nu toe heeft de handmatige methode de voorkeur, omdat dit de kracht van het verwijderen in de handen van de gebruiker plaatst.


Middelen voor deze conclusie:

Ubuntu WIKI: Voorstel voor het verwijderen van oude kernels

Last-good-boot is volledig geïmplementeerd in Intrepid / 8.10 final, maar het is uitgeschakeld omdat het niet stabiel genoeg werd geacht. De instelling is een enkele regel in het bestand / etc / default / kernel-helper-rc.


Lanceerplatform: Moet aptitude een manier zijn om oude kernelversies te verwijderen?

apt-get heeft een autoremove-functie die alle pakketten verwijdert die niet nodig zijn als afhankelijkheden en die niet handmatig zijn geïnstalleerd. Sinds Ubuntu 14.04 moeten alle verouderde kernels en headers automatisch worden gemarkeerd als niet meer nodig, en dus kunnen worden opgeschoond met de opdracht apt-get autoremove. (Er zijn berichten dat dit nog niet volledig werkt). Ik ben niet op de hoogte van een feature in aptitude die vergelijkbaar is met apt-get's autoremove.


Ubuntu-devel: Door Distro geleverd mechanisme om oude kernels op te ruimen

Hoewel ik het erover eens ben dat het heel nuttig zou zijn en passend lijkt om de   opruimen automatisch, er is een kleine potentiële valkuil (of twee). Er zijn   verschillende smaken van kernels en mensen kunnen deze wel of niet opzettelijk hebben   parallel geïnstalleerd. Ook verschillende releases hadden soms een wisselende set   afhankelijke pakketten. Voor een tijdje zouden dit alleen linux-backports-modules moeten zijn   (er waren linux-ubuntu-modules en linux-restricted-modules). Hoewel dit   is niet zozeer een probleem.   Vanuit het oogpunt van het matchen van patronen zijn de generieke pae-kernels een beetje een   pijn als ze de neiging hebben om het "gebruik het laatste deel van een splitsing door" - "voor de smaak" te verpesten.   Maar goed, ik denk dat het belangrijkste punt de verschillende smaken is, dus een opruiming die dat wel is   automatisch moet de laatste drie van elk behouden, ook al heeft dit de neiging   laat meer kernels achter.


44
2018-02-27 15:02



Ik ben het ermee eens dat Ubuntu oude kernels niet automatisch mag verwijderen. Ik heb eens een situatie gehad dat nieuwere kernels een serieus probleem veroorzaakten met sommige software; tot dat probleem was opgelost, moest ik de oudste kernel behouden die werkte. Natuurlijk vermeed ik apt-get autoremove. - Paddy Landau
het zou op zijn minst een optie moeten zijn om autoremove alleen mijn .02 in te schakelen - mBardos
@mBardos is er (een soort van): Ubuntu Tweak heeft hiervoor een methode. - Rinzwind
@Rinzwind bedankt! ik zal het bekijken - mBardos
Betekent "oud" niet "niet één van de laatste 2 (of drie) kernels die moeten worden opgestart"? Tenzij je twee verschillende kernlijnen hebt geïnstalleerd? Hmm, ik veronderstel dat je misschien een oudere versie van een kernel gebruikt voor een andere installatie op een andere partitie. Maar er moet een standaardstatus zijn die wordt geannuleerd als u een soort funk-wizard bent. Of het zou op zijn minst standaard voldoende ruimte moeten toewijzen aan / boot, waar u zich jarenlang geen zorgen over hoeft te maken. Anders zullen oma's nooit linux draaien. - intuited


Er zijn hier twee dingen aan de hand:

  1. Nieuwe kernels zijn volledig nieuwe pakketten, geen bijgewerkte pakketten met een nieuwer versienummer, dus het installeren van een nieuwe kernelafbeelding vervangt geen oudere. Ze kunnen naast elkaar bestaan.

  2. Ubuntu gebruikt een reeks aptmagie om de laatste twee kernelversies te beschermen tegen 'apt-get autoremove' (de nieuwste en de laatst geopende kernelversie). Zie /etc/apt/apt.conf.d/01autoremove-kernels voor details.

Wat dit allemaal betekent is dat als je eenmaal opnieuw bent opgestart in de nieuwste kernel, 'apt-get autoremove' alle behalve de huidige en de laatst opgestarte kernelpakketten moet verwijderen.

Oude kernels stapelen zich nog steeds op in / boot omdat autoremove standaard niet is ingeschakeld in Ubuntu - je moet het ofwel om de zoveel tijd handmatig uitvoeren, of je moet het inschakelen.

Dit kan veranderen in 16.04 - a bugfix naar het pakket voor onbeheerde upgrades zal standaard autoremove van oude kernels inschakelen.


21
2018-02-27 23:08





Dit script zal het werk doen. Het zal alle kernels verwijderen die niet in gebruik zijn.

sudo 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

Anders dan dat, moet het verwijderen van kernels een vrij nieuw ding zijn. Ik heb één Ubuntu 14-systeem na het andere tegengekomen in dit nummer van een volledige opstartpartitie vanwege oude kernel-rommel.

Het kan het leven van minder ervaren gebruikers buitengewoon ingewikkeld maken. Het is eigenlijk een noob-val. Canonical zou dit moeten oplossen.


16
2018-03-08 09:18



Dit script is potentieel gevaarlijk: wanneer ik een systeemupdate installeer die een nieuwe kernel installeert, voer dan dit script uit voordat je opnieuw opstart, de nieuwe kernel wordt verwijderd in plaats van de oude kernel. Ik wil niet zeggen dat het een slecht script is, alleen dat je voorzichtig moet zijn wanneer je het moet noemen. - daniel kullmann
Bedankt! "0 geüpgraded, 0 nieuw geïnstalleerd, 48 te verwijderen en 5 niet geüpgraded. Na deze operatie zal 3,322 MB schijfruimte worden vrijgegeven." - thenickdude
Het is verstandig om dit script zonder te draaien | xargs ... deel om te controleren welke pakketten worden verwijderd, voordat ze daadwerkelijk worden verwijderd: sudo dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' - PeterM
@PeterM, en sudo is niet nodig voor dpkg. - jarno
Er is een afzonderlijke vraag over het script hier. - jarno


De eenvoudige manier om oude kernels te verwijderen is om ubuntu-tweak te gebruiken. U selecteert de Janitor-tag en vinkt het vakje Oude kern aan. Dat geeft je een lijst met kernels waarvan je denkt dat je die niet meer nodig hebt. U kunt ze allemaal selecteren en op Opschonen klikken en na een tijdje is de klus geklaard. Omdat ik een nerveuze instelling had, controleerde ik welke kernel ik gebruikte met uname -a maar dat stond niet op de lijst. Dit werkte op de laptop van mijn vrouw (die een nogal kleine opstartpartitie heeft en waarschuwingen vertoont) en de mijne (die goed werkte). Is iedereen het erover eens dat dit veilig is?


3
2018-02-28 12:22



Oh het verwijderen van kernels kan automatisch veilig worden gedaan; het is gewoon dat de persoon die verantwoordelijk is voor het maken van dit gebeurt niet zelfverzekerd genoeg is om te beweren dat hij voor iedereen kan beslissen dat een kernel van een specifiek systeem moet worden verwijderd. Oud betekent niet ongewenst;) - Rinzwind
Zoals @Rinzwind opmerkt, zijn er hier echt twee problemen. Hoe en wanneer / als om het te doen. Ik gebruikte ubuntu-tweak en het werkte, maar hield niet erg van KDE (dat ik gebruik). Als ik nu een kernel-update krijg, ga ik naar de muon gui-pakketbeheerder, zoek naar de kernel, vind de te verwijderen kernel, voeg het laatste nummer als 36 toe aan kernel - kernel 36, sorteer op geïnstalleerd en selecteer de 2 of 3 pakketten worden verwijderd. Het is makkelijk. Het is ook handmatig, dus als ik drivermodules heb gecompileerd die nog een oudere kernel nodig hebben, wordt die kernel pas verwijderd als ik daar klaar voor ben. - Joe


Ubuntu verwijdert alleen automatisch items die niet langer nodig zijn of die een veiligheidsrisico vormen ... Dus ik neem aan dat de reden hiervoor veiligheidsredenen is. Laten we zeggen om een ​​vreemde reden waarom een ​​nieuwe kernel onveilig wordt ... Dan zou je tijdelijk worden teruggeleid naar de oude kernel terwijl de nieuwe wordt verholpen. Ook kunnen nieuwe kernels worden geleverd met wijzigingen, dus sommige kernels zijn opt-in voor bijvoorbeeld het bijwerken van 14.04.1 tot 14.04.2 je kunt je aanmelden voor een nieuwe kernel, maar in april wanneer de nieuwe LTS-versie 15.04 uitkomt, heb je automatisch je kernt updates. Dus ik denk dat het voor veiligheidsdoeleinden is.

maar als je het wilt verwijderen probeer dan deze commandoregel

sudo apt-get autoremove

Dit zou alle onnodige software moeten verwijderen, zoals je oude kernel, zo niet proberen

sudo apt-get remove (kernels-name)

2
2018-02-27 14:54



"Laten we zeggen om een ​​vreemde reden dat een nieuwe kernel onveilig wordt ... Dan zou je tijdelijk teruggeleid worden naar de oude kernel terwijl de nieuwe wordt verholpen." Heeft u een bron voor deze claim? - John Kugelman
@JohnKugelman het zou niet gebeuren. Een nieuw pakket zou worden uitgebracht met de oplossing en mensen zouden ernaar upgraden. In het geval van extreem unfixable probleem, een oudere kernel zou worden verpakt met hoger versienummer (epoch verandering misschien) om de upgrade uit te voeren. - hobbs
"... wanneer de nieuwe LTS-versie 15.04 uitkomt ..." - 15.04 zal geen LTS zijn, tenzij er een belangrijke ondersteuningverschuiving door Canonical is waar ik nog niet van gehoord heb. - iGadget
eigenlijk wordt 15.04 de nieuwe LTS, maar de release zoals die voor alle releases hetzelfde is, wordt niet de nieuwe standaard LTS tot een specifieke datum nadat het nieuwe systeem is vrijgegeven ... ik geloof dat Canonical dit doet omdat ze willen zijn absoluut zeker dat het systeem volledig veilig is ... aangezien ik dit typ is 15.04 al vrijgegeven dus geef het een paar maanden en het zal een LTS zijn ... ik ben niet van plan om tot dan toe te upgraden ... niet veel hoe dan ook veranderd - Tactux
@TAC_Tux Dat is niet hoe Ubuntu LTS-releases doet. Je denkt misschien aan de manier waarop het Debian-project dingen doet. Dit is het huidige Ubuntu-releaseschema: wiki.ubuntu.com/LTS - Martijn Heemels


Ik raad Ubuntu Tweak aan om oude kernels te verwijderen. kijk hier:

Hoe verwijder ik oude kernelversies om het opstartmenu op te ruimen?


2
2017-10-22 09:00





Ik denk dat de nieuwste versie van Ubuntu 15.10 oude kernels automatisch kan verwijderen, als je het bestand /etc/apt/apt.conf.d/50unattended-upgrades bewerkt: Wijzig lijn

// Unattended-Upgrade :: Remove-Unused-Dependencies "false";

naar

Unattended-Upgrade :: Remove-Unused-Dependencies "true";

Ik heb dit echter nog niet getest.


2
2017-12-23 20:12



Zie een Bug report over het probleem. - jarno
En zie ook mijn gerelateerd antwoord. - jarno


Ik had een probleem met het niet kunnen installeren van software. Apt-get kon linux-headers niet installeren en meldde dat de schijf vol was.$ df -imeldde dat Iuse% 100% was: de schijf had vrije ruimte maar had geen inodes meer. $ sudo dpkg --configure -a mislukt, en dat deed ik ook $ sudo apt-get -f install en $ sudo apt-get autoremove

Het probleem is opgelost toen ik handmatig een aantal van de oudere kernelmappen van / usr / src verwijderde - alleen $ rm of shift-verwijder de mappen. Hierdoor werd voldoende inodatieruimte vrijgemaakt om toe te staan $ apt-get -f install vervolledigen.

Daarna had ik slechts 10 linux kernels. ik rende $ sudo apt-get autoremove die 1,4 GB aan bestanden heeft verwijderd. Wat de vraag oproept: echt? Werkelijk?? Maar eerlijk gezegd, is dit de juiste manier om een ​​gebruikersvriendelijk systeem te beheren?


2
2017-12-24 08:47



Ja, dat is het omdat je onverwacht die oudere kernel nodig hebt, zoals hierboven uitgelegd. - Reinier Post
Heb je geprobeerd om een ​​kernel door te spoelen? dpkg --purge? - jarno