KaCaK Site Yöneticisi
Mesaj Sayısı : 476 Yaş : 31 Nerden : Sivasspor Kayıt tarihi : 04/06/07
| Konu: Linux çekirdeğini derlemek.. 6. seri Çarş. Haz. 13, 2007 8:30 pm | |
| 40. Resim : Kaydet ve çık Çekirdeğin derlenmesi 'Kaydet ve çık' (Save and Exit) tuşuna basmakla, yaptığınız yapılandırma seçenekleri './.config' veya çekirdeğinizi /usr/src/linux dizininde derliyorsanız, '/usr/src/linux/.config' dosyasına kayıt edilecektir. Size önerim, bu dosyayı saklamanız ve yeni bir çekirdek derleyeceğiniz zaman ve çekirdekler arası farklılıklar da az ise, sözgelimi 2.4.5'den 2.4.6'ya güncelleme yapıyorsanız, onu yeni çekirdeğin bulunduğu dizine kopyalamanızdır. Bu şekilde, eskiden yapmış olduğunuz tüm yapılandrımayı sakla****** hem üzerinde değişiklik yapma fırsatı elde ediyorsunuz hem de zamandan kazanmış oluyorsunuz. Benzer şekilde Linux dağtımınızla birlikte 'stantart' çekirdeğin yapılandırma dosyası varsa, ki bu genelde /boot/config dir, onu alıp (Bu dosyayı çekirdek kaynak dosyalarının bulunduğu dizine .config olarak kopyalamanız gerekecek. ) kullanabilirsiniz. Ancak, çekirdeğinizi güncellediyseniz ve garip sorunlarla karşı karşıya kalıyorsanız, ilk silmeniz gereken dosya bu .config dosyası olmalıdır! Tabii ki, güvenlik açısından en son düzgün çalışan çekirdeğin yapılandırma dosyasının yedeğini almış olduğunuzu düşünüyorum. Çekirdeği derlemede kullanılan adımlar şöyledir: make dep make clean (eski çekirdekler için) make bzImage make modules make modules_install 40. resimde 'make dep' komutunu çalıştırmanız gerektiği zaten belirtilmişti. Bu komutları tabii ki Linux çekirdeğinin kaynak kodlarının bulunduğu dizininde, ki genelde bu /usr/src/linux dizininidir, çalıştırmanız gerekir. 2.0.x veya daha eski çekirdek sürümleri için ayrıca 'make clean' komutunun çalıştırılması gerekir. Bu komut, derlemeye başlamadan önce eski dosyaları silmektedir. 'make clean' komutu, eski nesne dosyalarını (.o) üzerine yazılmadığı için ortaya çıkan ve başka türlü çözülmesi ve izlenebilmesi çok zor olan sorunları gidermekteydi. 'make bzImage' komutu çekirdeği derlemekte, ancak yüklememektedir. Çekirdeği 'make bzlilo' veya 'make zImage' gibi başka make komutlarıyla da derlemeniz mümkündür, ancak bu durumda beklenmedik sorunlar ortaya çıkabilir. Bazı çekirdekler 'make zImage' ile derlenebilmek için çok büyüktür. Derleme sırasında hata oluşmaktadır. 'make bzlilo' ile '/etc/lilo.conf' yapılandırma dosyası dahil olmak üzere herşeyin yapılandırıyor olması gerekir. Ancak, bu herzaman durumu yansıtmamaktadır. En güvenlisi en son sözünü ettiğim komutları kullanmamaktır. 'make modules' komutu modülleri derlemekte, 'make modules_install' komutu ise, onları yüklemektedir. Eğer, kullanmakta olduğunuz çekirdeğin sürüm numarası 2.4.6 ise, modüller '/lib/modules/2.4.6/' dizinine kopyalanmaktadır. Böylece, başka bir çekirdek sürümü kullanılması halinde, modüller çekirdek sürümüne uygun düşen dizine kopyalandıkları için, çekirdek modüller ile ilgili herhangi bir sorun yaşamamaktadır. Bilgisayarın açılışı sırasında çekirdek hangi modülleri kullanacağını artık bilmektedir. Ancak, daha önceden 2.4.6 sürümlü çekirdeği derlemişseniz, daha sonraki derlemelerde, her nekadar yeniden derlenenler eskilerin üzerine kopyalanıyorsa da, artık kullanılmayan modüller hala '/lib/modules/2.4.6/' dizininde yer alıyor olabilir. Bu sorun yaratmamakla birlikte, modülleri yeniden derlemeden önce eskilerini silmek hem herzaman için iyi bir düşüncedir hem de pek fazla zamanınızı almaz. Çekirdeği yüklerken sorun yaşamak istemiyorsanız, '/etc/lilo.conf' dosyasının doğru yapılandırldığını ve yeni çekirdeğin 'System.map' dosyasını doğru dizine kopyalamanız gerekir. En sonunda 'lilo' komutunu çalıştırmanız gerekir. Lilo yerine Dos/Windows altında Linux çekirdeğini yükleyen 'loadlin'i kullanmanız da olasıdır. Her ikisinden de aşağıda sözedilmiştir. Lilo'nun yapılandırılması Lilo'nun yapılandırma dosyasını genellikle '/etc' dizininde '/etc/lilo.conf' adı altında bulabilirsiniz. Bu dosyayı XEmacs, kedit, gedit gibi gelişmiş metin işlemcileriyle düzenleyebileceğiniz gibi, basit bir düzenleyici (editör) de kullanabilirsiniz. lilo.conf dosyası aşağıdakine benzer bir görünüme sahip olmalıdır: boot = /dev/hda vga = normal read-only menu-scheme = Wg:kw:Wg:Wg lba32 prompt timeout = 300 message = /boot/message other = /dev/hda1 label = win98 image = /boot/bzImage label = linux-2.4.6 root = /dev/hda3 append = "parport=0x378,7 hdd=ide-scsi" image = /boot/vmlinuz.suse label = suse root = /dev/hda3 append = "hdd=ide-scsi" initrd = /boot/initrd.suse Bu dosyanın ayrıntıları kullandığınız sistemden sisteme veya Linux dağıtmları arasında farklılıklar gösterebilir. O yüzden dosya içeriğini burada adım adım açıklıyorum. Genelde ilk 8 satırı değiştirmeniz gerekmemektedir. İlk satırdaki boot komutu, sistemin hangi diskten açılacağını, yani ana açılış kaydın bulunduğu yeri (master boot record) belirtmektedir. Benim bilgisayarımda bu birinci disk olan /dev/hda dır. 'vga' seçeneği, açılış programının standart olan, 80x25 karakterlik VGA metin ortamına işaret etmektedir. 'read-only' (sadece okumak amaçlı) seçeneği, açılış sürecinin Linux disk bölmesini sadece okunabilir şekilde bağlamaktadır (mount). Linux açılırken disk bölmeleri hatalara karşı denetlenmekte ve ancak ondan sonra okunabilir ve yazılabilir şekilde bağlanmaktadır. 'menu-scheme' (menü şeması) satırında metin ortamdaki lilo'nun renkleri ayarlanmaktadır. 'lda32' ile BIOS'ta buna destek varsa, işletim sistemi 1024 silindirin dışında kalıyorsa bile bilgisayarınızı açabilirsiniz. Günümüz bilgisayarların hepsi 'lba32'yi desteklemektedir. Bununla ilgili sorununuz olduğuna, BIOS'sunuzu güncellemekle çözebilirsiniz. BIOS güncelleme işi aslında günümüz geniş kapasiteli disklerle yapılması kaçınılmaz hale gelmiştir. 'prompt' komut, lilo'nun kullanıcıya, seçeceği işletim sistemi için komut satırı vermesini sağlamaktadır. 'timeout' ise, benimsenmiş işletim sistemini yüklemeye başlamadan önce kullanıcıya tanınan zamanı mili saniye olarak belirtmektedir. Buradaki lilo.conf dosyasında olduğu gibi yüklenecek benimsenmiş bir işletim sistemi belirtilmemişse, ilk rastlanan işletim sistemi yüklenmektedir. Benim durumumda bu Windows 98 dir. Böylece Linux'u bilmeyenler Windows işletim sistemini elde etmiş olurlar. 'message' seçeneği, lilo çalışırken göstereceği resmi işaret etmektedir. SuSE'de bu şişko penguen olan Tux'tur ve tabii ki 'SuSE Linux 7.1' yazısı da. Bu resmi, 'xv /boot/message' veya 'gv /boot/message', bazan da 'gimp /boot/message' komutunu çalıştırarak görüntüleyebilirsiniz. 'xv' ve 'gv'(ghostview) çeşitli biçimdeki resim dosyalarını görüntüleyebilmenizi sağlayan paylaşımlı yazılımlardır (shareware). Ancak, /boot/message dosyası grafik ekranı olan ve yeni Linux dağıtımlarında vardır. Eskilerde ise, bu dosyada sadece bir metin yazısı vardır. Eğer, isterseniz beğendiğiniz başka bir resmi de kullanmanız mümkündür, ama ben bunu hiç denemedim. Lilo ile ilgili tüm seçenekler 'man lilo' veya 'man lilo.conf' komutlarıyla görüntüleyebileceğiniz man sayfalarında yeralmaktadır. Diğer seçenekler çeşitli işletim sistemlerinin açılışını denetlemektedir. En fazla onaltı adet işletim sistemi veya çekirdeği yüklemeniz mümkündür. Gnelde bu yeterli olmaktadır. İşletim sistemini 'label=' (etiket) satırıyla seçersiniz. Windows98 ve daha eskileri ile DOS işletim sistemleri, Windows NT veya Windows 2000 değil, ilk ana disk bölmesinde yer almaları zorunluluğu vardır. Dolayısıyla bu işletim sistemleri sadece 'other' ve 'label' satırlarına gereksinim duymaktadır. 'image=/boot/bzImage' ile başlayan ikinci bölüm, 'linux-2.4.6' etiketi ile yeni bir çekirdeği başlatmaktadır. Benim Linux'umdaki root dizini '/dev/hda3 dır. 'append = "parport=0x378,7 hdd=ide-scsi"' olan satır, çekirdeğe paralel kapının bağlantı noktası (port 0x378) ile kesme (interrupt 7) numaraları adresleri ile, CD 'hdd' yazıcımının SCSI taklitlendirmesi (emulation) aracılığıyla erişilmesi gerektiğini belirtmektedir. CD aygıtlarının isimleri sistemden sisteme farklılık göstermektedir. Benim bilgisayarımda 'hdd' dir. Sizinkinde farklı olabilir. Kesme bilgisini belirtmek kişisel bir seçimdir. Kesmeyi belrtmek yazdırma işlemini hızlandırmaktadır. Ancak, paralel bağlantı noktası (yazıcı) için hali hazırda bir kesme numarısı yoksa, bunu belirtmeseniz de olur. Linux'ta paralel bağlantı noktasının, kesme kullanmadan, kullanımına yarayan, daha yavaş çalışan ve adına 'polling' dediğimiz bir yöntem benimsenmiş değer olarak kullanılmaktadır. 'image = /boot/vmlinuz.suse' ile başlayan son bölümde SuSE'nin yükleme süreci sırasında oluşturulmuştur. append="hdd=ide-scsi" satırını ben kendim ekledim. 'boot/vmlinuz.suse' dosyası SuSE ile birlikte gelen standart çekirdektir. Bu çekirdeği acil durumlar için saklamanızı şiddetle öneririm. 'initrd = /boot/initrd.suse' satırı sadece standart yükleme çekirdeği içindir ve 'ramdisk' denilen bir sanal diskin geçici belleğe (RAM) yüklenmesini belirtmktedir. Bu geçici bellek disk alanı (ramdisk) Linux'un açılışı için gerekli tüm modülleri içermektedir. Bir dağıtım çekirdeğinin çok değişik donanımların hepsini desteklemek zorundadır. Bunu yapabilmenin yolu da çok sayıdaki modülü kullanmaktan geçmektedir. Umuyorum ki şimdi, lilo komunutunu çalıştırmadan önce, yeni Linux çekirdeğini nereye koymanız gerektiği daha açıktır. Örneğimizde çalıştırılması gereken komutlar şunlardır: cp /usr/src/linux/arch/i386/boot/bzImage /boot cp /usr/src/linux/System.map /boot/System.map-2.4.6 lilo İkinci kopyalamayı SuSE 7.3'de aşağıdaki gibi de yapabilirsiniz: cp /usr/src/linux/System.map /boot (Asıl System.map dosyasının adı zaten değiştirilmişti.) Eğer, 'bzImage' adında bir çekirdeğiniz varsa ve onu saklamak istiyorsanız, onu '/boot/bzImage-2.4.6' adında kopyasını alabilir ve gerekli değişiklikleri (/boot/bzImage yerine /boot/bzImage-2.4.6 yazarak) /etc/lilo.conf yapılandırma dosyasında yapabilirsiniz. Çekirdeğin önemli değişken isimleri ile değerlerini içeren System.map dosyasını, derleme işlemi herzaman yeniden yaratmaktadır. 'depmod -a' komutu, çekirdek ile modüller arasındaki tüm ilişkiler olan, çekirdek modüllerinin tüm bağımlılıklarını ve '/etc/modules.conf' dosyasındaki bilgileri içeren bir dosya yaratmaktadır. SuSE dahil birçok Linux dağıtıcısı, 'depmod -a' komutunu sistemin açılışı sırasında çalıştırmaktadır. Ancak, /boot/System.map dosyasının herzaman için varolduğundan ve çekirdek sürümü ile uyumlu olduğundan emin olmak akkılıca bir hareket olur. 'lilo' komutu eski veya yeni çekirdeğin yapılandırmasını yüklemektedir. Üzerine yazdığınız bir '/boot/bzImage' dosyanız varsa ve 'lilo' komutunu çalıştırmazsanız, o zaman yeni bir çekirdeğiniz olmasına karşılık, bu çekirdek sisteminizi açamayacaktır. Linux dağıtımı ile birlikte gelen ve saklamış olduğunuz çekirdek çalışır durumdadır, çünkü onun üzerine hiçbir şey kopyalamadınız. Eski çekirdeği saklamakla, yeni çekirdekler derleme ve deneme işi daha az ağrılı hale gelecektir.
| |
|