kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
romegames 1
romegames
Bvural41 1
Bvural41
Best Studio 1
Best Studio
BlackFullMoon 1
BlackFullMoon
NovaLst 1
NovaLst
SLyFeLLowTR 1
SLyFeLLowTR
xranzei 1
xranzei
InfernoShade 1
InfernoShade
shrpnl 1
shrpnl
D 1
delimuratt
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Debian Tarzı Linux Çekirdeği Derlemek

  • Konuyu başlatan Konuyu başlatan FarCry
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 822

FarCry

Level 8
TM Üye
Üye
Katılım
10 May 2009
Konular
2,134
Mesajlar
3,219
Reaksiyon Skoru
147
Altın Konu
1
TM Yaşı
17 Yıl 1 Ay 4 Gün
Başarım Puanı
200
MmoLira
-11
DevLira
0
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Compile The Linux Kernel a “Debian style”

Gelişim

Debian Tarzı Linux Çekirdeği Derlemek.., Sürüm 1.0 (Eylül 2009)
Yazar Hakkında

Bu 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ında

Bu 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öz

Bu 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 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

(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 Eklenecekler

Makefile ile oynamak
initramfs optimizasyonu
Normal şartlarda linux çekirdeğini derlemek
 
Paylaşım için tşk ederim...
 
Paylaşım için teşekkürler :)
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst