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

Kernel Linux 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ı.