Ubuntu Kullanılmayan Linux Kernel Silmek
Ubuntu Server Linux sisteminizde /boot full olduğunda, eski kullanılmayan kernel dosyalarınız biriktiği için bir takım problemler yaşamaya başlarsınız, onları silmek gerekir. Örneğin herhangi bir yükleme yapacağınızda şöyle bir hata almanız çok normaldir:
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
veya benzer şekilde server açıldığında login olduktan sonra ekrana şöyle bir uyarı hatası gelir, ancak işleyişde o an için bir sıkıntı çıkmaz:
E: Error: BrokenCount > 0run-parts /etc/update-motd.d/90-updates-available exited with return code 255
Bu ikinci hatanın pek çok oluşma sebebi söz konusu aslında, zira muhtemel çözümler listesi güncellenmiş olarak I upgraded, and now I have this error… linkinde bulunmakta. Ancak benim başıma gelen problem, yine /boot dosyasının dolması ile oluşması durumuydu, ve kesin olan bir şey var ki, bu ikinci örnek olarak sunduğum hata mesajı, Ubuntu Server makinenizin sağlıksız olduğunu – ciddi problem yaşadığını göstermektedir, ve mutlaka çözülmelidir. Öncelikle command’da yazacağınız df komutu ile dosya yapınızı ve mevcut yapıda nerenin %kaç dolu olduğunu göstermektedir.
Filesystem 1K-blocks Available Use% Mounted on udev 1020600 1020600 0% /dev tmpfs 206316 201288 3% /run /dev/mapper/serverfactory 17027924 12514644 23% / tmpfs 1031564 1031564 0% /dev/shm tmpfs 5120 5120 0% /run/lock tmpfs 1031564 1031564 0% /sys/fs/cgroup /dev/sdb1 3845578572 1542482460 58% /server /dev/mapper/serverfactory 56635708 17485804 68% /aktif /dev/sda1 240972 0 100% /boot tmpfs 206316 206316 0% /run/user/1000
Sonrasında /boot neden dolu, içinde neler var, hangi kernel versiyonları mevcut diye bakmak için şu komutu yazıyoruz:
dpkg -l linux-image*
un linux-image <none> <none> un linux-image-3.0 <none> <none> ii linux-image-3.19.0-2 3.19.0-22.22 i386 rc linux-image-3.19.0-2 3.19.0-25.26 i386 ii linux-image-3.19.0-2 3.19.0-26.28 i386 ii linux-image-3.19.0-2 3.19.0-28.30 i386 ii linux-image-3.19.0-3 3.19.0-30.34 i386 ii linux-image-3.19.0-3 3.19.0-31.36 i386 ii linux-image-3.19.0-3 3.19.0-32.37 i386 ii linux-image-3.19.0-3 3.19.0-33.38 i386
Çıkan listede muhtemelen pek çok linux-image-X göreceksiniz. X yerine geçen versiyonların eskileri genel olarak silinmesi problem yaratmayacak, güncellenme sonucunda eskiyen linux kernellerimiz. Ancak emin olmak için aşağıdaki komut ile en güncel ve sistem tarafından kullanılan kerneli öğrenebiliriz:
uname -r 3.19.0-33-generic
Küçük bir bilgilendirme notu eklemek istiyorum. 3.19.0-33-generic şeklinde görülen bu “versiyon” rakamının açılımı şu şekildedir: 3>Kernel Versiyonu, 19>Majör revizyon, 0>Minör revizyon, 33>Kritik hatalar için yapılmış acil düzeltmeler, generic>dağıtım modeli. Bu noktadan sonra yapmamız gereken aslında basit, aşağıdaki komutu her “eski” ve şu an kullanılmayan komut için yazmak, elbette ki x yerine :
sudo apt-get remove linux-image-x
Ancak birkaç satır işlem ve paket bilgilendirmesinden sonra aşağıdaki hata ile karşılaşıyor olmanız muhtemel:
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Benim bu yazıyı yazma amacım, konunun tam olarak bu noktasında devreye giriyor, zira /boot dolu, kernel eski, ancak silemiyoruz. Zira apt-get remove aslında bir kernel versiyonu silmek için uygun bir komut değil. Esasen komutu şu şekilde yazmalıyız:
sudo dpkg --force-all -P linux-image-3.16.0-22-generic
Komutu bu şekilde yazdığınızda, özellikle isim olarak sıkıntı yaşarsanız versiyon noktasında TAB tuşuna basarak sistemin tamamlayabildiği kısımlarını kendisi tamamlamasını sağlayabilirsiniz. 0-22 kısmından sonra TAB tuşuna bastığınızda -generic yerine tam olarak versiyonun bütün eksiklerini tamamlayıp komutu doğru yazmanızı sağlayacaktır. Bu noktada uyarmalıyım ki, en az 2 kerneli sistemde yüklü tutmanızdır. Ayrıca, işlemi tamamladıktan sonra linux-image listesinde görebileceğiniz gibi pek çok eski versiyon “linux-image-extra-x” olacaktır. Bunların da, sisteminizden sildiğiniz kernellerin versiyonları ile aynı olanlarını gönül rahatlığı ile silebilirsiniz. Bu noktada aslında komut olarak değişen hiç bir şey yok, örneğin:
sudo dpkg --force-all -P linux-image-extra-3.19.0-22-generic
Bu şekilde gerekli gördüğünüz bütün linux-image kernelleri ve linux-image-extra’ları sildikten sonra, /boot kısmında hatırı sayılır ölçüde yer açılacağı için (benim %70 boşaldı) sisteminizi güncelleyip en güncel kernele eriştikten sonra eski kernelleri (1-2 yedek eski versiyon bırakmayı unutmadan) tekrar silebilirsiniz.
The following packages have unmet dependencies: linux-image-extra-3.19.0-37-generic : Depends: linux-image-3.19.0-37-generic but it is not installed linux-image-generic : Depends: linux-image-3.19.0-37-generic but it is not installed E: Unmet dependencies. Try using -f.
Yukarıdaki şeklinde bir hata alıyorsanız eğer, mevcut kernel ile ilgili büyük ihtimal ile yükleme sırasında belleğiniz dolmuştu en son, doğal olarak yüklü olması gereken kernel tam – sağlıklı şekilde yüklenmemişti. Bu noktada o kernelin ismi hata komutunun içerisinde ifade edilir, size tavsiyem spesifik olarak o kernelin yüklenmesi için gerekli komutu girmenizdir. Yukarıdaki örnekte 3.19.0-37-generic için hata vermektedir, ben de komutumu o versiyonu kullanarak yazıyorum:
sudo apt-get install linux-image-3.19.0-37-generic
Tekrar atacağınız bir uname -r komutu henüz yeni kerneli kullanmaya başlamadığınızı göstermektedir, ama dpkg -l linux-image* komutu ile de yüklemenin tamam ve gayet yerinde olduğunun sağlamasını yapabilirsiniz.
Bu noktadan sonra eski kernellere dair temizliği netleştirmek ve tekrar bir üzerinden cila atmak için aşağıdaki iki komut sırası ile kullanılabilir:
sudo apt-get autoremove sudo apt-get autoclean
Bu komutlar, hali hazırda “önceki 2 kernelinizi saklayın” tavsiyemin farkında olan komutlardır, yani onlar da eski kernelleri çöpe atarlar, ancak garantili olmak için son 2 kernele dokunmazlar, bu yüzden gönül rahatlığı ile kullanabilirsiniz.
Artık yapmanız gereken son şey, sisteme bir clean – update – upgrade çekmektir. Sırası ile:
sudo apt-get clean sudo apt-get update # Fetches the list of available updates sudo apt-get upgrade # Strictly upgrades the current packages sudo apt-get dist-upgrade # Installs updates (new ones)
Bu noktadan sonra devam etmeden önce bir reboot tavsiye edilir, zira yüklenen kernele geçiş henüz sağlanmadı.
1 Comment
Orkun · 2022-03-19 at 02:52
Merhaba Kolay glsin yazınız ilgili yaptıklarımla beraber maalesef bu kernel hatası sorunuma çözüm bulamadım. bende neyüklemek istersem sistemi ne zaman upgrade etmek istersem. 5.4.0.58-generic ve 5.4.0.77-generic hata veriyor. ve işlemi durduruyor. linux mint kullanıyorum ki bunlar eski kerneller şimdiki 104-generic. bana bir tavsiyede bulunabilir misniz? Teşekkürler.