/boot
Bölüm için atanmış 200 MB'ım var. Çekirdeği güncellemeye çalıştığımda, temelde /boot
dolu olduğunu belirten bir hata mesajı alıyorum .
/boot
Eski çekirdekleri temizlemek ve kaldırmak / yedeklemek için ne yapabilirim ?
/boot
Bölüm için atanmış 200 MB'ım var. Çekirdeği güncellemeye çalıştığımda, temelde /boot
dolu olduğunu belirten bir hata mesajı alıyorum .
/boot
Eski çekirdekleri temizlemek ve kaldırmak / yedeklemek için ne yapabilirim ?
Yanıtlar:
Öncelikle çekirdek sürümünüzü kontrol edin, böylece çalışan çekirdek görüntüyü silmeyeceksiniz:
uname -r
Şimdi bu komutu kurulu çekirdeklerin listesi için çalıştırın:
dpkg --list 'linux-image*' | grep ^ii
ve artık çalıştırarak istemediğiniz / ihtiyaç duymadığınız çekirdekleri silin:
sudo apt-get remove linux-image-VERSION
VERSION'ı, çıkarmak istediğiniz çekirdeğin sürümüyle değiştirin.
Eski çekirdekleri çıkarmayı tamamladığınızda, artık ihtiyacınız olmayacak paketleri kaldırmak için bunu çalıştırabilirsiniz:
sudo apt-get autoremove
Sonunda, grub çekirdek listesini güncellemek için bunu çalıştırabilirsiniz:
sudo update-grub
sudo dpkg --list 'linux-image*' | grep ^ii
Sadece kurulu çekirdekleri görmeyi biraz kolaylaştırır. Ayrıca update-grub
zararsız olduğunu ama kesinlikle gerekli olmadığını düşünüyorum, bir çekirdeği kaldırdığınızda otomatik olarak çalıştırılır.
sudo dpkg --list 'linux-image*' | grep ^ii | awk '{print $2}' | sort | egrep "[0-9]-generic" | head -n -3 | tr '\n' ' '; echo ""
paket adlarının listesini almak için kullanın sudo apt-get remove
. head -n -3
sistemde kalan en son 3 çekirdeği tutmak için kullanılır.
apt-get remove `dpkg --list 'linux-image*' |grep ^ii | awk '{print $2}'\ | grep -v \`uname -r\``
sudo apt-get autoremove
yeterli olmalı (genellikle son 3 çekirdeğe sahip olacaksınız)
/boot
tamamen dolu, bu nedenle apt-get
bazı hata kodlarında ya da diğerlerinde başarısız olacak. Cevap aşağıda biraz "hackier" (ben o sorunu çelik kendim zorunda itiraf etmeliyim olduğunu rm -rf
içinde /boot
) ancak bu durumda çalışması muhtemeldir tek.
NOT: bu yalnızca% 100 dolu / önyükleme nedeniyle temizlemek için apt kullanamazsanız
Apt-get çalışmıyorsa / boot'ınız% 100'dür, ilk önce temizlemeniz / boot etmeniz gerekir. Bu büyük olasılıkla kısmi bir kurulumda bir çekirdek yükseltme yakaladı, yani apt hemen hemen tamamen dondu ve apt-get -f install
bu komutun başarısız olmasına rağmen çalışmanızı söylemeye devam edecek.
Çekirdek görüntülerin listesini alın ve ne yapamayacağınızı belirleyin. Bu komut, o anda çalışanlar haricinde kurulu çekirdekleri gösterecektir sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r`
. Listedeki en yeni iki sürümü not edin. Çalışan listede endişe duymanıza gerek yok. Bunu kontrol edebilirsiniz uname -r
.
Aklı başında tutmak için küme ayracı genişletmeyi kullanmak sizin için önemli olmayan çekirdekler için / boot içindeki tüm dosyaları silmek için bir komut verin. Geçerli ve en yeni iki çekirdek görüntüsünü dışlamayı unutmayın. Örnek: sudo rm -rf /boot/*-3.2.0-{23,45,49,51,52,53,54,55}-*
. Bir aralığı, {80..84} sözdizimiyle de kullanabilirsiniz.
sudo apt-get -f install
kısmi bir yükleme konusunda huysuz yapan şeyi temizlemek.
"Dahili Hata: Resim bulunamadı (/boot/vmlinuz-3.2.0-56-generic)" gibi bir satır içeren bir hatayla karşılaşırsanız, komutu çalıştırın sudo apt-get purge linux-image-3.2.0-56-generic
(uygun sürümünüzle).
Son olarak, sudo apt-get autoremove
manuel önyükleme tarafından artık kullanılan eski çekirdek görüntü paketlerini temizlemek için temizleyin.
Tam / önyükleme bölümünü keşfetmenizi beklerken öneri, çalıştırma sudo apt-get update
ve sudo apt-get upgrade
yedeklemeniz gereken yükseltmelere bakmak.
Öneri2, İnceleme https://help.ubuntu.com/community/AutomaticSecurityUpdates ve Katılımsız Yükseltme :: Kaldır-Kullanılmayan Bağımlılıkları /etc/apt/apt.conf.d/50unattended-upgrades öğesinde true değerine ayarlamayı düşünün. Bu, kullanılmayan çekirdekleri temizlediğinizden emin olmak için her güvenlik güncellemesinden sonra otomatik olarak çalıştırmanın eşdeğeri olacaktır, ancak gelecekte kullanılmayacağını düşündüğünüz diğer şeyleri de ortadan kaldıracaktır.
dpkg --purge
tam bir önyükleme yaparsanız aşağıdakileri elde edersiniz $ sudo dpkg --purge linux-image-3.13.0-65-generic dpkg: dependency problems prevent removal of linux-image-3.13.0-65-generic: linux-image-extra-3.13.0-65-generic depends on linux-image-3.13.0-65-generic. dpkg: error processing package linux-image-3.13.0-65-generic (--purge): dependency problems - not removing Errors were encountered while processing: linux-image-3.13.0-65-generic
df -i
da /
eski çekirdeğin kaynak kodunun çok büyük miktarda olması nedeniyle inode tükenmekte olduğumu öğrendim/usr/src
Bununla ilgili belgeler https://help.ubuntu.com/community/RemoveOldKernels adresinde bulunmaktadır.
Özetle: Kullanım
sudo apt-get autoremove --purge
# and/or:
sudo purge-old-kernels
purge-old-kernels
Aracı yoluyla kurulabilir sudo apt install byobu
. İşte sayfasından açıklama:
Bu program eski çekirdek ve başlık paketlerini sistemden kaldırarak disk alanını boşaltır. Çalışmakta olan çekirdeği asla kaldırmaz. Varsayılan olarak en az 2 çekirdeği tutacaktır, ancak kullanıcı
--keep
parametreyi kullanarak bu değeri geçersiz kılabilir .
Kopyala yapıştır çözümü istiyorsanız, ReSearchIT Eng aşağıdakileri önerdi:
sudo apt install -y byobu
sudo purge-old-kernels -y --keep 1
sudo apt-get -y autoremove --purge
apt-get autoremove --purge
, yeterli olması gerektiğini düşünüyorum .
Küçük bölümü terk etmenin ve /boot
köke gitmenin çok daha kolay olduğunu buldum . Bu aynı zamanda gelecekte alan dışı sorunları da önler.
İlk önce verilerinizi önyükleme bölümünden kök dizine (farklı çalıştır sudo -s
) taşıyın :
cp -a /boot /boot2
umount /boot
rmdir /boot
mv /boot2 /boot
İçindeki /boot
girişi kaldırın (veya yorum yapın) /etc/fstab
:
vim /etc/fstab
Grub güncelleyin ve her şeyin doğru olduğundan emin olun:
update-grub
apt
şimdi sorunsuzca yükseltebilmeli.
Bu, kullanılmayan 200 MB'lık bir bölme bırakır (eğer başın belaya değer bulursanız başka bir şey için kullanabilirsiniz).
Eski Çekirdeklerin çıkarılması (/ boot'da boş alan olması) bakınız: http://askubuntu.com/questions/89710/how-do-i-free-up-more-space-in-boot
sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
O zaman koş
sudo apt-get update
sudo apt-get autoremove
Bu son 2 çekirdeği hariç hepsini kaldırır. /boot
% 100 kapasitedeyken Ubuntu 16.04 LTS'de test edildi ve apt-get upgrade
en son çekirdek yükseltmesi başarısız oldu. Çekirdek otomatik kaldırması yinelemelidir, bu nedenle birkaç tane çekirdeğiniz varsa, bunlar birer birer kaldırılır. Bu yüzden sabırlı ol.
Bir aletle yapabiliyorken neden el ile yapıyorsunuz? 30 saniyede tekrar ihtiyacın olacağını biliyorsun, çünkü bugünlerde yeni bir çekirdek güncellemesi yapmaları 30 saniye alıyor.
Bu aracı kullanmanızı öneriyorum, bootnukem
git clone https://github.com/erichs/bootnukem.git
cd bootnukem
sudo ./install.sh
Sonra
sudo bootnukem --dry-run
--dry-run
Güvenli göründüğünü onayladıktan sonra çıkarın