it-swarm-eu.dev

Jak uvolním více místa v / boot?

Můj /boot oddíl je téměř plný a při každém restartování systému se zobrazí upozornění. Už jsem odstranil staré balíčky jádra (linux-headers ...), vlastně jsem to udělal, abych nainstaloval novější verzi jádra, která byla dodána s automatickými aktualizacemi.

Po instalaci této nové verze je oddíl téměř opět plný. Takže co jiného mohu smazat? Existují nějaké staré soubory spojené se starými obrazy jádra?

Zde je seznam souborů, které jsou na mém /boot oddíl:

:~$ 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

V současné době používám 3.0.0-14-generic jádro.

571
user6722

Máte hodně nevyužitá jádra. Odebrat všechna jádra kromě:

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

To je zkratka pro:

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

Odebrání linux-image-x.x.x-x balíček také odstraní linux-image-x.x.x-x-generic.

Záhlaví se instaluje do /usr/src a používají se při vytváření modulů jádra mimo strom (jako je proprietární ovladač nvidia a virtuální box). Většina uživatelů by měla tyto balíčky záhlaví odebrat, pokud se odpovídající balíček jádra (linux-image-*) není nainstalována.

Chcete-li zobrazit seznam všech nainstalovaných jader, spusťte:

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

Jeden příkaz k zobrazení všech jader a záhlaví, které lze odstranit, s výjimkou běžícího jádra aktuální:

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

Vybere všechny balíčky pojmenované počínaje linux-headers-<some number> nebo linux-image-<some number>, vytiskne názvy balíčků pro nainstalované balíčky a poté vyloučí aktuální načtené/spuštěné jádro (ne nutně nejnovější jádro!). To se hodí pro doporučení testování novějšího jádra před odstraněním starších, známých jader.

Po upgradu jader a restartu, abyste je mohli otestovat, můžete odstranit všechna ostatní jádra pomocí:

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

Spouštěcí oddíl je plný. Protože se jedná o aktualizaci jádra, budou tyto soubory zkopírovány do spouštěcího oddílu, takže je třeba vyčistit. Zde je blogový příspěvek , který vám ukáže, jak vymazat staré obrazy jádra jedním příkazem. Podám základní přehled metody. Tento příkaz použijte k vytištění aktuální verze jádra:

uname -r

Potom pomocí tohoto příkazu vytiskněte všechna nainstalovaná jádra, která nejsou vaše nejnovější jádro:

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

Ujistěte se, že vaše aktuální jádro není na tomto seznamu. Všimněte si, jak se jedná o většinu posledního příkazu (dole). Chcete-li odinstalovat a odstranit tato stará jádra, budete chtít předat tyto argumenty:

Sudo apt-get -y purge

Nyní můžeme udělat vše, co chceme, spojením těchto posledních dvou příkazů do této nezdravé nepořádku:

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

A tento příkaz se postará o všechno za vás. Potvrzuji, že to funguje perfektně, ale nikdy nikomu na internetu nevěřím. :) Pro více informací, blogový příspěvek poskytuje velmi dobré vysvětlení toho, co každá část příkazu dělá tak číst skrz to, takže jste spokojeni, že to, co chcete, aby udělal.

220
dward
Sudo apt-get autoremove

Tento příkaz provádí úlohu automaticky.

112
karan

Správce balíků Synaptic lze použít k snadnému výběru a odstranění starých obrazů jádra. Screenshot of Synaptic Package Manager

Pokud ještě nemáte Synaptic nainstalován:

Sudo apt-get install synaptic

Spusťte aplikaci a vyberte zobrazené možnosti.

Měli byste být schopni zvýraznit všechny balíčky „linux-“ s verzí „2.6.x“, kde x je podle souborů ve vaší/bootovací složce 31 až 38.

Klepněte pravým tlačítkem myši na každý z těchto linuxových balíčků a vyberte možnost „Označit pro úplné odstranění“. Nakonec klikněte na tlačítko použít. Tím se odstraní všechny soubory a všechny přidružené soubory. Vaše /boot složka by nyní měla být trochu uklizená.

40
fossfreedom

Děkuji vám za váš podrobný příspěvek k vašemu problému, to mě přimělo jít správným směrem. Přestože je užitečné uchovat předchozí soubory jádra, můžete je všechny odstranit najednou, ale zkontrolujte tento příspěvek:
Jak odstranit všechny nepoužité hlavičky, obrázky a moduly jádra systému Linux

Hotovo z příkazového řádku. Pokud to děláte na dálku, použijte něco jako WINSCP k otevření terminálové relace a stačí ji vložit, funguje to velmi dobře.

Zde je zkopírován z odkazu na článek, doporučujeme přečíst si celý článek:

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
25
Omni

Toto je nová odpověď na starou otázku, ale snadný způsob, jak vyčistit tuto věc (a další), je instalace buntu Tweak . nainstalovat :

Sudo add-apt-repository ppa:tualatrix/ppa
Sudo apt-get update
Sudo apt-get install ubuntu-Tweak

pak můžete spustit Ubuntu Tweak, přejděte na kartu „správce“ a odtud je to otázka tří kliknutí:

Ubuntu Tweak janitor for old kernels

Je však lepší nechat poslední jádro (nikdy nevíte) nebo dobře známé pracovní jádro kvůli bezpečnosti; ale to lze snadno přizpůsobit.

Pomocí stejného nástroje můžete vyčistit spoustu věcí - nezapomeňte, že pokud vyčistíte mezipaměť miniatur nebo TB mezipaměť), systém je bude muset znovu vytvořit, pokud jsou potřeba.

23
Rmano

Byl jsem schopen problém vyřešit pomocí dpkg k přímému odebrání balíčků. Přestože jsou balíčky stále uvedeny v dpkg -l, soubory jsou odstraněny z /boot, uvolňující místo.

[email protected]:/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`

Po tomto, apt-get -f install opravil mé problémy se závislostí a všechno bylo v pořádku se světem.

Tuto moji odpověď však nepřijímám, protože stále potřebuji vědět, jestli bych měl zvyšovat svou /boot velikost nebo něco jiného.

20
Phrogz

Můžete přestat používat samostatný/spouštěcí oddíl, pak tam nebudete mít tak omezený prostor. Chcete-li to provést, odpojte oddíl, připojte jej někam jinam a zkopírujte všechny soubory do adresáře/boot v kořenovém oddílu, poté odeberte položku z/etc/fstab a znovu nainstalujte grub. Například (budete muset použít správný oddíl):

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

Poté můžete pomocí gparted odstranit starý/spouštěcí oddíl a případně rozšířit kořenový oddíl, aby tento prostor využil. Chcete-li rozšířit kořenový oddíl, musíte zavést systém z livecd a volné místo musí být okamžitě vpravo. Pokud je oddíl/boot aktuálně vlevo od kořenového oddílu, musíte nejprve přesunout kořenový oddíl doleva, poté jej rozšířit, ale může to trvat velmi, velmi dlouhou dobu, takže nemusí stát za to problémy.

15
psusi

Z výše uvedených odpovědí vycházím co nejlépe, můj osvědčený přístup je tento:

  • uname -a k nalezení běžícího jádra.
  • dpkg -l linux-{headers,image}-\* | grep ^ii zobrazí seznam všech aktuálně nainstalovaných balíčků souvisejících s jádrem. To bude zahrnovat běžící jádro.
  • Sudo apt-get purge linux-{image,headers}-3.16.0-{xx,yy,zz} k odstranění starých jader. Nahradit xx,yy,zz se seznamem sestav jádra, které chcete odstranit - jedná se o všechna sestavení uvedená v předchozím příkazu, která jsou starší než aktuálně spuštěné jádro. jistěte se, že neodstraníte aktuálně spuštěné jádro - váš systém bude bezbootovatelný. Možná budete muset změnit verzi jádra z 3.16.0 k čemu je na vašem systému nainstalován.
  • Volitelně proveďte další Sudo apt-get autoremove— odstraní se tím zbytkové závislosti starých jader, které již stávající jádro nepotřebuje, uvolní se tím více místa.

Můžete mít nainstalované soubory záhlaví bez odpovídajících verzí jádra, nebo naopak - do příkazu zahrňte všechny tyto verze. APT si bude stěžovat, že některé balíčky nelze odebrat, protože nejsou nainstalovány, ale to neublíží).

Pokud něco selže ...

  • Pokud se příkaz apt nezdaří z důvodu , že na zařízení nezůstalo žádné místo, použijte místo toho odpovídající příkaz dpkg: Sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}.
  • Pokud příkaz dpkg stále nefunguje, protože linux-image balíčky jsou vyžadovány linux-headers balíčky stejné verze (které chcete také odinstalovat), dpkg to nepodařilo vyřešit. Znovu zkontrolujte výstup dpkg -l a zadejte všechny přípony názvu balíčku na příkazovém řádku. Například v jednom z mých systémů byl příkaz, který nakonec pracoval, Sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz}-generic-pae.
  • Pokud narazíte na jinou chybu, vyhledejte pomoc - můžete mít jiný problém, než jste si mysleli.
10
user149408

Seznam všech jader:

dpkg --list 'linux-image*'

Zobrazit aktuální jádro:

uname -r

Seznam všech jader KROMĚ aktuální:

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

jistěte se, že vaše aktuální jádro není na tomto seznamu.

Odebrat všechna jádra KROMĚ aktuální:

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

Vymazat další věci:

Sudo apt-get autoremove

Pokud vám stále poskytuje chybu místa na disku pro instalaci/odinstalaci souborů, odstraňte přímo jeden z STARÝ obrázek z/boot adresáře,

ls -lh /boot/*-3.13.0-119*;

rm /boot/*-3.13.0-119*; 

POZNÁMKA: Před odstraněním jakéhokoli obrazu si prosím znovu zkontrolujte aktuální obraz jádra.

Pokud stále vyvolá nějakou chybu, opakujte následující příkazy, abyste odstranili nežádoucí jádra,

Sudo dpkg --purge linux-image-X.X.X-XXX-generic linux-image-extra-X.X.X-XXX-generic linux-signed-image-X.X.X-XXX-generic
Sudo dpkg --purge linux-image-Y.Y.Y-YYY-generic linux-image-extra-Y.Y.Y-YYY-generic linux-signed-image-Y.Y.Y-YYY-generic

Sudo apt-get -f install

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
6
Hemant Thorat

Pro mě oba apt-get purge a dpkg --remove obě selhaly. Takže jsem musel smazat pár starších obrazů jádra z/boot s rm -f.

5
orkoden

Už jsem smazal staré balíčky jádra (linux-headers ...)

linux-headers-* nejsou jádra. Balíčky jádra jsou ty, které se jmenují linux-image-*. Ti s názvem linux-headers-* jsou vývojové balíčky pro kompilaci modulů jádra: nežijí v adresáři/boot a nejsou vyžadovány pro běžné každodenní používání vašeho systému.

Soubory uvedené v/boot do obsahují několik starých obrazů jádra (vmlinuz*) a zkompilované obrázky initrd (initrd.img*) pro tato jádra, což znamená, že máte stále nainstalováno mnoho starých balíčků jádra.

Měli byste být schopni uvést seznam nainstalovaných jader

aptitude search ~ilinux-image

(Všimněte si, že to pravděpodobně vrátí i balíčky, které nejsou jádrem).

Obvykle není třeba instalovat více než dvě jádra - jedno, které se právě používá, a předchozí (jako záložní). Takže můžete začít odstraňovat ty starší, takto:

Sudo apt-get autoremove linux-image-3.2.0-23-generic

Nezapomeňte nahradit „3.2.0-23-generic“ skutečnou verzí jádra, kterou chcete odstranit! Neodstraňujte také balíčky jako linux-image-generic. Musíte být opravdu opatrní, abyste neodstranili aktuálně spuštěné jádro, jinak nebudete schopni spustit systém (Ubuntu vás může nebo nemusí na to varovat).

Aktuálně běžící jádro najdete s:

uname -r
2
thomasrutter

Ukazuji, že v roce 2017 má tato otázka nové připomínky a odpovědi, ale chybí jedna odpověď, o které si myslím, že je zde velmi užitečná:

buntu jako stolní operační systém s jednoduchým každodenním používáním nemá důvod být instalován se samostatným\boot oddílem a něco podobného NEBUDE nabídnout něco „běžnému uživateli“ ... Takže řešením je nová instalace bez\spouštěcí oddíl a tak nikdy nebudete mít takový problém

PS: Moje odpověď může být odstraněna nebo přidána do přijaté odpovědi ... (Myslím, že to pomůže některým lidem tímto způsobem)

1
koleygr

Měl jsem tento problém a ještě víc, když jsem odstranil nějaké initrd-img-xxx soubory ručně z/boot a měl jsem problém, který tyto staré verze stále generují a vyplňují /boot složka. Při opravě jsem postupoval následovně:

  • Vygenerovanou starou verzi jádra jsem odstranil ručně, abych uvolnil místo.
  • Upravíte textový konfigurační soubor jako superuživatel, takže do terminálu vložte následující:

    Sudo gedit /etc/initramfs-tools/update-initramfs.conf
    
  • Vyhledejte řádek update_initramfs=yes a změňte ji na update_initramfs=no. Uložte a ukončete soubor a poté spusťte:

    Sudo dpkg --configure -a
    

To vyřešilo můj problém. To bylo založeno na tento blog

Doufejme, že po restartu by mělo být vše v pořádku, a později můžete zkusit změnit no zpět na yes v update-initramfs.conf.

1
aibrahim

Velmi užitečný nástroj , který vymaže spouštěcí oddíl

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

Používejte na vlastní nebezpečí, ale fungovalo to pro mě:

Sudo bootnukem
1
Jonathan

Napsal jsem tento bash skript pro selektivní očištění starých jader najednou:

rm kernels real size

Všechny odkazy a pokyny jsou součástí odkazu.

0
WinEunuuchs2Unix

Níže je uveden bash skript, který jsem napsal, který dělá tento proces trochu uživatelsky přívětivější.

YMMV - byl vyroben pro mincovnu 14. Stále se učím BASH, takže je to asi trochu neohrabané. Používejte na vlastní nebezpečí, ale funguje to pro mě!

#!/bin/bash

endCol='\e[0m'
bold_red='\e[1;31m'
bold_green='\e[1;32m'
bold_yellow='\e[1;33m'

title_color='\e[0;30;47m'

function show_kernel_info {
clear
current_kernel=$(uname -r)
echo "Current ACTIVE kernel is:"
echo -e "  "$bold_yellow$current_kernel$endCol
echo "This kernel will be TOTALLY EXCLUDED from all actions in this script."
echo "Also, one fallback non-active kernel will be always left untouched."
echo ""
echo "These are the non-active kernels stored in /boot:"
count_of_old_kernels_in_boot=$(ls -o /boot/initrd* | grep -c -v "$current_kernel")
if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo " * No non-active kernels found! *"
else
  ls -o /boot/initrd* | grep -v "$current_kernel"
fi
echo ""
list_of_old_kernels=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic")
current_old_kernel=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic" | head -n 1)
count_of_old_kernels_installed=$(dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -c -v "linux-image-generic")
echo "Listing of all unused kernels still installed in the system (these may not exist in /boot):"
if [ $count_of_old_kernels_installed = 0 ]; then
  echo " * No unused kernel installs found! *"
else
  dpkg --list | grep linux-image | awk -F' ' '{ print $2 }' | grep -v "$current_kernel" | grep -v "linux-image-generic"
fi
echo ""
}

function exit_script {
free_space_after=$(df -BM /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
let freed_space=$free_space_after-$free_space_before
echo ""
echo "Results (in MB)"
echo "---------------"
echo "Free space in /boot before script was run: "$free_space_before
echo "Free space now: "$free_space_after
echo ""
echo "Amount of space freed up = "$freed_space
echo ""
echo "Press any key to exit."
read -s -n 1
echo ""
exit
}

# Main code
echo ""
echo -e $title_color" --------------------------- "$endCol
echo -e $title_color" -   Kernel Cleanup v1.0   - "$endCol
echo -e $title_color" --------------------------- "$endCol
echo ""
echo "Maximise this window for readability."
echo "Press any key to continue."
read -s -n 1
echo ""
echo "This script will remove old unused kernels, but it will Prompt you before removing each one."
echo "It will never remove the current running kernel, and will also leave one fallback kernel."
echo "It can also remove source files from /usr/src for each kernel removed."
echo "This is normally safe to do and will free up lots more space."
echo ""
echo "Do you want that done as well? (y/n, enter=yes)"
valid_input=0
while [ "$valid_input" = "0" ]; do
  read -s -n 1 YesNo_input
  if [ "$YesNo_input" = "" ]; then
    YesNo_input="y"
  fi
  case $YesNo_input
  in
    y)
    RemoveSource="y"
    valid_input=1
    ;;

    Y)
    RemoveSource="y"
    valid_input=1
    ;;

    n)
    RemoveSource="n"
    valid_input=1
    ;;

    N)
    RemoveSource="N"
    valid_input=1
    ;;
  esac
done

free_space_before=$(df -h /boot | tail -n 1 | awk -F' ' '{ print $4 }' | tr -d M)
show_kernel_info
while [ $count_of_old_kernels_in_boot -gt 1 ]; do
  # failsafe check if somehow the current kernel is about to be removed!
  if [ "$current_old_kernel" = "$current_kernel" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow the current kernel has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  # failsafe check if somehow a linux-image-generic entry is about to be removed
  if [ "$current_old_kernel" = "linux-image-generic" ]; then
    echo -e $bold_red"ERROR!"$endCol" Somehow one of the linux-image-generic entries has crept into the removal process!"
    echo "I refuse to do that! Aborting script."
    exit_script
  fi
  echo "Command about to be executed is:"
  echo "  $ Sudo apt-get purge \"$current_old_kernel\""
  check_in_boot=$(echo $current_old_kernel | sed 's/linux-image/initrd.img/g')
  if [ -e /boot/$check_in_boot ]; then
    echo -e $bold_yellow"Note:"$endCol" This kernel exists in /boot but it NON-active, so it's OK to remove."
  else
    echo -e $bold_green"Totally safe to remove:"$endCol" This kernel does NOT exist in /boot."
  fi
  echo ""
  echo "Are you sure you want to remove this kernel?"
  echo "(*upper case* Y=yes / any other key will exit the script)"
  read -s -n 1 yes_no
  echo ""
  # Only entering a single upper case Y will work!
  if [ "$yes_no" != "Y" ]; then
    echo "Aborting script."
    exit_script
  fi
  echo "Removing kernel "$current_old_kernel"..."
  sleep 1
  Sudo apt-get -y purge $current_old_kernel
  if [ "$RemoveSource" = "y" ]; then
    current_old_source=$(echo $current_old_kernel | sed 's/linux-image/linux-headers/g')
    current_old_source=$(echo $current_old_source | sed 's/-generic//g')
    current_old_source=$(echo $current_old_source | sed 's/-pae//g')
    Sudo apt-get -y purge $current_old_source
  fi
  show_kernel_info
done

if [ $count_of_old_kernels_in_boot = 0 ]; then
  echo -e $bold_red"There are no NON-active kernels to remove!"$endCol
else
  echo -e $bold_red"There is only one NON-active kernel left in /boot!"$endCol
  echo "This script will not remove the last non-active kernel so that you have at least one backup kernel."
fi
echo "Aborting script."
exit_script
0
wibbynut

[Jako AskUbuntu noob nemůžu komentovat, dokud reputace = 50, proto kvůli tomu nehlasujte.]

Můj server to také dělal. Doslova žádná z očekávaných odpovědí zde nefungovala, protože tyto vyžadují určitý pracovní prostor na/boot, aby mohly být dokončeny. Je-li spouštěcí oddíl plný, náhle skončí bez odstranění všech obrázků.

Jediná věc, která pro mě pracovala, bylo zkontrolovat aktuální obrázek a poté ručně Sudo rm filename pro nejstarší obrazové soubory (každý měl - 3.16.0- v jejich jménech). Jakmile to bylo hotovo, pak Sudo apt-get autoremove měl krouticí místnost, kterou potřeboval k provedení své práce. Zdůraznil některé chyby spojené s touto verzí, například: "depmod: FATAL: nelze načíst /boot/System.map-3.16.0-30-generic: Žádný takový soubor nebo adresář", ale to se dá očekávat.

Po dokončení aplikace df vrátila 42% v použití pro/boot, což naznačuje, že je to opět zdravé.

0
Justin Case

/ bootovací oddíl může být někdy podivný

nezačínejte přímo mazat soubory jádra.

Kroky, které je třeba sledovat

  1. Zkontrolujte, zda aktuálně nainstalované jádro používá systém linux

    uname -r

    to by vám mělo dát název aktuálně nainstalovaného jádra v systému

  2. Nyní začněte mazat další soubory kromě jednoho konkrétního nainstalovaného ve vašem systému

    apt-get remove linux-image-XXXXX

  3. Odstraňte také záhlaví souboru

    apt-get remove linux-headers-XXXXX

  4. Také může nastat situace, kdy apt přestal fungovat, v tom případě přepněte na/boot

    cd /boot

  5. Začněte odebírat soubory ručně, ale velmi pečlivě také mějte na paměti, že nesmažete installed one's kernal soubory z vašeho systému.

    rm linux-image-XXXXX

    rm linux-image-extra-XXXXXX

  6. Po odstranění správných souborů vyčistěte částečné instalace, pokud existují

    apt-get -f install

  7. Odebrat další soubory, které tam sedí, jako spouštěcí soubory vyčištěny ručně

    apt-get autoremove

  8. Aktualizujte grub

    update-grub

  9. Nakonec aktualizujte své systémové balíčky

    apt-get update

0
user225

V aptitude nebo synaptic je sekce “starý nebo ručně instalovaný zabalený”. Tam by měly být staré linuxové balíčky.

0
Martin Ueding

Uložit tento skript jako /usr/local/bin/remove_kernels.sh (nezapomeňte udělit oprávnění ke spuštění Sudo chmod 755 /usr/local/bin/remove_kernels.sh):

#!/bin/sh
if test $(id -u) != 0; then
 echo Error: You must be root to run this script!
 exit 1
fi
apt purge $( dpkg --list | grep -P -o "linux-image-\d\S+" | grep -v $(uname -r | grep -P -o ".+\d") )
update-grub

Poté odeberte všechna stará jádra: zadejte [Sudo remove_kernels.sh

0
Anthony Kelly