it-swarm.dev

Jak odstraním staré verze jádra, abych vyčistil zaváděcí nabídku?

Pokaždé, když nainstaluji nové linuxové jádro, zůstane v grub_config, čímž se bootovací nabídka pokaždé prodlouží.

Vím, že mohu ručně prohledat nainstalované balíčky a odstranit je.

Poskytuje Ubuntu snadnější způsob, jak je vyčistit nebo zabránit jejich zobrazení v zaváděcím seznamu?

716
ImaginaryRobots

16.04 a novější verze Ubuntu

Sudo apt autoremove

Tento příkaz odebere balíčky, které byly automaticky nainstalovány k vyřešení závislosti, ale nyní již nejsou závislé. To zahrnuje staré verze linux-headers-* a linux-image-*. (O tomto procesu je také chytrá, zanechává jednu rezervní verzi jádra jako rezervu!)

11.10 a novější verze Ubuntu

GRUB2 a jeho zobrazení všech jader

Nejnovější verze Grub2 nainstalované v Ubuntu automaticky zobrazí nejnovější jádro a Skryje starší jádra, která jste možná nainstalovali.

GNU GRUB

Pokud nevidíte svůj grub - nezapomeňte stisknout Shift při bootování.

Jak vidíte, zobrazí se pouze nejnovější jádro.

Pokud vyberete zobrazenou možnost (stiskněte Enter), pak se všechna stará jádra stanou viditelnými a budou k dispozici pro zavedení.

GNU GRUB Previous versions

Jak trvale smazat starší jádra

První spuštění s nejnovějším dostupným jádrem.

Existuje několik způsobů, jak odstranit stará jádra. Osobně bych se nedotkl správce počítače , protože se potvrzuje, že váš počítač s jeho návrhy zlomil.

synaptický

Alternativou je synaptická (Sudo apt install synaptic)

hledejte linux-image , klikněte pravým tlačítkem na jádro a vyberte úplné odebrání a nakonec klikněte na Použít pro smazání jádra.

Synaptic Package Manager

Opakujte hledání, ale tentokrát pro linux-header - můžete smazat přidružená záhlaví pro dříve vybraný obraz jádra.

Synaptic , přestože se nepokusíte ověřit, co se pokoušíte odstranit ... můžete nechtěně smazat své nejnovější jádro - nebo dokonce vymazat všechna svá jádra pomocí tento nástroj nechává vás bez zavádění systému Ubuntu !.

Nezapomeňte zkontrolovat, jaké jádro používáte typ:

uname -r

Výsledek by byl podobný:

Terminal <uname -r>

Zapamatujte si výsledek a číslo - ujistěte se, že neodstraníte odpovídající obrázek nebo záhlaví.

Doporučení

Mým doporučením je ponechat alespoň dvě nebo nejlépe tři jádra včetně nejnovějších. Důvodem doporučení je, že budete muset zavést alespoň jedno nebo dvě další jádra, pokud z jakéhokoli důvodu nejspíš nejmladší jádro, se kterým nemůžete zavést systém, nebo zavádět regresivní schopnost, jako je přerušená bezdrátová síť.

610
fossfreedom

Nejprve restartujte svůj systém a ujistěte se, že používá nejnovější jádro. Pak otevřete terminál a zkontrolujte své aktuální jádro:

uname -r 

NEODSTRAŇUJTE TENTO KERNEL!

Dále zadejte níže uvedený příkaz pro zobrazení/výpis všech nainstalovaných jader ve vašem systému.

dpkg --list 'linux-image-*'

Najděte všechna jádra, která jsou nižší než vaše současné jádro. Když víte, které jádro odstranit, pokračujte níže a odstraňte jej. Spusťte níže uvedené příkazy a odstraňte vybrané jádro.

Sudo apt-get purge linux-image-x.x.x-x-generic 

Nakonec spusťte níže uvedené příkazy a aktualizujte grub2

Sudo update-grub2 

Restartujte systém.

386
penreturns

Můj obklad pro odstranění starých jader (to také uvolní místo na disku)

dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs Sudo apt-get -y purge

Vysvětlení (pamatujte, | Používá výstup předchozího příkazu jako vstup do dalšího)

  • dpkg --list Uvádí všechny nainstalované balíčky
  • grep linux-image Hledá nainstalované obrázky linuxu
  • awk '{ print $2 }' Vydá pouze druhý sloupec (což je název balíčku)
  • sort -V Uspořádá položky podle čísla verze
  • sed -n '/'`uname -r`'/q;p' Vytiskne řádky před aktuálním jádrem
  • xargs Sudo apt-get -y purge Vyčistí nalezená jádra

Odvolání vyvolání sed:

  • -n Říká sed, aby byl tichý
  • `uname -r` Vydává aktuální nainstalované vydání jádra - zahrneme jej do backticků, takže výstup bude zahrnut jako součást příkazu (můžete to vidět také jako $(uname -r)
  • /something/q Říká stop, když se shoduje s „něčím“ (v tomto případě je něco na výstupu uname -r) - / Obklopuje regulární výraz
  • p je vytištěn
  • ; je oddělovač příkazů, takže /something/q;p říká quit, když se něco shoduje, jinak tisk

celkem sed -n '/'`uname -r`'/q;p' vytiskne řádky, dokud se neshodují s aktuálním názvem jádra.

Pokud jste paranoidní (jako já), můžete udělat poslední část xargs echo Sudo apt-get -y purge, Takže se vytiskne příkaz k vyčištění starých jader, pak můžete před spuštěním zkontrolovat, zda není zahrnuto nic neočekávaného.


Upravená verze pro odstranění záhlaví:

dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs Sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs Sudo apt-get -y purge

Poznámka: vyvolání sed je změněno. "$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")" extrahuje pouze verzi (např. "3.2.0-44"), bez "-generic" nebo podobné z uname -r


All-in-one verze pro odstranění obrázků a záhlaví (kombinuje dvě výše uvedené verze):

echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs Sudo apt-get -y purge
287
David Kemp

Ubuntu 16.04+:

$ Sudo apt autoremove
...
The following packages will be REMOVED:
  linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic linux-tools-4.4.0-57 linux-tools-4.4.0-57-generic

Ubuntu 15.10 a nižší:

Považuji to za nejjednodušší a nejrychlejší způsob. Zachovává nejnovější jádro a dvě další:

Sudo apt-get install bikeshed
Sudo purge-old-kernels

Chcete-li změnit počet dalších uchovávaných jader:

Sudo purge-old-kernels --keep 3
61
bmaupin

Odstranění položek z Grubu 2 Položky by měly být odstraněny úpravou nebo odstraněním souborů ve složce /etc/grub.d. Soubor /boot/grub/grub.cfg je pouze pro čtení a obvykle by neměl vyžadovat úpravy.

Příliš mnoho jader?

  • Pokud si nejste jisti jádrem, které právě používáte, v typu terminálu uname -r .

  • Jádra odebraná pomocí APT (Synaptic, "apt-get remove" atd.)) Automaticky aktualizuje grub.cfg a není nutná žádná akce uživatele.

  • Skvělým nástrojem pro odstraňování jader (a položek nabídky) je Ubuntu-Tweak, bezpečná a snadno použitelná aplikace GUI.

  • Nainstalujte Ubuntu Tweak

  • Ubuntu-Tweak bude k dispozici v části Aplikace> Systémové nástroje.

Odstranit starší záznamy jádra

  • Vlevo vyberte „Čistič balíků“ a na pravém panelu „Vyčistit jádro“.

  • Stiskněte tlačítko „Odemknout“ vpravo dole a zadejte své heslo.

  • Ze zobrazeného seznamu vyberte obrázky jádra a záhlaví, které chcete odstranit. Používané jádro není uvedeno.

  • Stisknutím tlačítka „Vyčištění“ vpravo dole odstraníte vybrané obrazy a záhlaví jádra.

Odebrat operační systémy z nabídky Grub

  • Po spuštění root-root budou z nabídky odstraněny i jiné operační systémy, které byly odebrány z počítače.

  • Položky nabídky jsou umístěny do nabídky Grub2 skripty. Pokud nechcete, aby byly do nabídky zadány jiné operační systémy, zakažte /etc/grub.d/30_osprober

  • Spusťte tento příkaz, abyste zastavili běh skriptu
    Sudo chmod -x /etc/grub.d/30_os-prober

  • DISABLE_30_OS-PROBER = 'true' v/etc/default/grub

Odebrat Memtest86 + z Grub Menu
Sudo chmod -x /etc/grub.d/20_memtest86+

  • Spusťte příkaz update-grub, abyste mohli změny začlenit do grub.cfg

Zdroj

Poznámka: Po aktualizaci jádra je do nabídky GRUB) přidána nová položka. Starší verzi můžete odstranit, pokud chtít. Nejzkušenější uživatelé však doporučí, abyste si ponechali alespoň jednu náhradní položku pro případ, že by se při aktualizaci něco pokazilo a pro vyřešení problémů potřebujete zavést starší verzi jádra.

Alternativní způsob, jak odstranit položky jádra (před 10.04)

pro GRUB ne GRUB2

startupmanagerInstall startupmanager

Najdete ji v části Systém >> Správa >> alt text
alt text
Na druhém snímku obrazovky vidíte, kolik jader chcete zobrazit? Obecně to jen udržuji na 1, ale když dostanu upgrade jádra, vždy ho před restartem změním na 2, takže mohu vybrat starší jádro, pokud má nové jádro problémy s hardwarem. Jakmile vím, že nové jádro funguje dobře, změním to zpět na 1.

43
karthick87

Čistě z příkazového řádku se odstraní veškerý kromě aktuálního a druhého nejaktuálnějšího (pomocí "-2" v hlavním příkazu níže):

OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- |
    awk '{print "linux-image-" $0 " linux-headers-" $0}' )
if [ -n "$OLD" ]; then
    apt-get -qy remove --purge $OLD
fi
apt-get -qy autoremove --purge
39
Kees Cook

Aktualizace: purge-old-kernels je zastaralé dnes.

Vytvořil jsem skript, abych vyčistil jádra i ve složitých podmínkách. To se nazývá linux-purge a najdete ji zde .

Pokud chcete pouze vymazat jádra (a související balíčky), které jsou starší než aktuálně používané jádro, pokud není systém poškozen, můžete použít tento skript .

Existuje také stránka dokumentace Ubuntu, ke které jsem přispěl ohledně odstraňování starých jader zde .

36
jarno

Můžete to provést v části pomocí balíčku „bezobslužné aktualizace“ článku Automatické aktualizace zabezpečení na Ubuntu Wiki.

Následující řádek musíte změnit v souboru /etc/apt/apt.conf.d/50unattended-upgrades ;

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

s

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

automaticky odebrat staré balíčky, včetně jader.

Řádek také odeberte nebo okomentujte

"^linux-image.*"; 

v části "NeverAutoRemove" souboru /etc/apt/apt.conf.d/01autoremove.

29
Qwerty

Nejrychlejší/jednodušší způsob (použitelný alespoň od 12.04), který již přichází s Ubuntu, je apt-get. Pokud chcete odstranit všechny starší verze jádra, které se nepoužívají, proveďte následující kroky (S výjimkou předchozí verze, kterou nepoužíváte. Chcete-li se ujistit, že pokud aktuální verze jádra nějakým způsobem selže, musíte mít způsob, jak jít zpět do předchozího stavu). Udělej následující:

Sudo apt-get autoclean

Tím se odstraní všechny staré soubory (včetně verzí jádra), které máte. Pokud máte mnoho starých verzí, bude to chvíli trvat, protože se musí ujistit, že odebrání verze jádra nemá žádné problémy. Odstranění posledních 12 verzí jádra pro mě trvalo asi 2 minuty. Můžete také provést následující:

Sudo apt-get clean

Což eliminuje vše stažené a uložené ve složce mezipaměti apt. Nakonec máte:

Sudo apt-get autoremove

který by zkontroloval všechny nepoužité balíčky a v případě potřeby je odstranil. To je skvělé pro ty knihovny a balíčky závislostí, které již nejsou potřebné pro instalaci žádné aplikace.

27
Luis Alvarado

Chcete-li zjistit, jaké jádra a záhlaví jsou nainstalovány, použijte

dpkg -l | grep linux-image

dpkg -l | grep linux-headers

Poté je můžete odebrat jeden po druhém nebo společně.

K dispozici je také několik užitečných příkazů a skriptů, které automatizují odstranění.

http://ubuntuforums.org/showthread.php?t=1658648

Následující nároky na odstranění všech nepoužitých jader a záhlaví:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | grep -v hwe | xargs Sudo apt-get purge

(použijte apt-get -y odebrat bez otázek)

Co se stane, když běží 18.04.1:

~$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]

\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | xargs Sudo apt-get -y purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.15.0-33* linux-headers-4.15.0-33-generic* linux-headers-4.15.0-34* linux-headers-4.15.0-34-generic* linux-image-4.15.0-33-generic* linux-image-4.15.0-34-generic*
  linux-modules-4.15.0-33-generic* linux-modules-4.15.0-34-generic* linux-modules-extra-4.15.0-33-generic* linux-modules-extra-4.15.0-34-generic*
0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.
After this operation, 671 MB disk space will be freed.
(Reading database ... 227403 files and directories currently installed.)
Removing linux-headers-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-headers-4.15.0-33 (4.15.0-33.36) ...
Removing linux-headers-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-headers-4.15.0-34 (4.15.0-34.37) ...
Removing linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-image-4.15.0-33-generic (4.15.0-33.36) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-33-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Found linux image: /boot/vmlinuz-4.15.0-34-generic
Found initrd image: /boot/initrd.img-4.15.0-34-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-image-4.15.0-34-generic (4.15.0-34.37) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-36-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-36-generic
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-34-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
(Reading database ... 156180 files and directories currently installed.)
Purging configuration files for linux-image-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
dpkg: warning: while removing linux-modules-4.15.0-33-generic, directory '/lib/modules/4.15.0-33-generic' not empty so not removed
Purging configuration files for linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-image-4.15.0-33-generic (4.15.0-33.36) ...
Purging configuration files for linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
~$ uname -r
4.15.0-36-generic
25
mikewhatever

Metoda 10.04 GUI

Program Computer Janitor dokáže vyčistit stará jádra a věřím, že je ve výchozím nastavení nainstalován v Ubuntu (nikoli však Kubuntu).

GRUB 1, pokud jej používáte, má možnost v /boot/grub/menu.lst k určení počtu jader, která by se měla zobrazit maximálně. GRUB 2, pokud mohu říci, ne.

25
maco

Chcete-li odebrat starší obrazová jádra systému Linux, nejprve spusťte jádro, které chcete zachovat.

Můžete také zkontrolovat verzi jádra pomocí příkazu uname -r, abyste omylem neodstranili špatnou.

Nyní přejděte do správce synaptických balíků a vyhledejte linux-image a odebrat starší verze kromě verze zobrazené pomocí horního příkazu. Obecně dávám přednost tomu nejnovějšímu.

Nyní po restartu uvidíte čistější grub menu.

16
anurag-jain

Můžete nainstalovat buntu-Tweak a poté přejít do aplikací -> Systémový nástroj -> ubuntu Tweak a

enter image description here klikněte na čistič balíků a vyčistěte jádra. Nezobrazuje aktuálně používané jádro, takže budete vždy v bezpečí.

14
Lincity

Osobně ráda používám Synaptic. Cítím se bezpečnější, co se děje. Jediná aplikace, kterou jsem použil a má možnost odstranit stará jádra, je buntu Tweak .

Jak odebrat jádra, která nepoužíváte:

  • Otevřete UbuntuTweak
  • V levém podokně klikněte na 'Čistič balíků' pod 'Aplikace'
  • Na pravé straně „pohledu na čištění“ stiskněte „Vyčistit jádra“
  • Vyberte všechna jádra - myslím, že používané není v seznamu uvedeno, ale pouze v případě, že kontrola běží uname -a v terminálu
8
Alan Featherston

Můžete odinstalovat stará jádra (linux-image-... balíčky) pomocí Synaptic, které je odstraní ze spouštěcí nabídky. Dejte pozor, abyste neodstraňovali běžící jádro (jeho verzi můžete zkontrolovat pomocí uname -r).

Mějte na paměti, že pokud se něco pokazí, může vám pomoci jedna nebo dvě starší verze.

Případně můžete položky upravit nebo odstranit ručně (gksu gedit /boot/grub/grub.cfg), ale po aktualizaci na novější jádro budou znovu vygenerovány. Pokud uvažujete o odebrání recovery mode možnosti - ne. Mohou se hodit, pokud si zlomíte něco, co vám znemožňuje bootování.


Viz tato stránka

6
evgeny

Toto je čistě řešení příkazového řádku.

Nejprve vygenerujte seznam všech nainstalovaných verzí jádra s výjimkou aktuálně spuštěného jádra:

dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    grep -v $(uname -r | cut -d- -f1,2))

Alternativně vygenerujte seznam všech nainstalovaných verzí jádra s výjimkou posledních dvou:

dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    sort -V | head -n -2)

Prohlédněte si seznam. Ujistěte se, že verze jádra, které chcete zachovat, nejsou součástí seznamu. Použijte příkaz uname -r pro zobrazení verze aktuálně běžícího jádra.

Pokud jste s výsledky spokojeni, můžete použít apt-get k odstranění balíčků.

Nejprve suchý chod (jako příklad použijte první generátor):

Sudo apt-get --dry-run purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))

Pak skutečný běh:

Sudo apt-get purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))

Pokud chcete proces automatizovat, přidejte --yes parametr:

Sudo apt-get --yes purge $(
  ...)
4
lesmana

Výhodou této odpovědi je nativní Ubuntu Bash se používá bez instalace aplikací třetích stran. Uživatelé vlastních jader, kteří nepoužívali apt nebo dpkg, mohou tento bash skript změnit, aby vyhovoval jejich potřebám. Tato odpověď je založena na ( Jak selektivně vyčistit stará jádra najedno ).

Řešení založené na Zenity

Zenity poskytuje terminálu příjemné grafické rozhraní pro zpracování seznamu a výběr položek pomocí přepínačů :

rm-kernels 1

Protože název označuje aktuální jádro, se kterým jste zavedli, nelze odstranit a není zahrnuto do seznamu. Hlášená velikost je, kolik bude uloženo v /boot adresář. Na disk je uloženo více, protože binární soubory jádra se nacházejí i v jiných oblastech. 27. července 2017 poznámka: Adresáře /usr/src/*kernel_version* a /lib/modules/*kernel_version* jsou nyní také zahrnuty.

upravené datum je objeveno pomocí příkazu stat. V mém systému je toto datum "dotknuto" pokaždé, když je jádro zavedeno pomocí tohoto ( Jak zjistíte, kdy byla konkrétní verze jádra naposledy spuštěna? ) cron restartovací skript. Ve vašem systému však bude datumem datum vydání jádra, ne naposledy, kdy jste jej zavedli.

apt-get purge vám dává možnost zrušit

Máte poslední příležitost prohlédnout si vše, co bude vymazáno, a zobrazit celkový diskový prostor (poněkud zavádějící), který bude obnoven:

The following packages will be REMOVED:
  linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
  linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
  linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
  linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
  linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
  linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
  linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
  linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
  linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
  linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
  linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
  linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n] 

Kód

Zkopírujte tento kód do spustitelného souboru s názvem rm-kernels v /usr/local/bin:

#!/bin/bash

# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from Sudo Prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as Sudo
if [[ $(id -u) != 0 ]]; then
    zenity --error --text "root access required. Use: Sudo rm-kernels"
    exit 99
fi

OLDIFS="$IFS"
IFS="|"
choices=()

current_version=$(uname -r)

for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    choices=("${choices[@]}" false "$v" "$d" "$s")
done

# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large

choices=(`zenity \
        --title "rm-kernels - Total: $t MB excluding: $current_version" \
        --list \
        --separator="$IFS" \
        --checklist --multiple \
        --text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
        --width=640 \
        --height=480 \
        --column "Select" \
        --column "Kernel Version Number" \
        --column "Modified Date" \
        --column " Size " \
        "${choices[@]}"`)
IFS="$OLDIFS"

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
     apt-get purge $list
fi

POZNÁMKA: K vytvoření souboru potřebujete povolení sudo, takže použijte:

gksu gedit /usr/local/bin/rm-kernels

Chcete-li použít spustitelný soubor:

Sudo chmod +x /usr/local/bin/rm-kernels

Verze serveru

rm-kernels-server je verze serveru pro selektivní mazání jader najednou. Místo grafického dialogového okna GUI se pro výběr jader, která se mají vyčistit, používá textové dialogové okno.

  • Před spuštěním skriptu je třeba nainstalovat dialogovou funkci pomocí:

    Sudo apt install dialog

Dialog je ve výchozí instalaci Ubuntu Desktop, ale ne na Ubuntu Serveru.

Ukázková obrazovka

rm-kernels-server 1

rm-kernels-server bash kód

#!/bin/bash

# NAME: rm-kernels-server
# PATH: /usr/local/bin
# DESC: Provide dialog checklist of kernels to remove
#       Non-GUI, text based interface for server distro's.

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from Sudo Prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as Sudo
if [[ $(id -u) != 0 ]]; then
    echo "root access required. Use: Sudo rm-kernels-server"
    exit 99
fi

# Must have the dialog package. On Servers, not installed by default
command -v dialog >/dev/null 2>&1 || { echo >&2 "dialog package required but it is not installed.  Aborting."; exit 99; }

OLDIFS="$IFS"
IFS="|"
item_list=() # Deviate from rm-kernels here.

current_version=$(uname -r)
i=0
for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    ((i++)) # Item List
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    item_list=("${item_list[@]}" "$i" "$v ! $d ! $s" off)
done

cmd=(dialog --backtitle "rm-kernels-server - Total: $t MB excluding: $current_version" \
    --title "Use space bar to toggle kernel(s) to remove" \
    --column-separator "!" \
    --separate-output \
    --ascii-lines \
    --checklist "         Kernel Version --------- Modified Date  Size" 20 60 15)

selections=$("${cmd[@]}" "${item_list[@]}" 2>&1 >/dev/tty)

IFS=$OLDIFS

if [ $? -ne 0 ] ; then
    echo cancel selected
    exit 1
fi

i=0
choices=()

for select in $selections ; do
    ((i++))
    j=$(( 1 + ($select - 1) * 3 ))
    choices[i]=$(echo ${item_list[j]} | cut -f1 -d"!")
done

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
    apt-get purge $list
fi

POZNÁMKA: Při volání dialog směrnice --ascii-lines je předáno k nahrazení rozšířené znakové sady pro kreslení čar (která ssh se nelíbí) s „+ ----- +“ pro rámečky kreslení. Pokud se vám tento vzhled nelíbí, můžete použít --no-lines směrnice pro žádné pole vůbec.


Aktualizace 28. července 2017

Vypočtená velikost každého jádra byla převzata z /boot/*kernel_version* což bylo 5 souborů v celkovém ~ 50 MB. Vzorec se změnil tak, aby obsahoval soubory v /usr/src/*kernel_version* a /lib/modules/*kernel_version*. Vypočítaná velikost pro každé jádro je nyní ~ 400 MB. Výše uvedený kód pro rm-kernels a rm-kernels-server byl aktualizován. Ukázkové obrazovky výše však tyto změny ještě neodrážejí.

Výchozí hodnota je odhadnout velikost souborů pro záhlaví linuxu na 125 MB a linux-image na 220 MB, protože du může být bolestivě pomalé, pokud nejsou soubory v mezipaměti. Chcete-li získat skutečnou velikost pomocí du, předejte skriptu jakýkoli parametr.

V záhlaví se nyní zobrazí součet všech velikostí jádra (kromě aktuální spuštěné verze, kterou nelze odstranit).

Dialogové okno použité k zobrazení každého posledního data posledního přístupu každého jádra. Toto datum může být hromadně přepsáno pro všechna jádra během zálohování nebo podobných operací. V dialogovém okně se nyní zobrazuje upravené datum .

4
WinEunuuchs2Unix

Přijatá odpověď používající sed k trvalému odebrání starších jader má některé nedostatky, pokud někdo po restartování počítače restartoval počítač, příkaz odstraní i novější jádro.

Zde je alternativní řešení, které bude brát v úvahu všechny situace, aby se odstranily pouze skutečné starší jádra:

#!/bin/bash
kernels=( $(grep -Po "^linux-image-[^-]+-[^-]+-generic\b" < <(dpkg --get-selections)) )
cur_rel=$(grep -Po ".*(?=-[a-z]*$)" < <(uname -r))

for kernel in "${kernels[@]}"; do
    ker_rel=$(grep -Po "[0-9].*(?=-[a-z]*)" <<< "$kernel")
    dpkg --compare-versions "$ker_rel" gt "$cur_rel" && echo "Please Restart your computer first" && break
    dpkg --compare-versions "$ker_rel" lt "$cur_rel" && Sudo apt-get remove "$kernel"
done

Pokud máte jakoukoli novější verzi, než je ta současná, zobrazí se upozornění, abyste restartovali počítač jako první. Také si všimněte, že starší jádra jsou zachována z dobrého důvodu, protože pokud nějakým způsobem zkomplikujete své aktuální jádro a nestabilní systém, měli byste být schopni zavést systém do jakéhokoli staršího jádra.

2
heemayl

Snadný způsob, jak se zbavit téměř všech zastaralých balíků, balíčků, které již nejsou v seznamu balíků, a zastaralých jader, je provést jednu z následujících akcí:

dpkg --purge $(aptitude search ?obsolete)

Bude však chybět balíčky, které jsou stále doporučovány jinými balíčky, a argument -R/- without-recommend tento problém nevyřeší.

dselect po přepnutí režimu třídění s 'o' zobrazí všechny zastaralé balíčky včetně těch, které chybí aptitude, ale někteří lidé ho nemají rádi.

2
Chris Cheney

Můžete použít ukuu - je to všechno GUI - pro aktualizaci a mazání starých jader. Pracuje pro mě!

Nezapomeňte nechat poslední 2 nainstalované a samozřejmě „běžící“ jádro.

Můžete také nastavit ukuu, aby zobrazoval pouze hlavní vydání, dokonce i RC jádra, skrytí vydání.

ukuu

Najdete ukuu v Synaptic, nebo pokyny jsou zde:

OMG! Ubuntu ukuu pokyny k instalaci

2
sprocketoctopus

Mám pro to skript, který nevyžaduje velmi efektní analýzu řetězců.

Chcete-li uvolnit místo, odstraňte záhlaví a obrázky kromě aktuálního

Sudo apt-get autoremove --purge 'linux-headers-[0-9].*' linux-headers-$(uname -r)+ linux-headers-$(uname -r | cut -d- -f1,2)+ 'linux-image-[0-9].*' linux-image-$(uname -r)+
1
Paulo Santos

ailurus má funkci odstraňování starých jader i nepoužívaných konfigurací. Já osobně ji odebrat ručně ze synaptické. Můžete nainstalovat ailurus z getdeb a také ppa

1
sagarchalise

Na základě předchozí odpovědi Davida Kempa vymaže následující skript všechna záhlaví a obrázky kromě verzí poslední 2.

#!/bin/sh
# This script assumes that the installed linux-image and linux-headers packages
# share the same versions (i.e. if a linux-image version number is installed,
# the corresponding linux-headers package will also be installed, and vice
# versa.)

SECONDTOLASTVER=$(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -r -n | sed '/^[^0-9]\+$/d' | sed 's/^.*-\([0-9\.]\+-[0-9]\+\).*/\1/' | uniq | sed -n 2p)

# get a list of package names matching the argument passed to the function, and
# return only those package names which should be removed
get_pkgs_to_remove_matching () {
    if [ -n "$SECONDTOLASTVER" ]; then
        echo $(dpkg --list | grep $1 | awk '{ print $2 }' | sort | sed -n '/'"$SECONDTOLASTVER"'/q;p')
    fi
}

echo $(get_pkgs_to_remove_matching linux-image) $(get_pkgs_to_remove_matching linux-headers) | xargs Sudo apt-get purge

(použijte apt-get -y odebrat bez otázek)

1
Mark

V dalších odpovědích dávám dvě bezpečnější varianty metod: jedna pomocí synaptického manažera a druhá pomocí terminálu .

Pomocí těchto variant odstraníte pouze balíčky, které systém identifikuje jako vyměnitelné. Neexistuje žádné riziko, že odstraníte linuxová jádra, která jsou aktuálně používána - jak se mi stalo před několika týdny ;

Pomocí Správce Synaptic

Místo prohledávání linux-image Přes všechny nainstalované balíčky, vyberte autoremovable balíčky (viz červená elipsa na obrázku níže). Nyní z tohoto seznamu odeberte požadovaný linux-image .

--- (enter image description here

Pomocí terminálu

Podobně, pokud odstraňujete jádra na terminálu, zobrazte pouze autoremovable jádra spuštěním

 Sudo apt-get -s autoremove | grep linux-image

A pak odstraňte kterékoli jádro linux-image-x.x.x-x-generic, Které chcete odstranit z daného seznamu spuštěním

 Sudo apt-get purge linux-image-x.x.x-x-generic 
0
loved.by.Jesus

Používám unattended-upgrades takže se mi opravdu líbil odpověď Qwerty , která jej konfiguruje tak, aby automaticky odinstalovávala staré balíčky jádra.

Byl však jeden problém: po instalaci nového jádra by tento proces odinstaloval balíček pro aktuálně spuštěné jádro!

To zcela naruší OS. Ve skutečnosti jsem si jen zřídka všiml, že se to stalo, dokud jsem nepotřeboval hot-load modul (např. Připojením USB zařízení) a pak modul nebyl nalezen.

Jako řešení tohoto jsem vytvořil skript pro vygenerování virtuálního balíčku currently-installed-kernel, které efektivně připojí aktuální balíček jádra až do příštího spuštění.

Skript se nazývá pin-current-kernel-with-package.sh. Zde je nejnovější verze (pravděpodobně) a první verze (určitě).

Prostě tento skript někde uložte a přidejte jej do spouštěcího proces . Například jej uložte do /root/bit/pin-current-kernel-with-package.sh a poté upravte /etc/rc.local a přidejte následující řádek:

bash /root/bin/pin-current-kernel-with-package.sh

Nyní váš běžící balíček jádra nebude nikdy odinstalován!

0
joeytwiddle

Pokud používáte k ovládání strojů ansible, může být tato příručka užitečná.

---
 - hosts: all
   become: yes
   tasks:
    - name: "Run apt-get autoremove"
      apt: 
        name: linux-image-generic
        autoremove: yes
        state: present 
        update_cache: yes
        cache_valid_time: 3600
0
flickerfly

Při příštím otevření starých jader otevřete terminál a použijte tento příkaz:

Sudo apt-get autoremove linux-headers-2.6.38-10-generic

Synaptic můžete použít k získání přesného názvu jádra, které chcete smazat. Jednoduše otevřete Synaptic a hledejte "linux-headers" a pak vyberte, který záznam jádra chcete odstranit. Relevantní položka bude na konci označena „-generic“.

Chcete-li vymazat všechny nepoužité (zbylé) závislosti v celém systému, použijte tento příkaz sám:

Sudo apt-get autoremove
0
Chad--24216

Používám plochu KDE a nejjednodušší možností, kterou jsem našel, bylo použití aplikace kde-config-grub2, jak je zde navrženo: https://www.kubuntuforums.net/showthread.php?58075-remove-old -linux-version (které jsem již nainstaloval pro nastavení obrázku na pozadí, výchozí možnost spuštění a podobně). Vedle rozevíracího seznamu, kde si můžete vybrat výchozí položku, je tlačítko „Odstranit staré položky“. Kliknutím na toto tlačítko se zobrazí seznam všech nainstalovaných jader a můžete vybrat, která z nich chcete odebrat. Když použijete změny, použije je dpkg ke skutečnému odstranění ze systému a také v nabídce GRUB).

0
Ben

Následující řetězec příkazů vyčistí všechna nainstalovaná linuxová jádra kromě právě běžícího (grep -v uname -r) a poslední dostupné jádro (dpkg -l | .... | tail -1):

dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | grep -v `dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | tail -1` | grep -v `uname -r` | xargs apt-get -y purge

Používám to, aby spouštěcí svazky počítače byly relativně čisté, ale v situaci na serveru byste pravděpodobně chtěli rozšířit logiku a napsat další skriptování, abyste udržovali seznam posledních X jader, na která server zavedl.

Něco jako spouštěcí skript, který dělá:

uname -r >> /root/bootedkernels
cat /root/bootedkernels | sort -u | tail -3 > /root/bootedkernels # Keep the last 3 booted kernels

a poté použijte:

dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | grep -vf /root/bootedkernels | grep -v `dpkg -l | grep -E linux-image-.*-generic | cut -d ' ' -f3 | tail -1` | grep -v `uname -r` | xargs apt-get -y purge
0

Zkuste to. Spusťte jej jako root.

Uložte tento skript jako, řekněme ./ keep-n-kernels.sh

Jako argument příkazového řádku předejte počet posledních jader, která chcete zachovat.

    
 #!/bin/bash 
 
 # pass n jako argument příkazového řádku a najde všechna nainstalovaná jádra 
 # a ponechá pouze n nejvíce nedávné = = odinstalovat všechny starší 
 
 # dpkg -l 'linux- *' | sed '/ ^ ii /! d; /' "$ (uname -r | sed" s /\(.*\)-\([^ 0-9]\+ \)/\ 1/")" '/ d; s/^ [^] * [^] *\([^] * \). */\ 1 /;/[0-9] /! d '
 # Tento příkaz uvádí seznam všechny balíčky NEJSOU pro nejnovější jádro. 
 # zdroj: https://help.ubuntu.com/community/Lubuntu/Documentation/RemoveOldKernels

n=$1
 
 # najděte nainstalované verze jádra: 
 # dpkg-query -W -f = '$ {Version}\n' 'linux-image- *' | grep. | sort -n 
 # uvádí čísla verzí, jedno v každém řádku 
 # dpkg-query -W -f = '$ {Version}\n' 'linux-image- *' | grep. | sed 's /\...$// g' | grep -v '\ ... $' | sort -u 
 # uvádí pouze ty, které se objevují v linux-image 
 
 # přípona, např. -generic-pae 
 # druh jádra, do kterého spouštíte příponu 
 = $ (uname -r | sed 's: ^ [0-9] \. [0-9] \. [ 0-9]\- [0-9]\{2 \} :: g ') 
 
 Command = "apt-get purge" 
 
 For verze v $ (dpkg-query -W -f = '$ {Version}\n' 'linux-image- *' | grep. | sed 's /\...$// g' | grep -v '\ ... $ '| sort -u | head -n - $ {n}) 
 do 
 command = $ {command} "^ linux-image - $ {version} $ {přípona} "
 hotovo 
 
 $ příkaz 

Příklad použití:

 # ./keep-n-kernels.sh 4 # spusťte příkaz apt-get a odeberte všechna kromě 4 posledních jader 

Pokud chcete [AND AT VAŠE VLASTNÍ RIZIKO], můžete do příkazu apt-get přidat -y (nebo příznak síly) a učinit z něj neinteraktivní.

0
Sankalp

Nainstalujte správce synaptických balíčků a přejděte na kartu Filtry (myslím, že filtry, ne-li vyzkoušet všech 5) a vyberte „místní“. Zobrazí se vám osamocené balíčky ve vašem systému, například jádra. Po jejich odinstalaci spusťte update-grub. Tento příkaz aktualizuje seznam možností spouštění grubu.

Pokud se to nezdaří, můžete vždy zkusit apt-get remove linux-image-version-generic.

0
Relish

Chcete-li odebrat jádra, která byla automaticky nainstalována prostřednictvím pravidelných aktualizací systému, otevřete terminál a spusťte:

Sudo apt autoremove --purge

Chcete-li znát aktuální spuštění jádra, spustíte uname -r A také u můžete spustit uname --help, Abyste si přečetli více o všech příkazech uname

Můžete také spustit df -h A zobrazit ovladače systému souborů, podobně můžete spustit df --help Pro více.

Chcete-li povolit automatické odstranění starých jader: Upravte konfigurační soubor pomocí gksu

gksudo gedit /etc/apt/apt.conf.d/50unattended-upgrades

Po otevření souboru odkomentujte následující řádek a změňte hodnotu na true :

// Bezobslužný upgrade :: Odstranit nepoužívané závislosti " false ";

Pokud potřebujete nainstalovat gksu , můžete spustit Sudo apt install gksu

K vymazání starých balíčků můžeme použít Sudo apt-get clean

Pro více navštivte http://ubuntuhandbook.org/index.php/2016/05/remove-old-kernels-ubuntu-16-04/

0
Abdallah Okasha

Jen zazvonit, můžete také vydat

apt-get remove linux-{image,headers}-x.y.z-{1,2,...,n}

jako root a úloha bude dokončena.

0
Severo Raz

Jak @ jarno a @ earcam zmíněné v jejich komentářích k otázce, musíte nejprve zajistit, aby všechny vaše balíčky linuxového jádra byly označeny jako automaticky nainstalované:

Sudo apt-mark auto '^linux-.*-4\.12\.0-12(-generic)?$'

Pak by měl fungovat normální příkaz apt-get autoremove.

Sudo apt-get autoremove --purge

Další podrobnosti najdete v dokumentu docs .

0
hobs

zde je hrubý náčrt toho, co jsem udělal, opatrný, protože nejsem odborník v Linuxu, ujistěte se, že víte, co děláte, a zálohujte všechny soubory, které upravujete.

gedit /boot/grub/grub.cfg

poté vyhledejte položky, které chcete zachovat, zvýrazníme a zkopírujeme je

cd /etc/grub.d
ls

uvidíte seznam souborů jako 10_linux a 30_os-prober

Sudo chmod -x 10_linux

tím se zastaví automatické přidávání všech linuxových položek do spouštěcí nabídky grubu.

gksudo gedit 40_custom

otevřete soubor vlastního zaváděcího menu, poté přejděte zpět na grub.cfg (který by měl být stále otevřen v geditu) a zkopírujte položky, které chcete zachovat ... například

menuentry "My Default Karmic" {
  set root=(hd0,1)
  search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
  linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
  initrd /boot/initrd.img-2.6.31-11-generic
}

vložte je do 40_custom a uložte jej.

Sudo chmod 755 40_custom

dělá to spustitelným, pak nakonec aktualizujeme grub, který změní soubor grub.cfg:

Sudo update-grub

POZOR, pokud aktualizujete své jádro nebo OS, vaše bootovací nabídka se pravděpodobně neaktualizuje ... budete to muset udělat ručně. Tento postup vám však umožní přizpůsobit zaváděcí nabídku o něco více, například odebrat verzi jádra a jednoduše zadat jméno Ubuntu ... tj. Ubuntu Lucid 10.04 atd. ...

Doufám, že to někdo považuje za užitečné, protože mi trvalo chvilku, než jsem zjistil ... toto řešení nikde neviděl ...

0
Joe

Spíše použijte apt, klientské rozhraní CLI, než apt-get pro vymazání starých obrázků jádra:

$ Sudo apt autoremove --purge
...
The following packages will be REMOVED:
  linux-headers-4.4.0-51* linux-headers-4.4.0-51-generic* linux-image-4.4.0-51-generic* linux-image-extra-4.4.0-51-generic*
0
k0pernikus

Chcete-li mít trochu větší kontrolu nad tím, které verze si chcete ponechat, vyberte výslovně ty, které chcete odebrat. Například pokud chcete odebrat jádro verze 3.2.0. [49-53], použijte jednoduchou smyčku for:

for k in 49 51 52 53 ; do aptitude remove --purge linux-image-3.2.0-${k}-generic ; done

Upravte seznam verzí jádra tak, aby se vešly.

0
NeilNjae