Debian GNU/Linux Usulü Çekirdek Derleme

0
realist
Fazlamesai kanalının müdavimlerinden Realist/Decaf arkadaşımız Debian usulü çekirdek çıtlanması (derlenmesi ;) ile ilgili çok güzel bir makale hazırlamış. Hem de tam da benim Bilgi'de Linux Eğitiminde Çekirdek Derleme konusunu işlediğim gün :)) Ellerine sağlık diyoruz...

Debian sürümünün kendine özgü araçlarını kullaranak çekirdek derlenmesi ve kullanımı.
Öncelikle neye ihtiyacınız olduğuna bakalım. sisteminizi bf24 seçeneği ile kurduysanız uname -a komutunun çıktısı linux-2.4.18-bf24 olmalı. Bir disketi tam dolduracak kadar şişirilmiş bir çekirdektir. Kurulumda kolaylık olması için disk denetleyicilerin neredeyse tümü, network kartlarının çoğu kernelin içine gömülmüştür. Dağıtıma dahil olan binary paketleri kullanarak tam modüler bir çekirdeğe sahip olabiliriz.

2.4.18 sürüm çekirdek için çeşitlerimiz şöyle:

kernel-image-2.4.18-k7 AMD Athlon ve Duron
kernel-image-2.4.18-k6 AMD K6 serisi (ve k7)
kernel-image-2.4.18-686 Intel PentiumPro P 2,3,4 Celeron (ve k7 ve VIA Cyrix)
kernel-image-2.4.18-686-smp Birden fazla işlemcili makineler için
kernel-image-2.4.18-586tsc Sadece intel pentium (1)
kernel-image-2.4.18-386 Tüm intel ve uyumlu işlemciler


Apt her zamanki gibi en büyük yardımcımız:

apt-get install kernel-image-2.4.18-686

Yalnız bu komutu vermeden önce bir kaç küçük ayara ihtiyacımız var. (evet baştan söylemeliydim :) Yükleyeceğimiz çekirdek "initrd" kullanıyor. Initrd (initial ramdisk) açılışta çekirdeğin ram'e aktarıp içinden modül yükleyebileceği, ihtayaca göre kurtarma konsolu da sağlayabilen bir dosya. Bizim initrd dosyamızın bulunduğu yeri lilo.conf'ta çekirdeğe bildirmemiz gerek. /etc/lilo.conf dosyanızı herhangi bir metin editörü ile açın. image=/vmlinuz'un altına doğru initrd=/initrd.img satırını ekleyin. Sonuç şöyle bir şey olmalı:

image=/vmlinuz
label=linux
read-only
initrd=/initrd.img
#restricted
#alias=1

Ayrıca paket yüklenirken initrd oluşturması gerektiğini de belirtmeliyiz. Onu da şöyle yapabiliriz:

echo "do_initrd = Yes " > /etc/kernel-img.conf

Şimdi uygun gördüğünüz çekirdeği yükleyebilirsiniz. Hayırlısı olsun. Olur ya yeniden başlattınız, makine açılmadı. Basın reset'e, parmağınız "shift"te dursun bir süre, çıkacak menüde LinuxOLD'u seçin, sağ salim önceki çekirdeğinize dönün.

uname -a ile baktığınızda bf24 yerine seçtiğiniz çekirdeğin sürüm numarasını görüyorsanız işlem tamam demektir.

Yalnız daha sonra aniden "kernel include files" ihtiyacı baş gösterebilir. Nvidia sürücüsü, derlemek isteyeceğiniz ek modüller, "bana kernel source lazım! include/linux/version.h nerde? Onsuz olmaz bu işler," diyebilirler. Tüm bu dertlerin dermanı kernel-headers paketleridir. kernel-image paketi version numarasını tutturun yeterli.

apt-get install kernel-headers-2.4.18-686
cd /usr/src
ln -s kernel-headers-2.4.18-686 linux

Diyelim ki bu kadarı sizi kesmedi. P4'ünüze özel kernel istiyorsunuz. Ya da sizin için bazı modüllerin kernelin içinde olması şart (soft-RAID gibi). O da mümkün tabii:

apt-get install kernel-source-2.4.18 bzip2 libncurses-dev kernel-package

Debian kurulumunuzda eksik olması riskine karşı:

apt-get install build-essentials

Şimdi kaynak kodumuz /usr/src altında bzip2 ile sıkıştırılmış halde duruyor.

cd /usr/src
tar jxvf kernel-source-2.4.18.tar.bz2

"linux" linkini de yeni yerine alalım:

rm linux && ln -s kernel-source-2.4.18 linux

cd linux

Yüklemiş olduğumuz çekirdeğin tüm ayarları /boot altında bir dosyada duruyor. Aynen derleyeceğimiz koda alıyoruz.

cp /boot/config-2.4.18-686 .config

Şimdi make menuconfig komutunu verdiğinizde her şey çalışmakta olan çekirdeğinizdeki gibidir. Üzerinde istediğiniz değişikliği yapabilirsiniz. Celeron sahiplerinin işlemci türü seçerken kararsız kaldığını duyuyorum. 533A ve üstü için Coppermine, daha düşük hızdaki Celeronlar için P2 tercih edin. menuconfig çıkarken "kaydedeyim mi" diye soruyor. "tabii ki" diyoruz.

Bu dizindeki Makefile dosyasını işleyerek çekirdek sürüm numarasını zevkinize göre değiştirebilirsiniz. EXTRAVERSION değişkenini "-decaf" yaparsanız sürüm "uname -r" çıktınız 2.4.18-decaf olur.

şimdi olaya girebiliriz:

make-kpkg clean # şu an için şart değil ama bir sonraki derleyişinizde çok önemli

make-kpkg --initrd --revision=kastim1.0 kernel_image

Buradaki kastim1.0 da istediğiniz gibi değişebilir. Ama sonunun rakam olması zorunlu. Eğer derleme sırasında makinenizi bırakıp gitmeyecekseniz, kullanmaya devam etmek istiyorsanız son komutun başına "nice 10" ekleyebilirsiniz. Böylece işlemin önceliğini düşürerek sizi rahatsız etmeden geri planda çalışmasını sağlarız. Tabii normalden uzun sürecektir.

Sisteminizin hızına göre 5-10 ya 70-80 dakika sonra çekirdeğiniz /usr/src altında debian paketi olarak hazırdır. Yalnız burada önemli bir nokta var. Peketi yüklediğimizde root (/) dizinindeki initrd.img sembolik linki /boot altında yeni çekirdeğimizin initrd'sine işaret edecek. Şu anki ise LinuxOLD konumuna düşecek. Öyleyse sorun çıkması durumunda 2.4.18-686'yı (ya da sizinki neyse) devreye sokabilmek için lilo.conf'da initrd'nin tam yerini belirtmeliyiz. Aşağıdaki gibi:

image=/vmlinuz
label=Linux
read-only
initrd=/initrd.img
# restricted
# alias=1

image=/vmlinuz.old
label=LinuxOLD
read-only
initrd=/boot/initrd.img-2.4.18-686
optional
# restricted
# alias=2

Haydi bakalım:
dpkg -i kernel-image-2.4.18-decaf_kastim1.0_i386.deb


Bu yöntemle indireceğiniz herhangi bir çekirdeği de derleyebilirsiniz

/usr/src altına açıp linux linkini yönlendirin yeterli. Debian Woody ile gelen binutils sürümü yeni çekirdekleri linkleyemeyecektir. Binutils kurulumu sırasında tavsiye edilen yöntem de işe yaramıyor. Sid'den binary güncelleme ise stable unstable arası farklar şu aralar fecii boyutta olduğu için pek mümkün görünmüyor. Yine tüm sorumluluk size ait olmak üzere "simple sid backport" yöntemini kullanabiliriz.

/etc/apt/sources.list dosyanıza deb-src sid satırı ekleyin.Örnek olarak bendeki şöyle:

deb-src ftp://ftp.linux.org.tr/pub/debian unstable main non-free contrib

Sonra da apt'nin üstün yeteneklerinden faydalanalım:

apt-get update
apt-get build-dep binutils
cd /tmp
apt-get -b source binutils

Sonra da oluşacak paketlerden sadece binutils'in kendisini yükleriz. (dev ya da multiarch değil)


Kolay gelsin.




Mehmet Köse aka decaf
31 Mayıs 2003

Yayın Hakları: Belgenin tüm hakları yazara aittir. Bu belgenin en güncel hali www.ozguryazilim.org adresinde bulunacaktır. Değiştirilmemesi kaydıyla elektronik ortamda yayınlanabilir.

Feragatname: Bu makalede bahsedilen yöntemleri kendi ortamınızda uygulamanız sonucu meydana gelebilecek hasarlardan yazar veya yayınlayan kuruluş sorumlu değildir.

Görüşler

0
roktas
Ellerine bin sağlık, bu yazı gerekiyordu. Tabii böyle bir yazının beni ne kadar kışkırttığı tahmin edilebilir. Ayranı kabarmış bir halde hasbel-kader birkaç ekleme/tavsiye de ben yapayım:

- `initrd'li imajlar çeşitlilik arzeden donanımlar için her derde deva nevinden bir çözüm sunuyor. Fakat açıkçası ben pek haz etmiyorum. Şöyle biraz daha ufak tefek `initrd'siz kernel'lar kişisel kullanım için kanaatimce daha hoş oluyor. Tabii initrd desteği kaldırıldığında önceden modül olagelen bazı sürücüleri çekirdeğe gömmek gerekiyor. Bunların en önemlisi fs (filesystem). Çıktığı günden beridir reiserfs kullanmaktayım. Hans Reiser'ın DFSG uyumlu fakat fazlaca tantana eden bir lisansı olması dışında bir olumsuzluğundan da bahsedemem. ext3 sanıyorum daha yaygın bir tercih (bir de methini çokça duyduğum kernel-patch halinde derlenebilir xfs var, fakat alışkanlıkların değişmesi zor.)

- "Kastim" revizyon güzel, EXTRAVERSION ile oynamak ise biraz tehlikelice. EXTRAVERSION'u yani şu "2.4.18"e gelen eki değiştirmek için "append-to-version" anahtarı kullanılabiliyor fakat bana kalırsa buna hiç dokunulmasa daha iyi olur. İlla "uname"de farklı versiyon görmek istiyorsanız şunu yapmaya dikkat etmek durumundasınız: make menuconfig'den sonra "include/linux/version.h" dosyasını silin. "make-kpkg --append-to-version xxx ..." bunu tekrar (ve doğru şekilde) oluşturacaktır. (README'lerde gerekçeleri açıklanıyor. Ha bir de "uname" çıktısında derleyen kişi yerine "unknown" isminin çıkması sorunu var. Birkaç defa bunu becerdim fakat hangi trick'lerin uygulandığını not etmedim. Son yaptığım derlemelerde detaylı howto okumalarına rağmen bunu başaramamaktayım. Reçetesi olan varsa bunu çok duymak isterim.) EXTRAVERSION'a bir kere bulaşmışsanız dikkat, sair bir gün yapmak zorunda kalacağınız bir "modul_images" derlemesinde de EXTRAVERSION'a dikkat etmek durumundasınız.

- Fazlaca patch uygulamak da pek doğru bulmadığım bir hadise. Maamafih insan şu karizmatik Debian swirl'ünü de istemiyor değil hani :) Bu tip patch'lemeler de çok çeşitli şekillerde yapılabiliyor. PATCH_THE_KERNEL çevre değişkeni, "added-patches" anahtarı vesaire... Tecrübem odur ki bu kernel derlemesi zaten çok uzun bir işlemdir, işin sonunda patchlenmemiş bir imajla karşılaşıp al baştan yapması insana çok koyar; bu itibarla yamayı manuel şekilde sonuçlarını görerek uygulamak en doğrusudur. Yöntemi de basit: kernel-patch-* serisi "/usr/src/kernel-patches" dizinine kurulduğuna göre "falanca" yaması için bulunduğunuz yerden "../kernel-patches/all/apply/falanca" komutunu işletmek herşeyden emin olmanızı sağlayacaktır. Yalnız yama adımını doğru sırada icra etmek lâzım: yani "make menuconfig" öncesi (ki yamayla gelen olası yeni option'ları görelim.)

- Çekirdekle çokça haşır neşir olan -bendeniz gibi- bir yaratık iseniz -başka tonla gerekçe bir yana, sadece bu sebeple- LILO'yu terkedin ve GRUB kullanın. Paket dokümanlarında anlatılan birkaç ufak tefek ayardan sonra derleme ayinleriniz çok daha lezzetli bir hâl alacaktır :)

- Derleme sırasında lütfen yoldan geçen arabaların plâkalarını sayan bir takım meczuplar gibi ekrana basılan dosya isimleri ve türlü teferruatı sayarak kendinizi telef etmeyin (evet, bunu yapanlar var ;) Esasında derleme süresi ortalama bir egzersiz seansı için bulunmaz bir fırsattır. Bence bu öneriyi dikkate alın...
0
conan
[Quote]
- Derleme sırasında lütfen yoldan geçen arabaların plâkalarını sayan bir takım meczuplar gibi ekrana basılan dosya isimleri ve türlü teferruatı sayarak kendinizi telef etmeyin (evet, bunu yapanlar var ;) Esasında derleme süresi ortalama bir egzersiz seansı için bulunmaz bir fırsattır. Bence bu öneriyi dikkate alın...
[/Quote]

Egdrop compile'indan:
Go make a pizza or something
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Debian GNU/Linux 4.0 duyuruldu

tongucyumruk

Debian Projesi, yaklaşık 21 ay süren yoğun çalışmalardan sonra, kod adı "etch" olan Debian GNU/Linux 4.0 sürümünü resmî olarak duyurmaktan mutluluk duyar. Debian GNU/Linux; toplamda onbir işlemci mimarisinde çalışan; KDE, GNOME ve Xfce masaüstü ortamlarını içeren, güvenlik amaçlı şifreleme yazılımlarına sahip, FHS 2.3 uyumlu ve LSB 3.1 için geliştirilen yazılımları da destekleyen özgür bir işletim sistemidir.

Debian GNU/Linux için Üç Yeni Kılavuz

FZ

Yoğun şekilde çalışmalarını sürdüren Türk Debian GNU/Linux kullanıcıları grubu üyelerinden Serdar Aytekin, www.debian-tr.org sitesine üç yeni kılavuz eklemiş durumda:

Şapkasız Çıkmam! Debian Şapkalar Geldi

anonim

Merhaba.

Özgür Yazılım ve Açık Kaynak Günleri 2005'e yetiştiremediğimiz Debian Şapkalar nihayet geldi.

Bedeli 6 YTL olan şapkaların laciver ve krem rengi mevcuttur. Sipariş vermek isteyen arkadaşlar linux34.com sitesini ziyaret edebilir.

PlayStation 2 İçin Debian Tabanlı GNU/Linux

FZ

Sony Playstation 2 üzerinde çalışacak Debian GNU/Linux tabanlı BlackRhino sistemi kamuya açıldı. Böylece isteyen bu ilginç donanım üzerinde oyun ve çeşitli yazılım geliştirebilecek. Bu sürümde 1200'den fazla yazılım paketi mevcut ve artması bekleniyor.

Debian Konsorsiyumu Genişlemeye Devam Ediyor

butch

Bir süredir dedikoduları devam eden Debian Konsorsiyumu, kurumsal bir Debian dağıtımı için bir araya gelen Credativ, Knoppix, LinEx, Linspire, MEPIS, Progeny, Skolelinux, Sun Wah Linux, UserLinux, VA Linux, ve Xandros gibi markaların Progeny liderliğinde bir araya gelmesinden oluşacak. Konsorsiyum ile ilgili ilk resmi duyurunun Ağustos ayı başında gerçekleşecek LinuxWorld Conference & Expo'da yapılması bekleniyor.

Detaylar için buraya.