Linux Çekirdeği Kernel'in Güncellenmesi
Merhaba arkadaşlar..
Bugün size aynı zamanda Sistem Programlama ödevim olan Linux Çekirdeği Kernel’i nasıl güncelleyeceğimizi anlatacağım.
İlk olarak hiçbir şey yapmadan önce Kernel’in versiyonunu öğreniyoruz. Kernel’in versiyonunu öğrenmek için Linux komut satırı Terminal’e uname –r komutunu yazıyoruz.
Bakalım..
Yukarıdaki ekran çıktısında görüldüğü üzere Kernel versiyonunun 3.13.0-37-generic olduğunu görüyoruz. Tabi bu sizde farklı olabilir.
Kernel versiyonumu öğrendikten sonra https://www.kernel.org/ adresine gidip Kernel’in en son stabil versiyonunu indiriyoruz. Ben 4.2.3 olanı indirdim. Dosyamız tar.xz olarak indirildi. Bunu arşivden çıkartmamız gerekiyor. Sabit diskimde Linux’e ayrılan yeteri kadar yer olmadığı için işlemlerimi harici diskim üzerinden yapacağım.
Harici disk üzerinden yaptığım için daha önceki denemelerimde bazı hatalarla karşılaşmıştım. Dosya izinlerinde sorunlar çıkabiliyor ve komutlar gerçekleştirilemiyordu. Daha sonra hatanın, harici diskimin nfts dosya sistemine sahip olduğundan kaynaklandığını farkettim. Çözüm olarak harici diskimde 20 GB’lik bir ex4 sürücüsü oluşturdum. Tabi geri kalanı ntfs. Bizim ntfs ile bir işimiz yok.
Sıra geldi arşivdeki dosyaları çıkartmaya..
Dosyaları çıkartmadan önce yapacağımız işlemlerde bir sorun çıkmaması için sistemden root yetkilerini alıyoruz. Root yetkilerini almak için sudo –s komutunu terminale girmemiz gerekiyor.
Artık sistem yetkilerini almış bulunmaktayız.
İlk önce indirilen dosyayı harici diskimde oluşturduğum sürücüye kopyalıyorum.
Arşivin bulunduğu dizine giriyoruz.
Şimdi dosyaları çıkarıyoruz. Ben harici diskimde oluşturduğum ex4 bölümüne çıkarıyorum. Siz farklı bir yere çıkartabilirsiniz. Önemli olan çıkarttığınız yerin dosya sistemi ex4 olmasıdır.
Dosyaları çıkarmak için tar –xJvf komutunu kullanıyoruz. -xJvf den sonra dosya adını yazıyoruz.
Yukarıdaki resimlerden görüldüğü üzere dosyalarımızı arşivden çıkarttık.
Şimdi sıra geldi ana işlemlere başlamaya..
Çıkarttığımız dosyanın içine giriyoruz.
İlk olarak make mrproper komutu ile eski ayarları temizliyoruz.
Daha sonra make menuconfig ile yüklenecek olan Kernel’in konfigürasyon ara yüzüne giriyoruz. İsterseniz bu adımı geçebilirsiniz. Görmeniz açısından anlatıyorum. Bu arayüzden kurulmasını istemediğiniz sürücüleri kaldırabilirsiniz.
Exit diyoruz.
Evet dedikten sonra çıkıyoruz.
Daha sonra make clean komutu ile fazlalıkları temizliyoruz.
Şimdiki adımda make bzImage komutunu yazıp, çekirdeğimizi derlemeye başlıyoruz. Bende yaklaşık 20 dakika sürdü. Bilgisayarınızın performansına göre değişebilir.
Çekirdeğimiz derlenirken..
Ve çekirdek derlememiz bitti.
Çekirdeğimizi derledikten sonra işin en uzun kısmı olan modül derlemesine geçiyoruz. Bende yaklaşık 2.5 saat sürdü (tüm sürücülerle beraber).
Modül derlemesini başlatmak için terminale make modules komutunu yazıyoruz.
Modüller derlenirken..
Uzun bir süre ardından modül derlememiz bitmiş oldu.
Modül derlenmesi bittikten sonra çekirdek modüllerimizi modül kütüphanesine taşıyoruz. Bu işlemi make modules_install komutu ile yapıyoruz.
Taşıma işlemi gerçekleşirken..
Taşıma işlemimiz sona erdi.
Şimdi modüllerin ve sistemimizin düzgün çalışmasını sağlayacağız. Bunun için terminale mkinitramfs 4.2.3 -o/boot/initrd.img-4.2.3-generic komutunu giriyoruz. Komutun içindeki numaralı kısımlar ilk başta indirdiğimiz Kernel’in versiyonudur. Siz de indirdiğiniz versiyona göre komutu düzenleyebilirsiniz.
Daha sonra derlediğimiz çekirdeği boot dizinine kopyalıyoruz. Terminale cp /usr/src/linux-4.2.3/arch/x86_64/boot/bzImage /boot/vmlinuz-4.2.3-generic komutunu giriyoruz.
Kopyalama işlemimiz tamamlandı. Şimdi System.map dosyasını boot dizinine kopyalıyoruz.
Sembolik bir bağ oluşturmamız gerekiyor bunun için terminale ln -s /boot/System. **map-KERNEL_VERSION** /boot/System **.** map komutunu giriyoruz.
Neredeyse tüm işlemlerimizi tamamladık. Artık grub ayarlarını yapacağız. Güncellenen Kernel’in grub ekranında çıkmasını sağlamalıyız.
Grub dosyasını açmamız gerekiyor bunun için terminale sudo gedit /boot/grub/grub.cfg komutunu giriyoruz.
Açılan grub dosyasını düzenlemeden önce yeni bir terminal açıyoruz ve sudo blkid komutunu yazıyoruz.
Karşımıza aşağıdaki resimdeki gibi bir çıktı gelmektedir.
Buradan UUID değerimizi alacağız, peki hangisini ? Bu sorunun yanıtı; güncellenen Kernel’i hangi disk bölümünde çalıştıracağınızdır. Ben Linux Mint’in bulunduğu yerde çalıştıracağım. Bunun için şekilde seçili olan değeri bir yere kopyalıyorum. Bu değeri grub dosyamızda kullanacağız.
Grub dosyamıza dönüyoruz tekrar ### BEGIN /etc/grub.d/10_linux ### satırının altına aşağıdaki metni ekliyoruz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
menuentry 'Pardus, Linux 4.2.3-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,6)'
search --no-floppy --fs-uuid --set 57a40b28-08a8-4fe5-ba57-7fb4fc063d83
linux /boot/vmlinuz-4.2.3-generic root=UUID=111a05da-58b6-454a-8e29-23b7e215f382 ro quiet splash
initrd /boot/initrd.img-4.2.3-generic
}
menuentry 'Pardus, Linux 4.2.3-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,6)'
search --no-floppy --fs-uuid --set 111a05da-58b6-454a-8e29-23b7e215f382
echo 'Loading Linux 3.16.5-generic ...'
linux /boot/vmlinuz-4.2.3-generic root=UUID=111a05da-58b6-454a-8e29-23b7e215f382 ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.2.3-generic
}
Önceden aldığımız UUID değerini bu metinde root=UUID= kısımlarına kopyalıyoruz ve dosyayı kaydedip, kapatıyoruz.
Güncellenen Kernel’i gruba ekledik. Artık başlangıçta grubda gözükmesi için grub güncellemesi yapmamız gerekiyor. Bunun için terminale sudo update-grub2 komutunu yazıyoruz.
Artık grubu güncellemiş olduk. Sistemimizi yeniden başlatıyoruz ve grub ekranından yeni Kernel’imizi seçiyoruz.
Sistem açıldıktan sonra en başta yaptığımız gibi uname –r komutunu terminale giriyoruz ve yeni Kernel versiyonumuzu öğreniyoruz.
Yararlanılan kaynaklar
https://forum.ubuntu-tr.net/index.php?topic=18598.0
http://kod5.org/linux-cekirdegi-kerneli-nasil-derlenir/