Nasıl / boot içinde daha fazla yer boşaltıyorum?

523

/boot bölümüm neredeyse dolu ve sistemimi her yeniden başlattığımda bir uyarı alıyorum. Eski çekirdek paketlerini (linux-headers ...) zaten sildim, aslında otomatik güncellemeyle birlikte gelen daha yeni bir çekirdek sürümünü yüklemek için yaptım.

Bu yeni sürümü yükledikten sonra, bölüm neredeyse doldu. Yani başka ne silebilirim? Eski çekirdek görüntüleriyle ilişkili başka dosyalar var mı?

İşte /boot bölümümdeki dosyaların bir listesi:

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

Şu anda, 3.0.0-14-generic çekirdeğini kullanıyorum.

    
sordu user6722 22.12.2011 11:06

20 cevap

597

Çok fazla kullanılmayan çekirdek var. Son çekirdeğin tümünü hariç tut:

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

Bunun için kısa yol:

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

linux-image-x.x.x-x paketini kaldırmak da linux-image-x.x.x-x-generic 'i kaldıracaktır.

Üstbilgiler /usr/src 'ya yüklenir ve ağaç-dışı çekirdek modülleri oluştururken kullanılır (tescilli nvidia sürücüsü ve sanal kutu gibi). Eşleşen çekirdek paketi ( linux-image-* ) yüklü değilse çoğu kullanıcı bu başlık paketlerini kaldırmalıdır.

Yüklenen tüm çekirdekleri listelemek için:

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

Geçerli çalışan çekirdek hariç, tüm çekirdeklerin ve başlıkların kaldırılabileceğini gösteren bir komut:

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

linux-headers-<some number> veya linux-image-<some number> ile başlayan tüm paketleri seçer, yüklenen paketler için paket adlarını yazdırır ve sonra geçerli yüklü / çalışan çekirdek 'i hariç tutar (mutlaka en son çekirdek!). Bu, daha eski, bilinen çalışma çekirdeklerini kaldırmadan önce daha yeni bir çekirdeğin test edilmesinin önerisine uymaktadır.

Yani, çekirdekleri yükselttikten ve test etmek için yeniden başlattıktan sonra, diğer tüm çekirdekleri kaldırabilirsiniz:

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

Önyükleme bölümünüz dolu. Bu bir çekirdek güncellemesi olduğundan, bu dosyalar önyükleme bölümüne kopyalanacaktır, böylece temizlemeniz gerekir. İşte size nasıl yapacağınızı gösteren bir blog yayını Eski çekirdek resimlerini tek bir komutla temizleyin. Yöntemin temel bir özetini vereceğim. Çekirdeğinizin geçerli sürümünü yazdırmak için bu komutu kullanın:

uname -r

Ardından, en yeni çekirdeğiniz olmayan tüm kernelleri yazdırmak için bu komutu kullanın:

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

Mevcut çekirdeğinizin o listede olmadığından emin olun. Son komutun çoğunluğunun bunun nasıl olduğuna dikkat edin (aşağı aşağıda). Bu eski çekirdeği kaldırmak ve silmek için bu argümanları şu şekilde aktarmak isteyeceksiniz:

sudo apt-get -y purge

Şimdi, bu son iki komutu bu kutsal olmayan karmaşayı birleştirerek istediğimiz her şeyi yapabiliriz:

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

Ve bu bir komut senin için herşeyi halledecek. Bunun mükemmel çalıştığını doğrulayacağım, ancak hiç kimseye internette güvenmeyeceğim. :) Daha fazla bilgi için, blog yazısı, komutun her bir parçasının neyi okuduğunun çok iyi bir açıklamasını verir, böylece ne yapmak istediğinizi yaptığınızdan emin olursunuz.

    
verilen cevap dward 21.02.2013 04:38
92
sudo apt-get autoremove

Bu komut işi otomatik olarak yapıyor.

    
verilen cevap karan 05.11.2012 06:58
38

Synaptic Paket Yöneticisi, eski çekirdek resimlerini kolayca seçmek ve kaldırmak için kullanılabilir.

Synaptic’in yüklü değilse:

sudo apt-get install synaptic

Uygulamayı başlatın ve gösterilen seçenekleri seçin.

"2.6.x" sürümüyle tüm "linux-" paketlerini vurgulayabilmelisiniz, burada x, / boot klasörünüzdeki dosyalara göre 31 ile 38 arasındadır.

Bu linux paketlerinin her birini sağ tıklayın ve "Tam Kaldırma için İşaretle" seçeneğini belirtin. Son olarak uygulama düğmesine tıklayın. Bu, tüm dosyaları ve ilişkili dosyaları kaldıracaktır. % Co_de% klasörünüz şimdi biraz daha düzenli olmalı.

    
verilen cevap fossfreedom 24.12.2011 15:34
24

Probleminizin ayrıntılı gönderiminden dolayı teşekkür ederim, bu bana doğru yönde gitmemi sağladı. Önceki kernel dosyalarını tutmak yararlı olsa da, hepsini bir seferde kaldırabilirsiniz, bu mesajı kontrol edin:
Tüm Kullanılmamış Linux Çekirdek Başlıkları, Görüntüler ve Modülleri Nasıl Kaldırılır

Komut satırı ile işim bitti. Bunu uzaktan kumandayı kullanarak bir terminal oturumu açmak ve sadece yapıştırmak için WINSCP gibi bir şey yapıyorsanız, çok iyi çalışır.

Burada makale bağlantısından kopyalanır, makalenin tamamını okumanızı öneririm:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*//;/[0-9]/!d' | xargs sudo apt-get -y purge
    
verilen cevap Omni 01.06.2012 14:53
22

Bu eski bir soru için yeni bir cevaptır, ancak bu şeyi temizlemenin kolay bir yolu (ve daha fazlası) Ubuntu Tweak . Yüklemek için :

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

sonra Ubuntu Tweak'i çalıştırabilir, "hademe" sekmesine gidersiniz ve buradan üç tıklamayla ilgili bir sorun olur:

Yine de, son çekirdeği (asla bilemezsiniz) ya da güvenlik için iyi bilinen bir çalışma çekirdeğini bırakmak daha iyidir; ama bu kolayca özelleştirilebilir.

Bir çok şeyi temizlemek için aynı aracı kullanabilirsiniz --- sadece küçük resim önbelleğini veya TB önbelleğini temizlerseniz, sistemin gerektiğinde bunları yeniden oluşturması gerektiğini unutmayın.

    
verilen cevap Rmano 25.11.2014 14:11
17

Sorunları doğrudan paketlerden kaldırmak için dpkg kullanarak düzeltebildim. Paketler hala dpkg -l olarak listelenmiş olsa da, dosyalar /boot 'den kaldırılır ve alan boşaltılır.

[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'

Bundan sonra, apt-get -f install bağımlılık sorunlarımı düzeltti ve hepsi de dünyayla ilgiliydi.

Bu cevabı kabul etmeyeceğim, ancak hala /boot boyutumu artırmam mı yoksa başka bir şey mi yapmam gerektiğini bilmem gerekiyor.

    
verilen cevap Phrogz 03.12.2011 19:47
11

Ayrı / önyükleme bölümlerini kullanmayı bırakabilirsiniz, o zaman bu kadar sınırlı alanınız olmayacaktır. Bunu yapmak için, bölümün bağlantısını kesin, sonra başka bir yere monte edin ve tüm dosyaları kök bölümünüzdeki / boot dizinine kopyalayın, daha sonra / etc / fstab girişini kaldırın ve grubu yeniden yükleyin. Örneğin (doğru bölümü kullanmanız gerekecektir):

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

Daha sonra eski / önyükleme bölümünü silmek için gparted'i kullanabilir ve muhtemelen o alanı kullanmak için kök bölümünü genişletebilirsiniz. Kök bölümünü genişletmek için, livecd'den önyükleme yapmanız gerekecektir ve boş alan hemen sağa doğru olmalıdır. / Önyükleme bölümü şu anda kök bölümünün solundaysa, önce kök bölümünü sola hareket ettirmeniz, sonra uzatmanız gerekir, ancak bu çok uzun bir zaman alabilir, bu nedenle bela.

    
verilen cevap psusi 22.12.2011 17:38
5

Benim için hem apt-get purge hem de dpkg --remove ikisi de başarısız oldu. Bu yüzden, rm -f ile bir çift eski çekirdek görüntüsünü / boot'dan silmeliydim.

    
verilen cevap orkoden 14.10.2013 11:22
4

Yukarıdaki yanıtlardan en iyi şekilde yararlandığım, denenmiş ve doğru yaklaşımım şudur:

  • Çalışan çekirdeği bulmak için uname -a .
  • Şu anda yüklü olan tüm çekirdek paketlerini listelemek için dpkg -l linux-{headers,image}-\* | grep ^ii . Bu, çalışan çekirdeği içerecektir.
  • Eski çekirdekleri kaldırmak için sudo apt-get purge linux-{image,headers}-3.16.0-{xx,yy,zz} . % Co_de% öğesini kaldırmak istediğiniz çekirdek listesiyle değiştirin; bunlar, şu anda çalışan çekirdekten daha eski olan önceki komut tarafından listelenen yapılardır. Şu anda çalışan çekirdeği kaldırdığınızdan emin olun; sisteminiz önyüklenebilir olmaz . Ayrıca, çekirdek sürümünü xx,yy,zz 'den sisteminizde yüklü olana göre değiştirmeniz gerekebilir.
  • İsteğe bağlı olarak, ek bir 3.16.0 yapın; bu, eski çekirdeklerin artık bağımlı olmayan ve artık daha fazla alan açmadan kalan artık bağımlılıklarını kaldıracaktır.

Çekirdek sürümleri eşleştirilmeden başlık dosyalarınız olabilir veya tam tersi olabilir; yalnızca bu sürümlerin tümünü komutta ekleyin. APT, bazı paketlerin yüklenmediği için kaldırılamayacaklarından şikayet edecek, ancak bu hiçbir zarar vermeyecektir.

Bir şey başarısız olursa ...

  • apt komutu cihazda kalan boşluk yok hatası nedeniyle başarısız olursa, bunun yerine ilgili dpkg komutunu kullanın: sudo apt-get autoremove .
  • dpkg komutu hala çalışmıyorsa, sudo dpkg --purge linux-{image,headers}-3.16.0-{xx,yy,zz} paketleri aynı sürümün linux-image paketleri tarafından gerekli olduğundan (ayrıca kaldırmak istediğiniz), dpkg bunu çözememiş olabilir. % Co_de% çıktısını tekrar inceleyin ve komut satırında herhangi bir paket adı sonekini belirtin. Örneğin, sistemlerimden birinde, sonunda çalışılan komut linux-headers idi.
  • Başka bir hata alırsanız, yardım isteyin — düşündüğünüzden farklı bir sorununuz olabilir.
verilen cevap user149408 09.07.2015 22:24
2
  

Eski çekirdek paketlerini zaten sildim (linux-headers ...)

linux-headers-* çekirdek değil. Çekirdek paketleri linux-image-* adlı paketlerdir. % Co_de% adındakiler çekirdek modülleri derlemek için geliştirme paketidir: / boot dizininde yaşamazlar ve sisteminizin genel kullanımı için gün boyu gerekli değildir.

/ boot make içinde listelediğiniz dosyalar birkaç eski çekirdek görüntüsünü ( linux-headers-* ) içerir ve bu çekirdekler için initrd resimleri ( vmlinuz* ) derlenmiş olur. Eski çekirdek paketlerinin çok yüklü.

Kurulu çekirdeğinizi

ile listeleyebilmeniz gerekir
aptitude search ~ilinux-image

(Bunun büyük ihtimalle çekirdek olmayan paketleri de iade edeceğini unutmayın.)

Genellikle ikiden fazla çekirdeğe gerek yoktur - şu anda kullanımda olan ve bir öncekine (bir geri dönüş olarak). Böylece, eskileri tek tek çıkarmaya başlayabilirsiniz:

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

Kaldırmak istediğiniz gerçek çekirdek sürümüyle "3.2.0-23-jenerik" kelimesini değiştirdiğinizden emin olun! Ayrıca, initrd.img* gibi paketleri kaldırmayın. Şu anda çalışan çekirdeği kaldırmamaya gerçekten dikkat etmelisiniz ya da önyükleme yapamayacaksınız (Ubuntu bu konuda sizi uyarabilir veya uyarmayabilir).

Şu anda çalışan çekirdeğinizi şu şekilde bulabilirsiniz:

uname -r
    
verilen cevap thomasrutter 29.08.2014 11:15
2
git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh

Kendi sorumluluğunuzda kullanın, ancak benim için çalıştı:

sudo bootnukem
    
verilen cevap Jonathan 14.08.2016 22:08
1

Bu problemi ve / veya initrd-img-xxx dosyalarını el ile / boot'dan kaldırdığımda, bu eski sürümlerin oluşturulup /boot klasörüne doldurulmasında sorun yaşadım. Düzeltmek için aşağıdakileri takip ettim:

  • Oluşturulan eski çekirdek sürümünü el ile boş alan olarak kaldırdım.
  • Bir metin yapılandırma dosyasını süper kullanıcı olarak düzenleyeceksiniz, böylece aşağıdakileri bir terminale yapıştırın:

    sudo gedit /etc/initramfs-tools/update-initramfs.conf
    
  • update_initramfs=yes satırını bulun ve update_initramfs=no olarak değiştirin. Dosyayı kaydedin ve çıkın, ardından çalıştırın:

    sudo dpkg --configure -a
    

Bu benim sorunumu çözdü. Bu, bu bloga dayanıyordu.

Umarız, yeniden başlattığınızda her şey iyi olmalı ve sonra no 'yi yes ' de update-initramfs.conf olarak değiştirmeyi deneyebilirsiniz.

    
verilen cevap aibrahim 23.03.2017 09:59
1

Tüm çekirdekleri listele:

dpkg --list 'linux-image*'

Geçerli çekirdeği görüntüle:

uname -r

Tüm çekirdekleri HARİÇ mevcut listeyi listeleyin:

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

Mevcut çekirdeğinizin bu listede olmadığından emin olun.

Tüm çekirdekleri HARİÇ mevcut olandan kaldır:

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

Diğer öğeleri temizle:

sudo apt-get autoremove

Dosyaları yüklemeye / kaldırmaya hala önyükleme diski alanı hatası veriyorsa, doğrudan OLD görüntüsünü / boot dizininden kaldırın

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

rm /boot/*-3.13.0-119*; 

NOT: Lütfen herhangi bir resmi silmeden önce mevcut çekirdek resmini tekrar gözden geçirin.

    
verilen cevap Hemant Thorat 10.07.2018 12:35
0

Yetenek veya sinaptikte "eski veya manuel olarak kurulan paketlenmiş" bir bölüm var. Orada eski linux paketleri olmalı.

    
verilen cevap Martin Ueding 22.12.2011 12:59
0

Aşağıda yazdığım, basamağı biraz daha kullanıcı dostu hale getiren bir bash betiği var.

YMMV - Nane 14 için yapıldı. Hala BASH öğreniyor, bu yüzden muhtemelen biraz tıkalı. Kendi riski altında kullan ama benim için çalışıyor!

#!/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  }' | grep -v "$current_kernel" | grep -v "linux-image-generic")
current_old_kernel=$(dpkg --list | grep linux-image | awk -F' ' '{ print  }' | 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  }' | 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  }' | 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  }' | 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  }' | 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
    
verilen cevap wibbynut 08.03.2014 07:33
0

[AskUbuntu noob olarak itibara = 50 olana kadar yorum yapamam, bu yüzden bu yüzden aşağı oy vermeyin.]

Sunucum bunu da yapıyordu. Tam olarak burada beklenen cevapların hiçbiri işe yaramadı, çünkü bunların tamamlanabilmesi için / boot üzerinde bir çalışma odası gerektiriyordu. Önyükleme bölümü doluysa, görüntülerin hiçbirini silmeden aniden sona erer.

Benim için işe yarayan tek şey, geçerli resmi incelemek, ardından en eski resim dosyaları için sudo rm filename değerini (her birinin adlarında -3.16.0-30 ) bulunmaktı. Bu yapıldıktan sonra, sudo apt-get autoremove işini yapmak için gerekli olan kıpırtı odasına sahipti. Bu sürümle ilgili bazı hataların altını çizdi, örneğin: "depmod: FATAL: /boot/System.map-3.16.0-30-generic: Bu tür bir dosya veya dizin yüklenemedi" ancak beklenen bir durum.

Bittiğinde, df , / boot için yeniden kullanımda% 42 oranında bir geri dönüş yaptığını belirtiyor.

    
verilen cevap Justin Case 08.02.2017 01:44
0

Bunu bash senaryosunu yazdım bir kerede seçici arındırılmış eski çekirdeklere:

Tüm bash kodu ve talimatlar bağlantıya dahil edilir.

    
verilen cevap WinEunuuchs2Unix 31.07.2017 01:46
0

Bunu hala 2017'de bu sorunun yeni yorumları ve cevapları olduğunu ancak bence bir cevap eksik olduğunu düşünüyorum.

Basit günlük kullanımın bir masaüstü işletim sistemi olarak Ubuntu'nun ayrı bir \ boot bölümüyle yüklenmesi için bir neden yoktur ve bunun gibi bir şey "ortak bir kullanıcı" için bir şey sunmaz ... Bu yüzden yeni bir çözüm bir çözümdür \ boot bölümü olmadan ve bu şekilde asla böyle bir sorun yaşamayacaksınız

PS: Cevabım kabul edilen cevapta silinebilir veya eklenebilir ... (Sanırım bu şekilde bazı insanlara yardımcı olacaktır)

    
verilen cevap koleygr 20.08.2017 08:58
-1

Daha fazla kullanılmayan dosyayı kaldıramazsanız ve / veya aynı aygıtta boş alan içeren başka bir bölümünüz varsa, / boot bölümünün gparted . (Kurulum ortamına da dahil edilmiştir.)

Uyarı : Bölümün yeniden boyutlandırılması tehlikeli işlem olduğundan, önemli verilerinizi başka bir medyaya kaydetmeden önce kaydedin!

    
verilen cevap Rudolf Dovičín 02.01.2015 22:42

Etiketlerdeki diğer soruları oku