Bu belgenin yazıldığı tarihte güncel çekirdek sürümleri 2.6.x idi. Ancak 2.6 çekirdekleri derlemek için sistemin bu çekirdeğe uygun olması gerekir. Benim elimdeki sistem buna uygun olmadığından ben 2.4 çekirdeklerle çalışmak zorundaydım. Yapacağımız iş için çekirdeğin 2.4 ya da 2.6 olmasının bir önemi yok. Ben zaten kullanmakta olduğum 2.4.22 çekirdeğinin kaynak kodunu kullandım.
Siz de kurduğunuz sistemde bulunan çekirdeğin sürümü 2.4 serisinde ise onun kaynak kodunu kullanabilirsiniz. 2.6 çekirdeklerin derlenmesi biraz farklı sanırım (Hiç 2.6 çekirdek derlemedim). Yalnız çekirdeği derledikten sonra onu sisteme kuracağımızdan ismini değiştireceğiz. 2.4.22-x yapacağız ki, sistemde kurulu çekirdekle karıştırmayalım.
Çekirdeğin kaynak kodunun yeri dağıtımdan dağıtıma değişmez, yeri /usr/src/linux dizinidir. /usr/src/linux genelde kullanılan çekirdeğin kaynak kodunun bulunduğu dizini işaret eden bir sembolik bağ olarak düzenlenir. Bizim çalışacağımız dizin /usr/src/linux-2.4.22 dizini olacak.
X terminalleri için kullanacağımız çekirdek kaynak kodunun sisteminizin çekirdek kaynak kodundan farklı bir yerde durması daha iyidir. linux-2.4.22-x diye bir dizin açıp linux-2.4.22 dizininin içeriğini bu dizine kopyalayın. Daha önce bir çekirdek derlemişseniz yeni açtığınız dizine geçip make mrproper komutunu verin. Bu komut çekirdek kaynak kodunu sıfırlar. Yani onu hiç derleme yapılmamış duruma getirir. Kaynak kodunu derlememişseniz bu işlemi yapmanıza gerek yoktur. Ancak, birşeyler yanlış gider ve derleme işlemini yinelemek isterseniz derlemeye başlamadan önce vereceğiniz ilk komut bu olmalı.
# bunzip2 linux-2.4.22.tar.bz2
# tar xfv linux-2.4.22.tar
Bu iki komut kaynak paketini linux-2.4.22 dizini altında açacaktır. Dizine geçin ve Makefile dosyasını düzenlemek üzere açıp 4. satırı
yapın. Bu derlenmiş çekirdeğin ismini vmlinuz-2.4.22-x yapacak. Böylece bu çekirdeğin X terminalleri için derlediğimiz çekirdek olduğunu hatırlayacağız. Hatırlamamız lazım da, çünkü bu çekirdekle üzerinde çalıştığınız Linux sistemini açamayacaksınız. Bu çekirdek sadece X terminallerini çalıştırabilecek kadar yeteneğe sahip olacak. Örneğin ağ kartı, fare, ekran kartı ve makinanın belleği gibi temel donanım bilgilerinden başka donanım bilgisi içermeyecek. Sabit diskleri, disket sürücülerini, CDROM'ları ses kartlarını v.s. tanımayacak. Bir terminale bunlar gerekmez.
Linux çekirdeğini derlemek için iyi derecede İng. bilmek daha da ötesi iyi derecede sistem bilgisi gerekir. Bu derece ayrıntı bu küçük belgenin sınırlarını aşar. Bu bilgi ayrı bir kitap olur.
Ben sadece çekirdek yapılandırmasının sonucu olan
.config dosyasının içeriğini vereceğim. Bunun yanında da neyi niçin yaptığım hakkında kısa bir bilgi vereceğim.
Yapılandırma dosyasını eklerde bulabilirsiniz. Onu ayrı bir pencerede açıp burada yapacağım açıklamaları oradan izleyebilirsiniz.
-
14. satırda başlayan bölümde çekirdeğe yüklenebilir modül desteği veriyoruz.
-
21. satırda başlayan bölümde çekirdeğin 386 ve sonraki işlemciler için geçerli olmasını sağlıyoruz. Böylece 386, 486, 586 ve 686 işlemcileri ve bunlarla uyumlu (AMD gibi) çekirdeklerle çekirdeğimiz çalışabilecek. Alt satırlarda bir 386 çekirdeğin desteklemediği hiçbir özelliği çekirdeğe vermiyoruz. 386SX'lerde bu çekirdek çalışmaz. En az 386DX gerekir. Bunların ne olduğunu bilmiyoranız, boşverin. Karşılaşmamışsınız demektir (antika).
-
67. satırda başlayan genel ayarlar bölümünde çekirdeğe, 69. satırda ağ desteği, 70'de PCI desteği ve devamında sistemin genelini etkileyen bazı özel durumlara ilişki destekleri veriyoruz.
-
112. satırda başlayan blok aygıtları bölümünde sadece ramdisk ve initrd ile ilgili destekleri veriyoruz.
-
142. satırda başlayan ağ seçenekleri bölümünde bir linux ağı için gerekli ne varsa bunların desteğini veriyoruz.
-
242. satırda başlayan bölümde ağ aygıtları ile ilgili desteği açıyoruz ve 257. satırda başlayan 10/100 Mbitlik ethernet kartlarının tamamının modül olarak derlenmesini istiyoruz. Piyasadaki en ucuz, en kullanışlı ve en çok kullanılan ağ kartları bunlar. Sizinki bunlardan biri değilse biraz paraya kıyıp bunlardan temin edin ve ağınızı bunlara göre oluşturun. 100MBitlik bir ağın tadına doyum olmaz.
-
404. satırda başlayan bölümde klavye ve fare için donanımsal destek, 415. satırda başlayan bölümde seri portlarla ve konsol ile ilgili destek, 449. satırda başlayan bölümde ise fare türleri ile ilgili destek var.
-
496. satırda başlayan bölümde sadece donanım saati desteğini veriyoruz.
-
534. satırda başlayan bölümde ramdisk için gereken dosya sistemi ile ilgili destekleri veriyoruz.
Bu dosyayı /usr/src/linux-2.4.22 dizini altına .config ismiyle kaydedin (başında . olacak).
Komutunu verin. Bir takım işlemlerden sonra bir pencere açılacak. Hiç orada dolaşmayın. ESC ESC ile çıkın ve ardından sırasıyla şu komutları verin:
# make dep
# make bzImage
# make modules
# make install
# make modules_install
Bu komutların herbiri biraz vakit alır, bu işlemler sürerken makinada oyun filan oynayabilirsiniz :-) Merak etmeyin işlemi öyle aman aman yavaşlatmaz.
Bu işlemler sonucunda /boot dizininde isminde 2.4.22-x bulunan bazı dosyalar oluşacak. Bunlardan vmlinuz-2.4.22-x isimli dosya çekirdeğimizdir. Onu /export/netlogon/autoboot dizinine vmlinuz ismiyle kopyalayın. vmlinuz-2.4.22-x çekirdeğinin sistemin kendi çekirdeğine göre ne kadar küçük olduğuna dikkat edin (yarısı kadar).
Ayrıca derlenen modüller de /lib/modules/2.4.22-x dizini altındaki dizinlere konulmuş olacak. Bize /lib/modules/2.4.22-x/kernel/drivers/net dizini altındaki modüllerden biri gerekecek. Hangisi olacağını nasıl tespit edeceğiz? derseniz ona da sıra gelecek.