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

Kubuntu

yuxel

Ubuntu, son kullanıcılar için çok güzel bir seçimdi. Son sürüm Debian paketlerini (ve hatta Debian'da olmayan ancak son kullanıcıların görmek istediği paketleri) içeren Ubuntu'nun ben ve benim gibiler için tek bir eksiği vardı : KDE.

GNU Dokümanları Debian'dan çıkıyor mu?

anonim

Bu azıcık kışkırtıcı başlık nereden geliyor? Debian, FDL dahil kimi dokümantasyon lisanslarını özgür bulmadığı için bu lisansa sahip paketleri main arşivinden kaldırıyormuş...

Debian ile ISP kuruyoruz!

sundance

GNU/Linux dağıtımları içinde gerek sistemi gerekse gönüllülere dayanan geliştirme ekibinin yapısı açısından en kendine özgülerinden biri olan Debian için adım adım kurulum dökümanı...

Her bir aşamasındaki ekran görüntüleri ile bu dökümanı takip ederek

-Bind Dns Server
-Apache Web Server
-Postfix SMTP Server
-Qpoper Pop3 Server
-Proftpd
-MySQL ve daha bir çok uygulama ile

küçük çaplı bir ispnin verebileceği hemen her türlü hizmeti verebileceksiniz. Tabi bir de bant genişliği ve ISP sözleşmesi detayları var ;)

Bir Windows XP ve Debian deneyimi

FZ

Bir arkadaş bir avukat tanıdığından aldığı ve adam edip geri vereceğini belirttiği eski bir makinaya (266 Mhz'lik bir Celeron, 256 MB RAM, 4 GB HDD, S3Virge ekran kartı) Windows XP kurmaya kalkar. Bunun icin önce harddiske gerekli XP dosyaları aktarılır (neden çünkü makina CD'den boot edememektedir) sonra da hadi başla kuruluma denir, XP uyarır, bu alette SmartDrive yok, kurulum biraz vakit alabilir! Arkadaşımız da ne kadar sürebilir ki en fazla diye düşünür ve kurulumu başlatır, sistem çalışmaya başlar, aradan 1 saat geçmesine rağmen herhangi bir hareket görünmemektedir, arkadaş "alet kilitlendi herhalde kapatıp açsam mı" diye düşünürken biraz daha beklemeye karar verir ve başka bir bilgisayarda oyun oynamaya başlar, oyuna dalar, saatlerce oynar, 10 saat sonra XP kurulumunu hatırlar, sistem bir sonraki aşamaya geçmiştir. Bir sonraki aşama yaklaşık 8 saat sürer.

18 saat sonra büyük bir heyecanla bilgisayar XP ile boot etmeye çalışır ve mavi bir ekran çıkar, şuna benzer bir mesaj yazmaktadır:

error c000002 Windows Hard Error
systemRoot lablabal tdll.dll


Evet, hem isminden hem de uzantısından dll olduğuna dair en ufak bir şüphe etmeyeceğimiz ntdll.dll şikayet etmekte, "hard" bir problem olduğunu söylemektedir. Hardware? Hayır, Hard!

ATI Sonunda Becerdi :)

darkhunter

Debian GNU/Linux temelli bir işletim sisteminiz ve modern bir ATI grafik kartınız varsa size güzel bir haberim var :) Artık kurulum ve konfigürasyon için işkence çekmeyeceksiniz.