|
|
|
|
Debian Tarzı Linux Çekirdeği Derlemek
Compile The Linux Kernel a “Debian style”GelişimDebian Tarzı Linux Çekirdeği Derlemek.., Sürüm 1.0 (Eylül 2009)
Yazar HakkındaBu belgenin yazarı Özgür Karataş'tır. Belgenin yazarına ozgur@ozgurkaratas.com adresine mail atarak ulaşabilir, belge hakkındaki görüş ve önerilerinizi iletebilirsiniz. Yazar hakkında bilgi almak için “Kaynakça” kısmında belirtilen yazarın kişisel sayfasını ziyaret edebilirsiniz.
Belge HakkındaBu Belgede, Debian GNU/Linux dağıtımı üzerinde yeni bir Linux çekirdeğinin nasıl derleneceği anlatılmıştır. Yazar belgeyi hazırlarken, farklı kaynak belgelerden de yararlanmıştır. Bu kaynak belgelerin isimlerine, belgenin sonundaki “Kaynakça” bölümünden ulaşabilirsiniz.
Telif Hakkı
Bu belgenin, “Debian Tarzı Linux Çekirdeği Derlemek..” telif hakkı © 2009 Özgür Karataş'a aittir.Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Genel KamuLisansı'nın 2 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilirve/veya değiştirebilirsiniz.Bu Lisansın özgün kopyasına “Kaynakça” bölümünde belirtilen linkten ulaşabilirsiniz.
ÖnsözBu belgeyi okuduğunuza göre, Linux ve bir Linux dağıtımı olan Debian GNU/Linux hakkında detaylı bir bilgiye sahibi olmalısınız. Çünkü belgede bunlarla ilgili detaylı bir bilgiye yer verilmemiştir.
Kullanmış olduğum Debian dağıtımıma yeni bir Linux çekirdeği derlemek isterken yaptığım araştırmalarda; ya dağıtım bağımsız Linux çekirdeği derlemeyi anlatan ya da dağıtım bağımlı (örneğin Debian tarzı Linux çekirdeği derlemek) Linux çekirdeği derlemeyi içeren pek çok belgeye rastladım.
İşte bu belgeyi hazırlamamdaki sebep; bu iki farklı konsepti bir araya getirmekti. Bu belgede bir Linux çekirdeğinin nasıl derlenebileceğini ve derleme işlemi için gerekli ortam ve araçların Debian tarzı nasıl sağlanabileceğini yalın bir dille anlatmaya çalışacağım.
Umarım başarılı olur ve ortaya faydalı bir çalışma çıkarabilirim :-)
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 GereksinimlerKendi 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.
CompilerGCC, 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.
Linkerbinutils 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.
Makemake 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-linuxutil-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-toolsEğ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.
udevudev 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 ToolsBu 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ü indirmekGerekli 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/kernel/v2.6/linux-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..”
Bir Sonraki Belgede EkleneceklerMakefile ile oynamak initramfs optimizasyonu Normal şartlarda linux çekirdeğini derlemek
KaynakçaGNU: 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: http://www.kroah.com/lkn/ Debian Linux Kernel Handbook: http://kernel-handbook.alioth.debian.org/lenny/ WC Cdrom: http://www.wccdrom.com Özgür Karataş Kişisel: http://www.ozgurkaratas.com
TeşekkürBu belgeyi hazırlarken konsantremi bozmayı sağlayan sevgili eşime ve gülücük yapmayı öğrenecek kadar klavyeyi kullanan oğluma sonsuz teşekkürler.. :-)
Yazar & Kaynak: Özgür Karataş
Eklenme tarihi: 16-9-2009
Ekleyen: Özgür Karataş
|

| Bu Makaleye Verilen Puan: |
Bu makaleye puan verilmemiş.
|
Kullanıcı Yorumları
Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
Yorum Ekle
İlgili Dökümanlar
|
Onun çift çekirdeği var!
Donanım üreticisi MSI kendi açıklamasına göre "Dünyanın ilk Dual-Core-Atom Multimedya sistemi" ni tanıttı ve böylece "Wind" serisini genişletti. Wind NetTop D130 Intel 945GSE yonga se...
|
|
Debian Projesi, yeni işletim sistemi Etch'i duyurdu
Debian Projesi'nin işletim sisteminin yeni sürümü, 4.0 kodadıyla etch uzun bir geliştirme sürecinin ardından kararlı olarak duyuruldu. Türkçe ile birlikte 57 dünya diline de destek veren yeni işletim ...
|
|
Japon Pazarlama Tarzı
Japon işletmelerinin pazarlamadaki başarısı, biranda gerçekleşen bir olgu değildir. Geçmişte atılan rasyonel adımların sonucudur. Düşük fiyat, malda, ambalajd...
|
|
Php ile Vbulletin Tarzı Sayfalama yapma..!
Tekrar Selamün Aleyküm Arkadaşlar .Şimdi Sizlere Vebulletin tarzı uzantısı ..../sayfa=1 ,.... /sayfa=2... Gibi Biten listeme yapmanın mantıgını anlatmaya calıscam ....
|
|
Linux'ta Virüsler Neden Tehdit Değildir
Bilgisayar virüsü kavramını eminim hepimiz bir şekilde duymuşuzdur. Windows kullanıcıları kimi zaman geri döndürülemeyecek şekilde verilerini, emeklerini ve asla geri gelmeyecek zamanlarını bil...
|
|
|
|