/ boot üzerindeki düşük disk alanı nedeniyle yükseltilemiyor

115

do-release-upgrade yapmayı deniyorum ama sonra olsun:

  

Yeterli boş disk alanı yok

     

Güncelleme iptal edildi. Yükseltme toplam 25,7 M'ye ihtiyaç duyuyor   disk üzerindeki boşluk '/ boot'. Lütfen en az 25.7 milyon M serbest bırakın.   '/ boot' disk alanı. Çöp kutunuzu boşaltın ve geçici paketleri kaldırın   'sudo apt-get clean' kullanarak eski kurulumların.

df çıktısı:

                    237251272 214797108  10402504  96% /
udev                    488120         4    488116   1% /dev
tmpfs                   198676       668    198008   1% /run
none                      5120         0      5120   0% /run/lock
none                    496684         0    496684   0% /run/shm
/dev/sda1               233191    225867         0 100% /boot

Nasıl olurda botta hiç boşluk kalmaz? İşte ls -as /boot çıktısı:

total 221839
    4 .
    4 ..
  645 abi-2.6.32-34-generic-pae
  698 abi-2.6.35-30-generic-pae
  727 abi-2.6.38-12-generic-pae
  727 abi-3.0.0-12-generic-pae
  727 abi-3.0.0-13-generic-pae
  727 abi-3.0.0-14-generic-pae
  727 abi-3.0.0-15-generic-pae
  727 abi-3.0.0-16-generic-pae
  727 abi-3.0.0-17-generic-pae
  727 abi-3.0.0-19-generic-pae
  761 abi-3.0.0-20-generic-pae
  115 config-2.6.32-34-generic-pae
  128 config-2.6.35-30-generic-pae
  136 config-2.6.38-12-generic-pae
  140 config-3.0.0-12-generic-pae
  140 config-3.0.0-13-generic-pae
  140 config-3.0.0-14-generic-pae
  140 config-3.0.0-15-generic-pae
  140 config-3.0.0-16-generic-pae
  140 config-3.0.0-17-generic-pae
  140 config-3.0.0-19-generic-pae
  140 config-3.0.0-20-generic-pae
    5 grub
10773 initrd.img-2.6.32-34-generic-pae
13619 initrd.img-2.6.35-30-generic-pae
15365 initrd.img-2.6.38-12-generic-pae
16481 initrd.img-3.0.0-12-generic-pae
16487 initrd.img-3.0.0-13-generic-pae
16501 initrd.img-3.0.0-14-generic-pae
16476 initrd.img-3.0.0-15-generic-pae
16481 initrd.img-3.0.0-16-generic-pae
16478 initrd.img-3.0.0-17-generic-pae
   12 lost+found
  174 memtest86+.bin
  176 memtest86+_multiboot.bin
 1700 System.map-2.6.32-34-generic-pae
 1841 System.map-2.6.35-30-generic-pae
 2115 System.map-2.6.38-12-generic-pae
 2141 System.map-3.0.0-12-generic-pae
 2141 System.map-3.0.0-13-generic-pae
 2143 System.map-3.0.0-14-generic-pae
 2146 System.map-3.0.0-15-generic-pae
 2147 System.map-3.0.0-16-generic-pae
 2147 System.map-3.0.0-17-generic-pae
 2148 System.map-3.0.0-19-generic-pae
 2149 System.map-3.0.0-20-generic-pae
    2 vmcoreinfo-2.6.32-34-generic-pae
    2 vmcoreinfo-2.6.35-30-generic-pae
    2 vmcoreinfo-2.6.38-12-generic-pae
    2 vmcoreinfo-3.0.0-12-generic-pae
    2 vmcoreinfo-3.0.0-13-generic-pae
    2 vmcoreinfo-3.0.0-14-generic-pae
    2 vmcoreinfo-3.0.0-15-generic-pae
    2 vmcoreinfo-3.0.0-16-generic-pae
    2 vmcoreinfo-3.0.0-17-generic-pae
    2 vmcoreinfo-3.0.0-19-generic-pae
    2 vmcoreinfo-3.0.0-20-generic-pae
 4092 vmlinuz-2.6.32-34-generic-pae
 4347 vmlinuz-2.6.35-30-generic-pae
 4567 vmlinuz-2.6.38-12-generic-pae
 4675 vmlinuz-3.0.0-12-generic-pae
 4676 vmlinuz-3.0.0-13-generic-pae
 4681 vmlinuz-3.0.0-14-generic-pae
 4698 vmlinuz-3.0.0-15-generic-pae
 4700 vmlinuz-3.0.0-16-generic-pae
 4700 vmlinuz-3.0.0-17-generic-pae
 4703 vmlinuz-3.0.0-19-generic-pae
 4705 vmlinuz-3.0.0-20-generic-pae

uname -a çıktısı:

 Linux kitsch 3.0.0-17-generic-pae #30-Ubuntu SMP Thu Mar 8 17:53:35 UTC 2012 i686 i686 i386 GNU/Linux
    
sordu clamp 27.05.2012 16:48

7 cevap

155

/ boot bölümünüz eski çekirdeklerle doldurulur. Bazen bunu neden düzeltmediğinden emin değil. Hangi paketlerin geldiğini biliyorsanız eski çekirdekleri kolayca kaldırabilirsiniz.

Mevcut sürümünüzü kontrol etmek için önce uname -a kontrol edin.

Ardından aşağıdaki komutu çalıştırın:

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

Bu komut, artık ihtiyacınız olmayan tüm paketleri listeleyecektir. Onları otomatik olarak kaldırmaktan hoşlanmıyorum, çekirdeği çıkarmaya gelince kontrolde olmayı seviyorum. Yani listelenen her paket için şunları yapın:

sudo apt-get -y purge some-kernel-package

İntermezzo

Bu intermezzo, komutların nasıl çalıştığını ve linux-libc-dev:amd64 ile bir sorunu çözmeyi denediğini daha ayrıntılı olarak açıklar. Çoğu kullanıcı bu paragraftan geçebilir.

  • dpkg -l 'linux-*' , 'linux -' ile başlayan bir ada sahip tüm paketleri listeler
  • % Co_de% ii '
  • sed '/^ii/!d; remove all lines that do *not* start with geçerli çalışan çekirdek sürümünü bul
  • uname -r | sed "s/\(.*\)-\([^0-9]\+\)//" Geçerli çalışan çekirdek sürüm numarasını içerenler hariç tüm satırları kaldırın
  • /'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)//")"'/d Her satır listesi için yalnızca paket adı
  • s/^[^ ]* [^ ]* \([^ ]*\).*// Sayı içermeyen satırları kaldırın.

Frederick Nord’un sorununu düzeltmek için Komutun aşağıdaki gibi değiştirilebileceğini düşünüyorum:

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

Temel olarak ek bir filtre ekler:

  • / ^ linux- (headers \ | image) /! d /[0-9]/!d veya linux-headers ile başlamayan tüm satırları sil

/ İntermezzo

linux-image listelenen paketlerden biriyle değiştirilebilir. Sadece geçerli kullanımdaki çekirdek paketlerini ( some-kernel-package tarafından listelendiği gibi) kaldırmayacağınızı unutmayın. uname -a vb.

xargs komutunu kullanarak daha da otomatikleştirilebilir, ama bundan hoşlanmıyorum. Bu kişisel bir şey. Ancak, burada bunu yapmak için komut:

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

Bu sudo apt-get purge -y linux-headers-3.0.0-12 'nin neye benzediği, sadece bir yedek çekirdek (2.6.38-11) ve sadece 3.2.0-24'ün geçerli olduğu:

$ ls -l /boot
total 59388
-rw-r--r-- 1 root root   730545 Sep 13  2011 abi-2.6.38-11-generic
-rw-r--r-- 1 root root   791023 Apr 25 13:51 abi-3.2.0-24-generic
-rw-r--r-- 1 root root   130326 Sep 13  2011 config-2.6.38-11-generic
-rw-r--r-- 1 root root   140341 Apr 25 13:51 config-3.2.0-24-generic
drwxr-xr-x 3 root root     5120 May 27 17:46 grub
-rw-r--r-- 1 root root 20883146 Oct  1  2011 initrd.img-2.6.38-11-generic
-rw-r--r-- 1 root root 22474219 May  5 09:04 initrd.img-3.2.0-24-generic
drwxr-xr-x 2 root root    12288 Apr 16  2009 lost+found
-rw-r--r-- 1 root root   176764 Nov 27 11:00 memtest86+.bin
-rw-r--r-- 1 root root   178944 Nov 27 11:00 memtest86+_multiboot.bin
-rw------- 1 root root  2656297 Sep 13  2011 System.map-2.6.38-11-generic
-rw------- 1 root root  2884358 Apr 25 13:51 System.map-3.2.0-24-generic
-rw------- 1 root root     1369 Sep 13  2011 vmcoreinfo-2.6.38-11-generic
-rw------- 1 root root  4526784 Sep 13  2011 vmlinuz-2.6.38-11-generic
-rw------- 1 root root  4965776 Apr 25 13:51 vmlinuz-3.2.0-24-generic

Ve dosya sistemi kullanımı:

$ df -h /boot
Filesystem Size Used Avail Use% Mounted
/dev/sda5  228M  63M  154M  29% /boot
    
verilen cevap jippie 27.05.2012 17:28
43

sudo apt-get autoremove

benim için hile yaptı, kullanılmayan tüm çekirdek paketlerini başarıyla temizledi.

    
verilen cevap topless 24.04.2014 11:18
8

Kabul edilen yanıtla eşdeğer - başka bir (muhtemelen) daha kolay yolu ubuntu-tweak aracını yüklemek, buradan . "Janitor" a gidin ve temizlemek için "Eski Çekirdek" i seçin. Birkaç tıklama ile yapılabilir. (14.04 masaüstünde test edildi)

    
verilen cevap Yixing 14.11.2015 08:00
2

Burada diğer GUI cevaplarıyla karşılaştırıldığında, bu cevabın avantajı, Ubuntu Bash'in üçüncü taraf uygulamaları kurmadan kullanılır.

Zenite ve Bash tabanlı çözüm

Zenity, bir listeyi işlemek ve radyo düğmeleri ile öğeleri seçmek için terminale güzel bir GUI arayüzü sunar:

Önyüklemiş olduğunuz geçerli çekirdek kaldırılamaz ve listede yer almaz. Rapor edilen boyut, /boot dizininde ne kadar kaydedileceğidir. Daha fazla diskinizde kaydedilir, çünkü çekirdek ikilileri de diğer alanlarda bulunur. 27 Temmuz 2017, not: /usr/src/*kernel_version* ve /lib/modules/*kernel_version* dizinleri şimdi de dahil edilmiştir.

Değiştirilen Tarih , stat komutu kullanılarak keşfedildi. Sistemimde bu tarih, çekirdeğin her açılışında "dokunuldu" ( Belirli bir çekirdek sürümü son booted ne zaman öğreneceksiniz? ) cron yeniden komut dosyası. Ancak, sisteminizde tarih, önyüklemeyi son kez değil, çekirdek çıkış tarihi olacaktır.

apt-get purge , iptal etme şansı veriyor

Temizlenecek olan her şeyi görüntülemeniz ve kurtarılacak toplam disk alanını (biraz yanıltıcı) görmeniz için son bir fırsat sunulur:

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] 

Kod

Bu kodu rm-kernels adlı /usr/local/bin adlı bir yürütülebilir dosyaya kopyalayın:

#!/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 }')

    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 }')
        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 }')
    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

NOT: Dosyayı oluşturmak için sudo iznine ihtiyacınız var, bu yüzden kullan:

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

Dosyayı çalıştırılabilir yapmak için:

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

NOT: Bu betiğin bir sunucu (Metin tabanlı değil GUI) sürümü için: bkz: önyükleme menüsünü temizlemek için eski çekirdek sürümlerini nasıl kaldırırım?

28 Temmuz 2017 Güncellemeler

Her bir çekirdeğin hesaplanan boyutu% 50'den toplam 5 dosya olan /boot/*kernel_version* 'sinden alındı. Formül, dosyaları /usr/src/*kernel_version* ve /lib/modules/*kernel_version* içerecek şekilde değiştirildi. Her çekirdeğin hesaplanan boyutu şimdi ~ 400 MB. Yukarıdaki rm-kernels ve rm-kernels-server kodu güncellendi. Ancak, yukarıdaki örnek ekranlar henüz bu değişiklikleri yansıtmamaktadır.

Varsayılan değer, linux başlıkları için 125 MB boyutundaki dosyaların boyutunu ve 220 MB hızında linux görüntüsünü tahmin etmektir çünkü dosyalar önbelleğe alınmadığı sürece du 'si ağrılı şekilde yavaş olabilir. % Co_de% kullanarak gerçek boyutu almak için komut dosyasına herhangi bir parametre aktarın.

Tüm çekirdek boyutlarının toplamı (kaldırılamayan geçerli çalışan sürüm hariç) artık başlık çubuğunda gösteriliyor.

Her Kernel'in Son Erişim Tarihi 'ni görüntülemek için kullanılan iletişim kutusu. Bu tarih, yedekleme veya benzer işlemler sırasında tüm çekirdekler için kütle üzerine yazılabilir. İletişim kutusu artık Değiştirilmiş Tarih 'i gösteriyor.

    
verilen cevap WinEunuuchs2Unix 10.05.2017 04:54
0

Sinaptik paket yöneticisi aracılığıyla çekirdekleri kolayca kullanabilirsiniz. Ama önce, terminal komut satırında güncel kullanılan çekirdek sürüm adını bilmelisiniz:

[email protected]:~$ uname -r 4.4.0-75-generic Yani en azından bu sürüm el değmeden kalmalısın. Sinaptik açın ve aşağıda gösterildiği gibi hızlı filtre yer tutucusunu doldurun: Şimdi silmek istediğiniz tüm paketleri seçebilir ve aşağıdakileri yapabilirsiniz: Tam kaldırma işlemi için işaretle - & gt; uygulayın. En son güncel çekirdek paketini ve bir önceki çekirdeği korumayı öneririm. Örneğin bu durumda, linux-image-4.4.0-66-jenerik ve linux-image-extra-4.4.0-66-jenerik 'den güvenle kurtulabilirsiniz. ama 4.4.0-72 ve elbette 4.4.0-75 tutmak iyi bir şey.

    
verilen cevap daGo 07.05.2017 12:39
0

Komut satırı kolaylığı için:

İşte

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

sudo bootnukem --dry-run
    
verilen cevap Jonathan 09.05.2017 18:57
0

Linux Nane 18.3 üzerinde çalışır (Ubuntu 16.04 tabanlı).

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

Kaynak: İşte

    
verilen cevap Raffael 23.01.2018 16:47

Etiketlerdeki diğer soruları oku