Çekirdeğin Derlenmesi
Önceki Çekirdeğe Yama Uygulanması ve Çekirdeğin Derlenmesi NASIL Sonraki
Çekirdeğin Derlenmesi
Çekirdek Sürüm Numaraları
Bütün Linux çekirdek sürüm numaraları . ile ayrılmış olan üç bölümden oluşur. Şu an biz üçüncü çekirdek sürümü olan 2'deyiz. Bazılari sürüm 1'i kullanmaktadır ve hala bir tane bile olsa sürüm 0 kullanan vardır.
İkinci numara çekirdeğin majör numarasıdır. Bu numaralardan 0 da dahil olmak uzere çift sayıda olanları kararlı olarak nitelendirilir. Bu şu anlama geliyor: Bu çekirdekler herhangi bir önemli hata içermiyorlar ve çok fazla denenmiştir. Tek sayıda olan çekirdekler geliştirme aşamasında olan çekirdeklerdir. Bu çekirdekler o kadar fazla denenmemiştir ve daha çok bir sonraki kararlı sürümde yeralacak olan son yeniliklere ihtiyacı olan kullanıcılar tarafından kullanılır.
Son numara minör numara olarak isimlendirilir ve her sürümde bir artar. Örneğin eğer çekirdek numarası olarak 2.2.14 görürseniz bu şu anlama gelir. 2.2 sürümü çekirdek, bu kararlı bir çekirdektir ve 15 inci sürümündedir. (0'ı da katarak sayıyoruz).
Çekirdek Kaynak Paketinin Temini
Çekirdek Kaynak Paketi oldukça fazla sayıda ftp sitesinden ve bütün Linux dağıtımlarının CD'lerinden elde edilebilir.
Yurtdışı çekirdek siteleri: Yurtiçi çekirdek siteleri:
Hazırlık
Kaynak kodunu aldıktan sonra onu /usr/src dizinine yerleştirin ve tar ile açmadan önce koyacağınız bir dizin oluşturun. Şu şekilde dizin isimlendirmesi yaparsanız daha iyidir: Örneğin 2.2.14 numaralı çekirdek için linux-2.2.14 isimli bir dizin oluşturun. Daha sonra bu dizini şu şekilde linux dizinine sembolik bağ oluşturun:
# ln -fs linux-2.2.14 linux
Burada -f seçeneğini kullanmamızın sebebi önceden /usr/src altında başka bir çekirdek kaynak kodunuz olabilir ve ona bağ yapmış olabilirsiniz. Bazı ln sürümlerinde -f seçeneği çalışmamaktadır (örnegin 3.13'de olduğu gibi). Bu durumda önceki bağı silmeniz ve yeni dizine bağ oluşturmanız gerekebilir. ln-3.16 sürümünde bu özellik doğru bir şekilde çalışmaktadır. Sorun yaşabileceğiniz tek durum eğer linux bir bağ dosyası değilde bir altdizin adı ise olabilir. Bu durumda ise bu dizini tekrar adlandırmanız sorunu çözecektir. Bunu şu şekilde yapabilirsiniz:
# mv linux linux-2.2.13
Şimdi şu komutu verelim:
# tar zxfv linux-sürümno.tar.gz
bz2 ile sıkıştırılmıs ise:
# tar xfvI linux-sürümno.tar.bz2
komutunu vermeniz gerekli olacaktır.
Çekirdeğin kaynak paketini açtıktan sonra uygulamak istediğiniz bir yama varsa (Örneğin PIII.patch) bunu bu aşamada daha önce anlatıldığı biçimde yapın. Yani:
# patch -p1 < PIII.patch
# find . -name *.rej
# origbul
Son olarak çekirdeğin kaynak kodunun olduğu dizine girmeden ve derlemeye başlamadan önce yapmanız gereken tek şey bazı bağların varlığını kontrol etmeniz olacaktır bunlar,
/usr/include/asm => /usr/src/linux/include/asm
/usr/include/linux => /usr/src/linux/include/linux
/usr/include/scsi => /usr/src/linux/include/scsi
bağlarıdır. Bu bağlar olmadığında derleme işlemine devam edemezsiniz. Eğer bu bağlar yoksa bunları aşağıdaki biçimde oluşturabilirsiniz:
# ln -s /usr/src/linux/include/asm /usr/include/asm
# ln -s /usr/src/linux/include/linux /usr/include/linux
# ln -s /usr/src/linux/include/scsi /usr/include/scsi
Bütün bu işlemlerin hepsini yaptıktan sonra /usr/src/linux dizinine geçin. Eğer bazı özel donanımlara ihtiyacınız varsa veya başka şeyler hakkında daha fazla bilgi almak istiyorsaniz Documentation dizinine geçin. Örneğin bazı CD-ROM sürücüleri bazı özel değerler ile derlenmelidir. Genelde çalışmalarına rağmen bunlar yüklendikleri sırada bazı uyarı mesajları verirler. Eğer bu tür mesajlar sizi ilgilendirmiyorsa bu dizine geçmenize gerek yoktur. Ama eğer sizi ilgilendiriyorsa bununla ilgili olan .txt, .h (başlık dosyaları) ve .c(C kodu) dosyalarını okuyun. Bunlar oldukça iyi açıklanmış olan dosyalardır. Fakat kendinizi bu kadar cesur hissetmiyorsanız bunu yapmak zorunda değilsiniz. Yine de elinizdeki orijinal .tar.gz'li veya .rpm'li paketlerle herşeyi düzeltecebileceğiniz aklınızda bulunsun.
Derlemeye Başlama
Şimdi yapılandırma işlemi için hazırız. Başlamadan önce biraz modüller hakkında bilgi verelim. Modülleri özel bir amaç için çekirdeğe sokup çıkartabildiğiniz programlar olarak düşünebilirsiniz. Eğer evde ufak bir ağınız varsa ve bu ağı her zaman değilde bazen kullanmayı düşünüyorsanız ethernet kartınızı bir modül olarak derleyebilirsiniz. Modülü kullanabilmek için makina çalışabilir ve /lib/modules dizinine erişilebilir olmalıdır. Bunun anlamı disk (IDE,SCSI,vs..., NFS olması durumunda ethernet kartı), dosya sistemi (normal olarak EXT2, NFS olabilir) ve çekirdek tipi (ELF) derlenmek zorundadır ve modül OLMAMALADIRLAR. Modüller çekirdek yükleninceye, disk (veya ağ) erişilebilir oluncaya ve dosya sistemi bağlanıncaya kadar kullanılamazlar. Bu dosyalar çekirdeğin içinde derlenmelidir, aksi takdirde kök dizin bağlanamaz. Eğer kök dizinini ağ üzerinden bağlıyorsanız NFS ve ethernet kartınızı çekirdeğin içinde derlemiş olmanız gerekmektedir.
Modüller niçin kullanılır? Modüller çekirdeği daha küçük yaparlar. Bu çekirdek tarafından ayrılan alanın boyutunu azaltır. Modüller yüklenir ve silinirler. Böylece kullandıkları bellek tekrar kullanılabilir. Eğer bir modülü makinanın açık kaldığı sürenin %90'ı boyunca kullanıyorsanız çekirdeğin içinde derleyin. Bir de şunu unutmayın çekirdek korunumlu bir alanda çalışır fakat modüller bu korunumlu alanın dışında çalışırlar.
Sonraki adım çekirdeği yapılandırmak. Burada aynı işi yapan üç tane ayrı seçeneğimiz var. Benim size önereceğim ise grafik tabanlı olanlardan birini kullanmanız. Eski yöntem için make config demeniz yeterlidir. Böylece uzun bir sorular listesi ile karşı karşıya kalırsınız. Eğer bir hata yaparsanız ctrl-c'ye basıp baştan başlamak zorunda kalırsınız. Bunun yanında sorularda tekrar geri dönme şansınız yoktur. Tavsiye edilen seçenekler ise make menuconfig ve make xconfig'dir.
Bunlar grafiksel olarak daha rahat bir çalışma ortamı sağlarlar. Menuconfig'i kullanabilmek için sisteminizde ncurses kitaplığı kurulu olmalıdır. Xconfig'i kullanabilmek için ise X'in sistemde kurulu ve yapılandırılmış olması gerekmektedir. Bunun yanında ayrıca Tk'nın da kurulu olması gerekmektedir. Birçok kişiye göre make xconfig çekirdeği yapılandırmak için en rahat ve en kolay yöntemdir. Menuconfig'de bir seçeneği kaldırdığınız zaman ona bağlı olan seçeneklerde ekrandan kalkar fakat xconfig'de bunu yaptığınız zaman ona bağlı seçenekler gri bir renk alırlar. Bu çekirdeğe en son nelerin eklendiğini görmek isteyen kişiler için oldukça hoş bir özellik olarak göze çarpar.
Çekirdeğin Yapılandırılması
Bu bölümde size çekirdek derlerken kullanılan bazı seçenekleri anlatacağım fakat bütün hepsini açıklamayacağım. Sizin için gerekenleri veya öğrenmek istediklerinizi seçeneklerin yanında help bölümünden öğrenebilirsiniz. Benim amacım en çok kullanılan ve problem ile karşılaşılanlara biraz açıklama getirmek. Buradaki açıklamalar 2.2.* serisi çekirdekler için yapılmıştır. 2.0.* serisi için gereken yerlerde açıklamalar yapılmıştır.
Kod Olgunluk Seviyesi Seçenekleri - Code Maturity Level Options
Burası ilk bölümdür. Buradaki tek soru geliştirme aşamasındaki sürücü ve kodları kullanmak isteyip istemediğinizdir. Eğer buna ihtiyaç duyan bir donanımınız varsa mecburen buna evet demeniz gerekiyor.
İşlemci Türü ve Özellikleri - Processor Type and Features
İlk seçenek işlemci türünüz ile ilgilidir. Burada sizin işlemcinize uygun olan seçeneği seçin. Matematik işlemcisi seçenegini eğer makinanız 486SX veya 386 ise seçmeniz gerekiyor. MTRR ise Intel'in P6 ailesi işlemcilerinde kullanılır ve rahatlıkla bu seçenege evet diyebilirsiniz. SMP'yi (Symmetric Multi Processing) ise birden fazla işlemciniz varsa seçmeniz gerekiyor. Eğer 2.0.* bir çekirdeğiniz varsa /usr/src/linux/ altında Makefile dosyasinda SMP=0 olan satırı SMP=1 yapmanız gerekmektedir.
Yüklenebilir Modül Desteği - Loadable Module Support
Eğer modülleri kullanmak istiyorsanız ilk seçeneğe cevabınız evet olmalıdır. Sistemde kerneld çalıştırıyorsanız üçüncü seçeneği seçmenize gerek yok. Bu seçenek kerneld'nin yaptığı işin biraz daha basitini yapıyor yani çekirdeğin ihtiyacı olduğu zamanlarda gerekli modüllerin yüklenmesini sağlıyor. Fakat sadece yüklüyor.
Genel Ayarlar - General Setup
Burada yapılması gereken en önemli şey çekirdeğe ELF (Executable and Linkable Format - Çalıştırılabilir ve İlintilenebilir Biçem) desteğini vermektir. Çünkü Linux uzun zamandır bu biçemi kullanmaktadır. Eskiden kullanılan a.out (Assembler.OUTput) yerini ELF'e bırakmıştır. Fakat benim tavsiyem a.out, ELF ve misc'in üçüne de destek vermeniz yönünde olacaktır. Bunun nedeni ise sistemde halen bazı dosyaların a.out dosyalar olmasıdır. Eğer paralel portunuza bağlı aletleri (örneğin yazıcı) kullanmak istiyorsaniz paralel port desteğini vermeyi unutmayın.
Tak/Çalıştır Desteği - Plug and Play Support
Makinanızdaki PnP kartları kullanabilmek için bu seçeneği seçmeniz gerekmekte.
Blok Aygıtları - Block Devices
Burada da eğer IDE diskiniz varsa seçip derlemeniz gerekiyor. Söylenebilecek birkaç şeyden biri SCSI Emulation Support olabilir. Bu seçeneği örneğin elinizde IDE bir cd yazıcı varsa kullanmanız gerekmektedir. Ayrıca SCSI Desteği - SCSI Support ve SCSI Generic Support vermeniz gerekiyor. Yalnız dikkat edilmesi gereken nokta eğer elinizde SCSI aygıtlar varsa ve SCSI kontrol kartınız yoksa bu seçeneği seçerek bu aygıtları kullanamazsınız. Software-RAID (Yazılımsal-RAID) kullanmak için yine burada bulunan Multiple Devices Driver Support (Çoklu Aygıt Sürücüsü Desteği) seçeneğini işaretlemeniz gerekiyor. Bir başka seçenek ise loopback aygıt desteğidir. Bu size örnek olarak CD'ye yazmak için kullanacağınız bir imge dosyasını bir blok aygıtı olarak kullanmanızı ve ve dosya sisteminize bağlayabilmenizi sağlayacaktır. Bunu şu sekilde yapabilirsiniz:
# mount /dosya.iso /mnt -o loop
Ayrıca yine bu bölümde bulunan Parallel Port IDE Device Support seçeneği ile paralel porta bağlanan harici IDE aygıtlarını kullanabilirsiniz. Bu seçenek için öncelikle yanındaki help'i okumanızı tavsiye ederim.
Ağ Seçenekleri - Networking Options
Eğer ağa bağlı olmayan bir makina kullanacaksanız bu bölümü doğrudan iptal edebilirsiniz. Fakat kullanacaksanız burada da bazı açıklamalar yapalım. Eğer güvenlik duvarı kullanmak istiyorsanız network firewalls seçeneğini seçmeniz gerekiyor. Yine TCP/IP networking seçilmeli. Ayrıca çeşitli protokoller için seçenekler yine mevcut, örneğin IPX. Burada ihtiyacınız olan seçenekleri yapmak istediklerinize göre seçmeniz gerekiyor. Bunları seçerken help'leri okumanızı tavsiye ederim. Örneğin tek bir ethernet kartına birden fazla IP vermek için kullanılan IP Aliasing Support veya 2.0.30 çekirdekten beri bulunan ve SYN Flooding olarak adlandırılan saldırıyı önlemek için kullanılan IP: TCP Syncookie Support'u bu bölümde bulabilirsiniz.
SCSI Desteği - SCSI Support
Eğer kök dizininiz bir SCSI aygıt üzerinde ise SCSI support'u modül olarak SEçMEMELİSİNİZ. Sistemdeki SCSI aygıtları kullanabilmek için bu bölümde onlara desteklerini vermeniz gerekiyor. Sadece SCSI aygıtları değil ayrıca eğer SCSI Emulation seçeneğini önceden seçmişseniz yine burada destek vermeniz gerekiyor. Bir sonraki bölüm SCSI low-level drivers bölümü. Burada da SCSI kontrol kartınız hangisi ise onu seçmelisiniz. Hemen hemen bütün kontrol kartlarının sürücüleri için burada destek bulabilirsiniz.
Ağ Aygıtı Desteği - Network Device Support
Bu bölüm bizi ağa tekrar geri getiriyor. Burada ağa bağlanmak için kullandığınız aygıt için sürücüleri seçiyorsunuz. FDDI'den Token Ring'e birçok arabirim için sürücüleri bulabilirsiniz. Eğer modem bağlantısı yapacaksanız PPP'yi seçmeyi unutmayın. Ethernet kartlarından ise yine sizin için uygun olanı seçin. Örneğin kök dizininiz için NFS kullanıyorsanız ethernet kartınızı çekirdeğin içinde derlemeyi unutmayın.
Amatör Radyo Desteği - Amateur Radio Support
Bu bölüm için önce HAM-HOWTO ve AX.25-HOWTO'yu okumanızı öneririm.
IrDa Desteği - IrDa Subsystem Support
The Infrared Data Associations™ tarafından belirlenen kablosuz kızılötesi iletişimde kullanılan IrDa protokollerinin standartları birçok dizüstü tarafından kabul edilmektedir. Eğer Linux'un bu protokollere destek vermesini istiyorsaniz bu seçeneği seçmeniz gerekmekte. Fakat bu tek başına yeterli olmamakta. Bunun yanında irmanager ve irattach gibi uygulamalara da ihtiyacınız bulunmaktadır. Kablosuz ağdan, kablosuz yazıcı ve hatta seri port öykünümüne kadar birçok alanda kullanılabilmektedir.
ISDN Desteği - ISDN Subsystem
ISDN (Integrated Services Digital Networks) kullanıyorsanız seçmek zorunda olduğunuz bir seçenek.
Eski CD-ROM Aygıtları (Ne SCSI ne de IDE) - Old CD-ROM Drivers (Not SCSI, Not IDE)
Eğer IDE veya SCSI bir CD-ROM kullanıyorsanız bu bölümü geçebilirsiniz. Ama CD-ROM'unuz listedekilerden bir tanesi ise onu işaretleyin.
Karakter Aygıtları - Character Devices
Alt-F1, Alt-F2... gibi kullandığınız sanal uçbirimller için burada bulunan ilk seçenek olan Virtual Terminal ve Support For Console on Virtual Terminal secçneklerini işaretlemeyi unutmayın. Bunun yanında örneğin PS/2 olan farenize desteği bu bölümde bulabilirsiniz. Burada bulunan Unix98 PTY Support için glibc-2.1'in (libc-6.1 ile aynı, kontrol için ls -l /lib/libc.so.* komutunu verin.) sistemde yüklü olması gerekmekte.
Ayrıca eğer bu seçeneği seçerseniz Dosya Sistemleri - Filesystems bölümünde /dev/pts filesystem for UNIX98 PTYs seçeneğini seçmeyi unutmayın. Eğer daha önce SMP (Symmetric Multi Processing) desteğini seçmişseniz bu bölümde Enhanced Real TimeClock Support seçeneğini seçmeyi unutmayın. Yine Video for Linux bölümünde televizyon ve radyo kartlarınız için desteği bulabilirsiniz. Floppy'ye bağlı olan teyp sürücüleri için destek ise Ftape, The Floppy Tape Device Driver bölümünde bulunmaktadır. Paralel portunuza bağlı olan yazıcıyı kullanmak için daha önceden vermiş olduğunuz paralel port desteğine ek olarak bu bölümde bulunan Parallel Printer Support seçeneğini de seçmeniz gerekmektedir. Yine oyun çubuğu kullanmak için desteği burada Joystick Support altında bulabilirsiniz.
Dosya Sistemleri - Filesystems
Değişik dosya sistemlerini kullanabilmek için onlara bu bölümde destek vermeniz gerekmektedir. Ek bilgi olarak bütün bu değişik dosya sistemlerini Linux altında kullanmanızı sağlayan sistemin adı VFS (Virtual File System) Sanal Dosya Sistemidir. Burada daima seçilmesi gereken Second Extended FS Support'dur. Bu şu an Linux'un kullandığı dosya sistemi olan ext2'dir ve daha önce belirtildiği gibi makinanın açılabilmesi için seçilmesi gerekmektedir. Yine /dev/proc desteği de unutulmamalıdır. Kota türü uygulamalar için burada destek bulabilirsiniz. Eger NFS kullanıyorsanız Network File System bölümünde desteğini verebilirsiniz. Burada DOS, UMSDOS, VFAT, ISO9660 gibi desteklerin hepsini modül olarak vermenizi tavsiye ederim. Bunlar ihtiyaç oldugu zaman kerneld tarafından yüklenirler.
Buraya kerneld için ufak bir açıklama koyalım. Kerneld sistemde ilk çalıştırılan rc betiklerinden biri olmalıdır.
Konsol Sürücüleri - Console Drivers
Burada size ek olarak söyleyebileceğim Video Mode Selection Support seçeneğini seçerseniz /etc/lilo.conf'un içinde vga=ask veya ask yerine kullanmak istediğiniz kipin numarasını girmeyi unutmamanızdır. Eğer Frame Buffer Device kullanmak istiyorsanız bu bölümde desteğini vermeniz gerekmektedir.
Ses - Sound
Sanırım birçok kişinin en çok sorun ile karşılaştığı bölüm burasıdır. Bu bölümde ses kartınızı doğru olarak seçmeniz gerekmekte. Ayrıca I/O ve IRQ değerlerini doğru olarak girdiğinizden emin olun. Eğer SoundBlaster bir kartınız varsa IRQ değeri olan 7 yi 5 olarak değiştirin. Yine MPU401 I/O 0 olarak gözüküyorsa bu degeri 330 yapın. Bunun dışında diğer kartlarda girdiğiniz değerlerin doğru olduğundan emin olun. PnP bir ses kartına sahipseniz ISA PnP uygulamlarını kullanmanız gerekiyor. Fakat her koşulda yine de ses desteğini modül olarak vermeniz gerekiyor. Dolayısı ile eğer bir ses kartınız varsa ses desteği en azından modül olarak verilmiş olması gerekiyor. Ses kartınız yoksa fakat PC'nizin hoparlörünü (beep sesini veren) kullanmak istiyorsaniz ftp://ftp.infradead.org/pub/pcsp/ adresinden gerekli olan çekirdek yamalarını ve uygulamaları indirmeniz gerekiyor.
Yine de ses ile ilgili ayarlamaları yapmadan once Türkçe'ye sevgili R. Tolga Korkunçkaya tarafından çevrilen Sound-HOWTO, Ses-NASIL'ı okumanızı tavsiye ederim. Bunun yanında /usr/src/linux/Documentation/sound/ dizini altında sizin ses kartınız ile ilgili olan açıklama dosyasını okumanızı da öneririm.
SB Live ses kartına sahipseniz bunun için sürücüleri http://opensource.creative.com adresinden indirebilirsiniz. Daha sonra çektiğiniz paketin içindeki INSTALL dosyasını okuyarak bu kartı kullanabilirsiniz. Bu paketteki işlemleri yaptığınız zaman emu10k1.o diye bir modul dosyası oluşacaktır ve /lib/modules/linux-2.2.* dizininde misc altdizinine kopyalanacaktır. Yine bunu kullanabilmek için önce Ses desteğini modül olarak vermeniz gerekmekte. Yani burada soundcore.o ve emu10k1.o adlı iki modül bulunmalı bunlardan önce soundcore.o'yu sonra emu10k1.o'yu insmod ile yükleyerek SB Live ses kartınızı kullanabilirsiniz. Daha ayrıntılı açıklama için bu paketteki INSTALL dosyasını okumanız gerekmekte.
Çekirdek Programlama - Kernel Hacking
Bu bölüme genel olarak hemen hemen herkesin cevabı hayırdır. Alt+PrintScreen tuşları ile beraber çeşitli tuş kombinasyonları ile bir takım kontrol oğelerine sahip olmanızı sağlayan bu seçenek aslında oldukça faydalı fakat en azından ben de şimdilik sadece makinayı bir anda kapatması nedeniyle tavsiye etmeyeceğim. Sorunun nerede olduğunu bulursam ve düzgün çalışırsa o zaman tavsiye ederim.
Çekirdeğin Derlenmesi
Şimdi yapmanız gereken şey yapılandırmanızı saklamanız ve çıkmanız. Bunları save ve exit ile yapabilirsiniz. Bunu yaptığınız zaman saklamış olduğunuz yapılandırma bir metin dosyasında saklanır. Bu dosyayı istediğiniz bir metin düzenleyici (Emacs, vi, Crisplite, joe,pico, ...) ile değiştirebilirsiniz. Bu dosya .config dosyasıdır. Sırada ise make dep geliyor. Bunun amacı ise sizin .config dosyasındaki yapılandırmanızı alt dizinlere yaymaktır. Böylece yapılandırma işlemini tamamlamaktır. Daha sonra make clean komutunu vermeniz gerekiyor. Bunun amacı ise core dosyaları *.tmp dosyaları System.map gibi dosyaları temizlemektir.
Evet şimdi çekirdeği derlemeye başlamak için tamamen hazırız. Bunun için önümüzde birkaç tane yol var. Bunları açıklayalım.
make zImage
Basit, sıkıştırılmış olan çekirdeği oluşturur ve /usr/src/linux/arch/i386/boot/ altına zImage adı altında yerleştirir.
make zlilo
zImage'ı kök dizine kopyalar ve lilo'yu çalıştırır. Eğer bunu seçerseniz /etc/lilo.conf'u önceden ayarlamış olmanız gerekmektedir.
make zdisk
zImage/dev/fd0'daki bir diskete yazar. Bunun olabilmesi için doğal olarak önceden sürücüye bir disket koymuş olmanız gerekmektedir. 720K'lık disketlere çekirdek sığmaz, bu yüzden kullanmayın.
make boot
make zImage ile aynı şekilde çalışır.
make bzImage
Büyük çekirdekler için kullanılır ve make zImage ile aynı şekilde çalışır. /usr/src/linux/arch/i386/boot/ altına bzImage adı altında yerleştirir. Birçok kişi bu seçenekte bzip gibi bir sıkıştırma algoritmasının kullanıldığını zanneder. Bu tamamen yanlış bir düşüncedir. bzImage kullanıldığı zaman nelerin yapıldığı /usr/src/linux/arch/i386/boot/tools/ altında build.c adlı dosyada bulunmaktadır. Bu seçeneği çekirdek derlenmesi sırasında "System is too big. Try using bzImage or modules" hata mesajını aldığınız zaman kullanmalısınız.
make bzdisk
Büyük çekirdekler için kullanılır ve make zdisk ile aynı şekilde çalışır. Yukarıdaki hata mesajını make zdisk seçeneğinde alırsanız bunu kullanmalısınız.
Bunların dışında make seçenekleri de vardır fakat daha özel oldukları için açıklamayacağım. Yukarıdaki seçenekler yeterlidir. Benim bunların içinde tavsiyem make bzImage'dır.
Yapılandırma sırasında modül kullanmışsanız aşağıdaki komutları vermeniz gerekmektedir:
# make modules
# make modules_install
Bu komutları böylede verebilirsiniz:
# make bzImage;make modules;make modules_install
Böylece bir komutun bitmesini beklemek zorunda kalmazsınız.
Eğer bu kadar komutu nasıl aklınızda tutacağınızı düşünüyorsanız veya bütün bunları teker teker yazmak istemiyorsaniz. /etc/profile dosyasına örneğin derle adlı bir alias ekleyin bu tek bir satırda ve şu şekilde olsun.
alias derle='cd /usr/src/linux;make mrproper;make menuconfig;make dep;make \
clean;make bzImage;make modules;make modules_install'
Daha sonra
# source /etc/profile
komutunu verin. Böylece bir dahaki çekirdek derleme işleminde önceden kaynak kodunu /usr/src/ altına koyduktan ve gerekli bağları yaptıktan sonra
# derle 
dersiniz. Böylece hiç vakit kaybetmeden make menuconfig ile de çekirdeği yapılandırır, çekirdeği ve modülleri derler ve yerlerine yerleştirmiş olursunuz.
Çekirdek derlendikten sonra yapmanız gereken birkaç şey kalıyor. İlk önce çekirdeği nereye isterseniz oraya yerleştirin. Bu isterseniz kök dizini, /boot dizini veya sizin istediğiniz başka bir yer olabilir ama eğer düzenli olmasını istiyorsanız /boot dizinine yerleştirmek daha iyi olacaktır. Ayrıca /usr/src/linux/ altındaki System.map dosyasını da bu dizine yerleştirin.
Yukarıdaki /boot dizinine yerleştirme işlemlerini tek komutla da halledebilirsiniz:
# make install
Daha sonra /etc/lilo.conf dosyasını düzenleyin. Bu çok önemlidir. Eğer /etc/lilo.conf'da yeni çekirdeği belirtmezseniz bu çekirdek ile sistemi başlatamazsınız. Çekirdeğin olduğu yere bakarsanız orada vmlinuz adlı bir çekirdek imgesi görürsünüz. Bu sizin ilk çekirdeğinizdir. Bu çekirdeğin çalıştığını biliyorsanız ona dokunmayın. Vmlinuz adı şu anlamlara geliyor:
"v": "virtual" ve "sticky" (sanal ve yapışkan)
"m": "memory" ve "disk management" (bellek ve disk yönetimi)
"z": çekirdek sıkıştırılmış.
/etc/lilo.conf Dosyasının Düzenlenmesi
/etc/lilo.conf'u yeni çekirdeği ekleyecek biçimde düzenleyelim. Bunun için image=/boot/vmlinuz olan bölümlere yeni imgemizi eklememiz gerekiyor. /etc/lilo.conf'un şu şekilde olduğunu varsayalım:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux

image=/boot/vmlinuz-2.2.12
  label=linux
  read-only
  root=/dev/hdb1

other=/dev/hda1
  label=dos
Şimdi yeni çekirdeği ekleyelim.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux

image=/boot/vmlinuz-2.2.15
  label=linux
  read-only
  root=/dev/hdb1

image=/boot/vmlinuz-2.2.12
  label=eski
  read-only
  root=/dev/hdb1

other=/dev/hda1
  label=dos
Böylece yeni çekirdeğimizi /etc/lilo.conf'a eklemiş olduk. Bunu yaptıktan sonra lilo komutunu vermeyi unutmayın. lilo komutunu verdikten sonra ekranda çekirdek etiketlerini görürüz şöyle ki:
# lilo
Added linux *
Added eski
Added dos
Burada "*" işaretli olan öntanımlı yüklenecek çekirdektir. Bu default=linux satırında label'i belirtilen çekirdektir. Eğer ekranda bu çıktıları göremediyseniz veya hata mesajı ile karşılaştıysanız tekrar /etc/lilo.conf'u düzenleyin ve lilo komutunu tekrar verin.
Makinanın Yeni Çekirdekle Açılması
Şimdi makinayı yeniden başlatalım. Bunu:
# shutdown -r now
ya da makinanız destekliyorsa
# poweroff
ile yapabilirsiniz. reboot ve ctrl+alt+del'de aynı işi yapmasına rağmen bazı durumlarda dosya sistemlerin düzgün olarak ayrılmasını sağlayamıyor ve açık olan dosyaların tahrip olmasına neden olabiliyor.
Eğer açılışta LILO satırından sonra çekirdeğe bazı parametreler girmek isterseniz ve boot: ibaresini göremiyorsaniz shift tuşuna basarak görebilirsiniz. Böylece boot: ibaresi ekranda gözükür. Bu ibareyi gördükten sonra tab tuşuna basarak elimizdeki çekirdek etiketlerini görebiliriz. Hangi çekirdeğin yüklenmesini istiyorsanız onun etiketini yazın ve yanına parametrelerinizi girin. Eğer açılış sırasında "VFS, cannot mount root" gibi bir hata mesajı görürseniz daha önceden bahsetmiş olduğum disk veya dosya sistemi desteklerinden birini vermemişsiniz demektir.
Bütün hepsi bu kadar artık yeni çekirdeğiniz ile çalışıyorsunuz.
Önceki Üst Ana Başlık Sonraki
Çekirdeğe Yama Uygulanması Başlangıç A. Telif Hakkı ve Lisans
Bir Linux Kitaplığı Sayfası