Debian Tarzı Linux Çekirdeği Derlemek

İsimli konu WH 'Linux - Mac OS' kategorisinde, ¦Żακκυм¦ üyesi tarafından 17 Ağustos 2011 tarihinde yazılmıştır. Debian Tarzı Linux Çekirdeği Derlemek hakkında bilgi ve tartışmalar.

  1. Debian Tarzı Linux Çekirdeği Derlemek
    Giriş
    Linux, 1991 yılında Finlandiya Üniversitesi'nde öğrenci olan Linus Torvalds'ın geliştirdiği işletim
    sistemi çekirdeğine (kernel) verilen isimdir. Burada işletim sistemi çekirdeği yani kernel'dan
    anlamanız gereken ise şudur; işletim sistemi çekirdeği ya da nam-ı diğer kernel, kısaca bilgisayarınızın
    üzerindeki donanımları tanıyan, bunlarla etkileşim ve iletişime geçen, isteklerinizi donanımlara ileten
    ve isteğinizin sonucunu tekrar size dönen katmandır. Bu katmana kısaca “Linux” adı verilmiştir.

    Ancak sizin de Linux'a bu isteklerinizi iletmeniz için bir katman daha gerekir. Örneğin diskte herhangi
    bir dizin oluşturulmasını istiyorsanız “mkdir dizin” komutunu ya da bir dosya oluşturmak istiyorsanız
    “touch dosya” komutunu Linux kernel'ina iletmelisiniz. Bunun içinse kabuk diye dilimize çevrilen
    “shell” denilen katmanı kullanırsınız. Konsolu açıp bahsi geçen komutları işlettiğiniz ekrana shell yani
    “kabuk” ismi verilmektedir.

    Linux çekirdeği ve kabuğu gibi pek çok yazılım GPL lisansı ile korunmaktadır. GPL yani Genel
    Kamu Lisansı ise GNU akımı ile beraber ortaya çıkmıştır. Bu lisansa bağlı yazılımlar açık kaynak
    kodlu ve özgürdürler. Burada özgürlükten kastedilen şey yazılımın “free” yani bedava olması değil,
    kodun içeriğinin tamamı ile kamu kullanımına açık olmasıdır. Bu sayede hem kodu görebilirsiniz hem
    de lisans size kodu değiştirebilme imkanı tanır.

    Bunun yanı sıra; Linux çekirdeğini kullanarak oluşturulan sistemlere “Linux Dağıtımı” denilir. Pek çok
    Linux dağıtımı olmakla beraber Debian GNU/Linux en popüler Linux dağıtımlarından birisidir.

    (Bir anektod paylaşacak olursam, ilk edindiğim ve kullandığım Linux dağıtımı, 1999 yılının
    Kasım'ında WC Cdrom'dan satın aldığım Slackware Linux 7'dir. (Linux kernel version: 2.2.13))

    İşte bu belgede, yeni bir Linux çekirdeğini, Debian GNU/Linux dağıtımı üzerinde nasıl
    derleyeceğiniz anlatılmıştır. Bunun için gerekli olan araçlar ve neden linux çekirdeği derlenmesi
    gerektiğine de değinilmiştir.


    Yasal Uyarı: Bu belgede anlatılanlardan dolayı sisteminizde yaşayacağınız/karşılacağınızproblemlerden, kayıplardan ve arızalardan yazar asla sorumlu tutulamaz.
    Neden Linux çekirdeğini derlemek gerekir?
    Pek çok Linux dağıtımı gibi Debian GNU/Linux içerisinde de kuruluma hazır ve önceden derlenmiş
    halde yukarıda bahsettiğimiz linux çekirdeği bulunur. Debian dağıtımı hazırlanırken bazı mimariler
    üzerinde çalışması için, önceden derlenmiş ve içerisinde kullanıma hazır bir halde linux çekirdeği
    bulunur. Örneğin, “i386” mimarisine sahipseniz, buna uygun Debian sürümünü temin edip, kurulumu
    gerçekleştirirsiniz. Başka bir örnek vermek gerekirse, “amd64” kullanıcıları, bunun için hazırlanmış
    Debian sürümünü temin edip kurulumu gerçekleştirirler. Bu Debian sürümü içerisinde daha önceden
    amd64 üzerinde çalışacak şekilde derlenmiş linux çekirdeği bulunur ve siz Debian kurulumunu
    gerçekleştirirken, Debian ise arka planda derlenmiş olan linux çekirdeğinin kurulumunu gerçekleştirir.

    Fakat bazı durumlarda Debian ile ön tanımlı ve yukarıda bahsettiğimiz gibi önceden derlenmiş halde
    gelen Linux çekirdeği yeterli olmayabilir. Bunun en büyük sebebi, hazırlanmış Debian sürümlerinden
    farklı bir mimariye sahip olmanız veya daha önceden hazırlanmış Debian sürümlerinin sizin kurulum
    yapacağınız mimariye uygun halde hazırlanmamış olmasıdır. Farklı bir işlemci mimarisi veya farklı bir
    donanım kullanıyor bile olabilirsiniz.

    Bu durumda, Linux çekirdeğini kendi mimarinize uygun hale getirmeniz, kullandığınız donanımı
    tanıyacak şekilde inşaa etmeniz gerekir ve bu sürece kısaca “Linux çekirdeğini derleme” süreci denilir.

    Bu belgeyi hazırlamadan önce, linux çekirdeğini derlemekteki amacım; Linksys CIT 300 internet
    telephone üzerinde çalışacak bir linux çekirdeği hazırlamak ve bu hazırladığım çekirdeği Debian'a
    entegre ederek internet telefonum üzerinde Debian kullanabilmekti. Ayrıca kendi bilgisayarımda
    kullandığım Debian'ın üzerinde bulunan linux çekirdeğinin, kullanmış olduğum Linksys WUSB600N
    Wireless Access Point'i de tanımasını sağlayacak ve kullanabilecektim.

    Böylelikle Linksys internet telefonu üzerinde çalışan gayri resmi bir Debian sürümüne, kişisel
    bilgisayarıma bağlı olan wireless donamımı tanıyan başka bir Debian sürümüne sahip olacaktım.

    Bu gibi farklı mimari ve farklı donanım seçeneklerinden dolayı Linux çekirdeğini derlemeniz
    gerekebilir. Başka bir örnek vermek gerekirse; sahip olduğum CiscoPedia E-125 Pocket PC üzerinde
    Debian kullanmak istiyorum. Ancak bu el bilgisayarı üzerinde çalışacak bir Debian sürümü
    bulunmuyor. Belki ileride bu el bilgisayarı üzerinde çalışacak bir linux çekirdeği hazırlar ve debian ile
    beraber kullanabilirim :-)

    Yukarıdaki gibi, siz de farklı donanımlarda Linux çalıştırmak istiyorsanız, kendi çekirdeğinizi
    derlemeniz (elbette sizden önce başka birisi derlememişse) gerekecektir ve bu belge kendi Linux
    çekirdeğinizi derlerken yardımcınız olacaktır.

    Linux çekirdeğini derleme süreci oldukça zahmetli bir süreç olsa da, sürecin sonunda, bir işi
    başarmanın sevincini size mutlaka ve mutlulukla yaşatacaktır. Bu yaşadığınız mutluluk verdiğiniz
    emeğe ve ayırdığınız zamana emin olun değecektir :-)

    Bu belgede anlatılanları öncelikle bir test ortamında uygulamalı ve pratik edinmelisiniz. Gerçek bir
    kernel derleme sürecine ise pratik edindikten sonra girişmelisiniz.

    Ve Unutmayın! Mutlaka yedek alın!
    Ön Hazırlık ve Gereksinimler
    Kendi Linux çekirdeğinizi derlemeden önce bazı araçlara gereksinim duyacaksınız. Bu bölümde bu
    araçların neler olduğunu ve ne işe yaradığını öğrenmiş olacaksınız.

    Öncelikle bir Linux çekirdeğini derlemek için gerekli olan programlara bakalım.
    Compiler
    GCC, Linux üzerinde C ile yazılmış bir kodu compile etmenize yani derlemenize yarayan programdır.
    Linux çekirdeğinin büyük bir kısmı C ile yazılmıştır ve derlemek için gcc derleyicisine ihtiyaç vardır.
    Linker
    binutils ile beraber gelen ld programı, Linux çekirdeği içerisinde derlenmiş halde bulunan bazı kodları
    çalıştırılabilir hale getirmek için kullanılır ve Linux çekirdeğini derlemek için gereklidir.
    Make
    make komutu veya daha doğrusu bu komutu kullanmanızı sağlayan program, Linux çekirdeğinin
    içerisinde, derleme sürecindeki bir takım işleri Makefile dosyası yardımı ile ilerletmeye ve bu Makefile
    dosyasındaki parametrelere bağlı olarak inşaanın sonlanmasına olanak verir.
    util-linux
    util-linux paketini kullanmamızın amacı, Linux çekirdeğinin kurulacağı diski biçimlendirmek ve
    bölümlendirmek ve de bu süreçte ihtiyaç duyulan bazı işleri manipüle etmektir.
    module-init-tools
    Eğer linux çekirdek modüllerini kullanmak istiyorsanız module-init-tools paketini kullanmaniz gerekir.
    Linux çekirdeğine ekleyeceğiniz veya kaldıracağınız bir kernel modülünü bu paketin içeriğinde araçlar
    yardımı ile yapabilirsiniz.
    udev
    udev programı bazı donanımların /dev dizinine bağlanarak Linux çekirdeği tarafından
    kullanılabilmesine olanak tanır. Kullanılacak donanımların isimlendirilmesi ve /dev dizinine device
    olarak bağlanarak Linux tarafından kullanılması udev yardımı ile yapılır.
    Proccess Tools (procps)
    process tools paketi (procps), Linux kernelin derlenmesi esnasındaki süreç ve işlemlerin izlenmesine
    ve yönetilmesine olanak sağlar.
    PCMCIA Tools
    Bu paket kullanılarak bir takım PCMCIA uyumlu donanımlar Linux çekirdeği tarafından
    kullanılabilirler. PCMCIA kartların Linux çekirdeği tarafından tanınmasını bu tool sağlar.
    Debian GNU/Linux dağıtımınızda yukarıda belirtilen ve kernel derlemeden önce ihtiyacınız olan
    gerekli araç ve paketleri kurmak için build-essential paketini kurmanız gerekmektedir. Bunun için
    Debian'a özel APT paket kurulum yardımcısını kullanabilirsiniz:

    $ sudo aptitude install build-essential

    Bu komuttan sonra sisteminize gcc, make ve binutils paketleri kurulmuş olacaktır. Doğrulamak için
    aşağıdaki komutları işletebilirsiniz:

    $ gcc -v

    $ ld -v
    $ make -v
    $ fdformat -v
    $ depmod -V
    $ udevinfo -V
    $ ps -v
    $ pcimodules -V

    Ayrıca Debian'a özel olarak -eğer ki inşaa edeceğiniz linux çekirdeğinizin debian paketini de
    hazırlamak istiyorsanız- aşağıdaki paketleri de kurmalısınız:

    $ sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

    kernel-package: derlediğiniz kernel'in debian paketini hazırlamanızı
    fakeroot: bazı root yetkilerini kullanabilmenizi
    wget: bir dosya çekebilmenizi
    bzip2: sıkıştırılmış bir dosyayı açabilmenizi
    sağlamaktadır.
    Linux Çekirdeğinin son sürümünü indirmek
    Gerekli programların kurulumunu yaptıktan sonra şimdi sıra Linux çekirdeğinin son sürümünü linux
    kernel web sitesinden indirmeye geldi. Bunun için dilerseniz /usr/linux dizinine giderek veya bir test
    dizini oluşturarak aşağıdaki komutu vermelisiniz:

    $ cd /usr/src
    $ sudo wget http://www.kernel.org/pub/linux/kern...2.6.31.tar.bz2

    (Ben bu belgeyi hazırlarken en son stable sürüm 2.6.31 idi.)

    Kullanmış olduğunuz internet bağlantınızın hızına bağlı olarak linux çekirdeğinin son sürümünün
    yukarıdaki komutla indirilmesi zaman alacaktır.

    Şimdi indirdiğimiz yeni linux çekirdeğini aşağıdaki komutla açalım:

    $ sudo bunzip2 linux-2.6.31.tar.bz2
    $ sudo tar -xf linux-2.6.31.tar

    Ardından aşağıdaki komutla başarılı bir şekilde sıkıştırılmış linux çekirdeğimizin aynı dizine açıldığını
    görebiliriz:

    $ ls
    linux-2.6.31 linux-2.6.31.tar.bz2

    Daha sonra aşağıdaki komutu vererek sembolik linux linkimizi oluşturuyoruz ve oluşturduğumuz linux
    dizinine geçiyoruz:

    $ sudo ln -s linux-2.6.31 linux
    $ cd linux
    Linux çekirdeğini konfigure etmek
    Şimdi ise sırada yeni linux çekirdeğimizi konfigure etmek var!

    Önce hali hazırda çalışan linux çekirdeğimizin ayarlarını yeni çekirdeğe taşıyoruz ve bunun için
    aşağıdaki komutu veriyoruz:

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

    Buraya kadar herhangi bir sorun ile karşılaşmadı iseniz artık yeni Linux çekirdeğinizi “make
    menuconfig” komutu ile özelleştirebilirsiniz:

    $ sudo make menuconfig

    Karşınıza gelen ekran Linux Configuration Menu'dur. Bu menuden Linux çekirdeğinizi istediğiniz
    gibi şekillendirebilirsiniz.

    (Herhangi bir seçeneğe girmek için “Enter” tuşuna, geri dönmek için “Esc” tuşuna basmanız
    yeterlidir.)

    Yeni Linux çekirdeğiniz ile ilgili gerekli optimizasyonları yaptıktan sonra iki defa Esc tuşuna basarak
    çıkış yapabilirsiniz. Ancak çıkış yaparken yaptığınız düzenlemeleri “Save” seçeneği ile
    kaydetmelisiniz.

    Ayrıca bulunduğunuz dizindeki Makefile dosyasını açarak en üst satırlardaki çekirdek sürüm
    numaranızı veya extraversion değişkenini değiştirebilirsiniz. Sürüm numarasının değiştirilmesi pek
    önerilmemekle beraber extraversion kısmına kendi isminizi yazabilirsiniz :-)

    Burada mimarinize uygun işlemci tipini seçebilir veya varsa kullandığınız donanımların sürücülerini
    tanıtma işlemini gerçekleştirebilirsiniz.
    Linux çekirdeğinin Debian paketini hazırlamak

    Öncelikle indirip ardından optimize ve konfigure etmiş olduğunuz Linux çekirdeğinin Debian (.deb)
    paketini oluşturmak için aşağıdaki komutları işletmeniz yeterli olacaktır:

    $ sudo make-kpkg clean
    $ sudo make-kpkg --bzimage --initrd --append-to-version=-okaratas --revision=1.0 kernel_image
    kernel_headers --rootcmd fakeroot

    (ikinci komuttaki append-to-version değişkenine istedğinizi yazabilirsiniz. Aynı şekilde revision
    değişkeni de değiştirilebilir.)

    Buraya kadar herhangi bir hata almadı iseniz artık yeni çekirdeğinizin Debian paketi kullanıma hazır
    demektir. Debian'da paket kurmak için kullandığımız dpkg programı ile yeni Linux çekirdeğinizi
    kurabilirsiniz.

    $ sudo dpkg -i linux-headers-2.6.31-okaratas_1.0_i386.deb
    $ sudo dpkg -i linux-image-2.6.31-okaratas_1.0_i386.deb

    Şimdilik bu kadar :-) Yeni çekirdeğinizle biraz vakit geçirin bakalım.. Belgenin bir sonraki sürümünde
    -Debian paketi oluşturmadan- kernelimizi inşaa etmeye devam edeceğiz..

    Ama dikkat edin, linux kernel derlemek bilgi değil zaman ister :-)

    “Dünyadaki en zor şey; bildiklerinizi bilmeyen bir insana anlatmaktır..”

    Kaynakça
    GNU: http://www.gnu.org
    GNU GPL License: http://www.gnu.org/copyleft/gpl.html
    Linux Kernel: http://www.kernel.org
    Debian GNU/Linux: http://www.debian.org
    Linux Kernel in a Nutshell: Linux Kernel in a Nutshell
    Debian Linux Kernel Handbook: http://kernel-handbook.alioth.debian.org/lenny/
    WC Cdrom: http://www.wccdrom.com
    Kaynak:Özgür Karataş
    17 Ağustos 2011
    #1
  2. Debian Tarzı Linux Çekirdeği Derlemek Cevapları

  3. Ne zaman yazacağınızı merak ediyorum ve sabırsızlanıyorum açıkçası...
    20 Şubat 2012
    #2
soru sor

Debian Tarzı Linux Çekirdeği Derlemek