Kernel Derlemek Nasıl? Ubuntu/Linux Mint Reçete

Başlatan eren70, 06 Eylül 2008 - 20:44:29

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

eren70

KERNEL DERLEMEK – UBUNTU REÇETESİ


BU BİR COPY/PASTE REÇETEDİR... TÜM KOMUTLARI SIRASI İLE TERMİNALDEN COPY/PASTE EDEREK KERNEL DERLEYEBİLİRSİNİZ

Yabancı bir istede yayınlanmış how to'nun bazı eklemeler yapılarak çevrilmiş halidir... Kernel derleme konusunda maalesef yeterli türkçe bir reçete olmadığını gördüm ve elde ettiğim bilgi birikimiyle bu reçeteyi hazırladım...

Burada anlatılanlar tüm Ubuntu dağıtımlarında ve ubuntu türevi distrolarda geçerlidir (Linux Mint vs.)
Burada anlatılan yöntem iki kez denenmiş ve sorunsuzca derleme gerçekleşmiştir... Kullanılan distrolar; Ubuntu Hardy ve Linux Mint 5 ve derlenen kernel sürümü 2.6.27.rc5'dir...

1 Hazırlık:

Terminali açın ve henüz bir root şifreniz yoksa aşağıda ki komutla oluşturun... Eğer halihazırda var ise bu komutu geçin...

sudo passwd root

Terminalde root olmak için;

su

Şifrenizi girin;

apt depolarının güncellenmesi için şu komutu yazın;

apt-get update

Yok eğer root olmadıysanız şu komutu girin;

sudo apt-get update

Ardından sırası ile şu iki komutu girin;

rm -f /bin/sh
ln -s /bin/bash /bin/sh


2 Kernel derlemek için gerekli olan paketlerin kurulumu


Önce depoları güncellemek için;

apt-get update

ve ardından kernel derlemek için olmazsa olmazları indirip kurmak için:
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

Her şey otomatik indirilip kurulacaktır...

3 Download Kernel


www.kernel.org. Sitesineden öncelikle hangi kerneli kuracağını belirleyin... Biz bu örnekte 2.6.27-rc5 kullanacağız!
(NOT: Farklı sürüm kernel kuracaksanız, komutlarda 2-6-27-rc5 yazan her yere keni sürümünüzü yazmayı unutmayın! Örneğin 2.6.26.1 yükleyecekseniz, 2.6.27-rc5 gördüğünüz her yere 2.6.26.1 yazmanız gerekmektedir)

/usr/src dizinine belirlediğiniz kernel kaynağını indirmek için;

cd /usr/src

ve ardından;

wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.27-rc5.tar.bz2

İndirme işlemi bitince sıkıştırılmış kernel kaynağını açmak üzere sırası ile şu üç komutu girelim;

tar xjf linux-2.6.27-rc5.tar.bz2
ln -s linux-2.6.27-rc5 linux
cd /usr/src/linux
 
4 Kernel konfigrasyon


/usr/src/linux dizinindeyken şu komutu verelim:

cp /boot/config-`uname -r` ./.config

ardından;

make menuconfig

Halihazırda kullanmakta olduğunuz linux kernelinin ayarlarını hiç dokunmadan aynen aktarmak için açılan menünün alt sırasında bulunan "Load an Alternate Configuration File" seçeneğine inin ve enter tuşuna basın;

Çıkan yeni münüde hiç bir şey yapmadan OK tuşuna basın ve ana menüye geri dönün;

Bunun haricinde kernelde yapmak istediğiniz bir ayar varsa şimdi yapın, ancak bu konuda bir bilginiz yoksa hiç bir ayara dokunmayın!

Exit'e basın ve çıkın, çıkışta "Do you wish to save your new kernel configuration?" sorununa "Yes" cevabını verin ve konfigrasyon menüsünden çıkın...

 
6 Kernel derlemek


Sırası ile şu komutları verin:

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Şimdi pc hızınıza bağlı olarak Birkaç saat sürecek derleme işlemi başlayacak...
Ekranı kapatın ve birkaç saat sonra dönmek üzere pc başından uzaklaşın!

7  Yeni Kernel'i yüklemek


Her şey yolunda girmişse derleme herhangi bir hata vermeden tamamlanmıştır... Şu halde şu iki kodu terminalden yazalım;

cd /usr/src
ls -l

/usr/src dizininde şu iki dosyanın oluştuğunu göreceksiniz;

linux-headers-2.6.27-rc5-custom_2.6.27-rc5-custom-10.00.Custom_i386.deb
linux-image-2.6.27-rc5-custom_2.6.27-rc5-custom-10.00.Custom_i386.deb

Şimdi nautilus (Ya da dosya yöneticisi olarak her ne kullanıyorsanız) ile dizine girin ve önce ;

linux-headers-2.6.27-rc5-custom_2.6.27-rc5-custom-10.00.Custom_i386.deb

dosyasının üzerine çift tıklayıp yükleyin... Yükleme esnasında root şifreniz sorulduğunda girin...

Yükleme işleminin tamamlanmasının ardından, ikinci dosya olan;

linux-image-2.6.27-rc5-custom_2.6.27-rc5-custom-10.00.Custom_i386.deb

üzerine çift tıklayın ve yükleyin... Root şifreniz sorulursa şifrenizi girin...
(NOT: Bu iki dosyanın backup'ını uygun bir yerde alınız... başka bir makinada kernel derlemesi yapmanız gerektiğinde bu iki dosyayı yukardaki sıraya göre yüklemeniz yeterlidir, her şeyi sil baştan yapmanıza gerek yok! Ya da bir sebepten dolayı format atarsanız da aynı şeyler geçerlidir)

Yüklemeler tamamlanınca, Grub seçeneklerinizin doğru yapılanmış olduğunu test etmek için terminalden şu komutu verelim;

sudo gedit /boot/grub/menu.lst

Açılacak olan listenin alt tarafında bir yerde şuna benzer ibareler görüyorsanız işlem tamam demektir;

title           Ubuntu, kernel 2.6.18.1-custom
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash
initrd          /boot/initrd.img-2.6.18.1-custom
savedefault
boot

title           Ubuntu, kernel 2.6.18.1-custom (recovery mode)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single
initrd          /boot/initrd.img-2.6.18.1-custom
boot

Listeyi kapatın ve artık restart zamanı, terminalden şu komutu verelim;

sudo shutdown -r now

Makine açıldığında sizi yeni kernel seçeneğinin karşılaması gerek... Her şeyi doğru yapmışsanız sorunsuzca grub penceresini geçersiniz...

Ancak, bir kernel panic! Hatası alırsanız, aldığınız hataya göre internette arama yapıp sorunun çözümünü bulmaya çalışın... Bazen sil baştan başlamak da sorunu çözer...
Böyle bir durumda kernel panik yapsa bile siz paniklemeyin, makinayı kapatıp açın, grup menüsünde önceden yüklü olan kernel sürümünü seçin ve enter tuşu ile ilerleyin, linuxunuz sapasağlam karşınızda...




heartsmagic

Keşke önce bir foruma bakınsaydın. Görüldüğü üzere çok güzel bir başlığımız zaten var.

Şöyle kabaca bir baktım iki şey sormak istiyorum.

1. Neden /bin/sh siliniyor ve bash olacak şekilde bağlantı atılıyor? Öyle kaldığında herhangi bir sorun mu yaşanıyor?
2. Kernel yapılandırması için aynen .config kullanılsın, eğer bilmiyorsanız dokunmayın denmiş. Vanilla kernel ile herşeyin sağlandığı neden düşünülüyor?

Sorularım yanlış anlaşılmasın sadece bunlar açığa kavuşsun ki denemek isteyenler sorun yaşamasın.

Ayrıca çeviri sana ait olsa bile esas kaynak verilmelidir.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

erginemr

#3
@eren70,

Güzel yazınız ve doğu bilgi vermek adına harcadığınız emek için ben de teşekkür ederim. Aslında bir forumda aynı konuya yönelik tek bir kaynak olacak diye bir şart yok, pekala birden fazla kaynak olabilir. Hatta aynı amaca yönelik alternatif yollar anlatılıyorsa daha da iyi olur.

Ancak yukardaki bağlantıyı verme sebbim yazındaki iki yanlışa dikkatini çekmek istememdi:
(1) Kernel derleme konusunda Türkçe bir başlığımız olmadığını iddia etmeniz,
(2) @heartsmagic'in de dolaylı olarak işaret ettiği gibi, Ubuntu'da ses modüllerinin kernel'dan ayrı dağıtılması.

Dolayısıyla, diğer dağıtımları bilemem, ama Ubuntu'da çekirdek derlerken fazladan donanımınızla uyumlu ses modüllerini de seçmeniz gerekiyor. Yazınızda bu iki noktayı revize ederseniz, forum kullanıcılarına daha doğru bilgi vermiş ve forumumuza güzel bir kaynak daha kazandırmış oluruz.

Not: Kendi çekirdek derleme yazımı hazırlarken, bazı ecnebi kaynaklarda /bin/sh kısayolunun, Ubuntu türevlerinde /bin/dash aracını işaret ettiği, bunun da çekirdek derlerken problem çıkartabileceğini okumuştum. Ancak, kendi denemelerimde böyle bir durumla karşılaşmadığım için üzerinde durmamıştım. Bu konu üzerinde daha detaylı araştırmaya gidebilirsiniz.