![]() |
|
||
|
||
| Bu yazı FreeBSD'de "make world"ün
nasıl yapılacağını anlatmaktadır.OpenBSD için simdilik "make
world"ün nasıl ypılacağını anlatmıyacağım.Make world
Linux'teki kernel derlemeye benzer.Fakat bilindiği üzere *BSD (BSDi değil)ler
Linux gibi sadece bir kerneldan ibaret değildir.*BSd'leri geliştiren şahıslar
core sistem olarak kernel ve sistem için gerekli diğer yazılımları
isletim sistemine dahil etmişlerdir.Örnek vermek gerekirse FreeBSD core
olarak sendmail'i içeririr.Bunun yanında /bin ve /sbin dizini altındakilerde
FreeBSD core işlerim sistemi ile beraber gelir.Düşünün sisteminiz çok
eskidi.FreeBSD 4.0'a sahipsiniz ama serverınızın kararlığına güvenmiyorsunuz.İşte
bu durumda Linux'teki gibi sadece kernel'ı update etmek yerine FreeBSD
'nin source tree'sini kendi sisteminize dahil indirmeniz gerekmektedir. Not: Bu yazının her hakkı EnderUnix yazılım geliştirme grubuna
aittir.Yazar ( Ömer Faruk Şen) bu dökumanın sisteminize vereceği hiçbir
zararı kabul etmez.Yazı yazılırken FreeBSD'nin handbook'undan yararlanılmıştır.Yazar
kendisi "make world" yapmıştır ve karşılaştığı özel
sorunları burada zikredecektir.Bu dökumanın ana adresi http://www.EnderUnix.org
adresidir.Yazıda sisteminizin bu tarih itibarı ile (18.03.2001
) olan 4,3 Beta olan sürümünün kurulumu anlatılacaktır.
|
||
| Make World'ün Yapılması | ||
| Aslında FreeBSD'nin Linux'e göre birçok üstünlüğü
var.Nitekim make world!te bunlardan biri.Make World sayesinde sisteminize
birkere herhagi bir FreeBSD sürümünü kurarak sisteminizi stable
yapabilirsiniz.Hatta biraz ileri gidersek sisteminizin multi user
mode'tayken bile sistemniniz otamatik olarak güncelleyebilirsiniz. Simdi adım adım yapacaklarımızı sıralıyalım: 1)Source Tree'yi Güncellemek |
||
| Source Tree'nin Güncellenmesi | ||
| Bu kısım en kolay kısımlardan biri aslında
bu sizin bağlantı hızınıza göre değişiyor.Çünkü /usr/src nin
toplam büyüklüğü FreeBSD 4.2 Release itibarı ile 251mb kadar.Biraz
buyuk değilmi ama işin kolayı var.Elinizdeki herhangi bir FreeBSD
Release CD'sinden /stand/sysinstall ile sistem sourcelarını o release
itibarı ile kurun. Daha sonra cvsup programı ile (Bu programa KABACA cvs sisteminin kullanım kolaylığı olsun diye biraz değiştirilmiş bir versiyonudur denebilir).Bu program için bir konfigurasyon dosyasına ihtiyacımız var.Fakat merak etmeyin FreeBSD ekibindekiler bizler için bunuda düşünmüşler ve gerekli konfigurasyon dosyasını /usr/share/examples/cvsup dizini altına koymuşlar.Bu dosyalardan bizim durumumuzda ihtiyaç duyduğumuz stable-supfile olacaktir.Bu dosyada yapmamız gereken sadece bir değişikliklik var.Oda size en yakın olan cvsup serverı seçmek.Burada birkaç cvsup server'ın adresini vereyim. a)cvsup.freebsd.org b)cvsup2.freebsd.org ( 3 4 5 6 numaralı servarlarda var) c) Benim kullandığım cvsup.uk.freebsd.org yada diğerleri.Ayrıntılı mirror listesi için http://www.freebsd.org/handbook/mirors.html adresine yada http://freebsd.enderunix.org/handbook/mirrors.html adresinden bakailirsiniz. Sadece server satırını değiştirdikten sonra yapmanız gereken tekşey cd /usr/src cvsup -g -L 2 /usr/share/examples/cvsup/stable-supfile dir.Bundan sonra yapmanız gereken sadece beklemek.Gerekli dosyalar ya GÜNCELLENİR yada olmayan dosyalar OLUŞTURULUR. Bir diğer yol ise CTM'dir. CTM benim evde source treemi güncellemek için
kullandığım bir yöntemdir.CTM= Current Thru Mail yada CVSUP Thru Mail
demektir. Manuel sayfasına bakarasanız her iki ifadeyide görebilrsiniz:CTM'in
mantığı şudur: Günlük yapılan değişiklikler freebsd ftp mirrorlarından
herhangi birinde /pub/FreeBSD/CTM/src-4 dizini altında gerekli değişikliklerin
günlük olarak eklendiğini görebilirsiniz.Buradaki herbir dosyaya DELTA
adı verilir.Ve herbiri ortalama 5-10 kb civarıdır.CTM kullanmak sanırım
bütün dial-upçıların işine gelecektir.CTM kullanmak için ilk başta
bir start Delta'ya ihtiyacımız vardır.Bu başlangıç deltalarında
yine o kadar büyük değildir.Yaklaşık 65 mb büyüklüğünde olan ve
her 100 deltada bir yayınlalan deltalardan birini ÖR: src-4000Empty.gz
indirmeniz gerekmektedir.250 mb'a göre yinede çok büyük birşey değil.Üstelik
deltaları saklayabilirsinizde.Sırarısyla yapılacak seyler: |
||
| Gerekli Sistem Dosylarının Yedeklerini almak | ||
| Mutlaka bu işlemi yapın.make world işlermi
aslında /etc dizininize dokunmaz.Ama sisteminiz yenilendiği için /etc
dizini ile /usr/src/etc dizini altındaki değişiklikler birleştirilmelidir.Aslında
bunu daha sonra anlatacağım ama bu iki dizindeki dosya farklılıklarını
birleştirmek için bir perl scripti olan mergemaster kullanılacaktır. cp -pR /etc /etc.bak olarak /etc dizininin yedeğini alın.Make world'ün değişiklik yapmadığı bir dizinler ise /var /tmp /usr/local dizinleridir.İşte bu yüzdendirki Dan Bernstein qmail'i /var/qmail altına kurulmasını istemiştir.Ek olarak make world /usr/local e dokunulmadığı için sisteminize kurduğunuz özel yazılımlara dokunulmyacaktır.Aslında Linux kullanırken bile /usr/local'in değerini ve manasını tam anlamamşımdır.Ama FreeBSD tam bir Unix olduğu için FHS ye tam olarak uymaktadır. |
||
| Make.conf ve /etc/group dosyaları ile oynamak | ||
| Evet yavaş yavaş make world işlemini yapmaya
doğru gidiyoruz.Ama önce /etc/group dosyası ile oynamamız
gerekmektedir.make world işlemi sisteminizde bazı groupların olduğunu
varsaymaktadir.Ve binaryler bu grouplaraıgöre kurulur.Bu problemle başa
çıkmak iin /usr/src/etc/group dosyasında olupta /etc/group dosyasında
olmayan group'lar varsa /usr/src/etc/group dosyasındaki gerekli groupları
(eğer /etc/group dosyasında yok iseler) /etc/group altına kopyalayın.Ornek
vermek gerekirse eskiden ppp olarak adlandırılan (daha sonra network
olarak değiştirilmiştir) group bazı versiyonlarda yoktu.Ve bunu değişikliği
mutlaka /etc/group altına eklemeliydiniz.Benzer bir şekilde /etc/group
altında olupta /usr/src/etc/group'a görefarklı bir GID a sahip olan
groupların gidları /usr/src/etc/group baz alınarak değiştirilmiştir.Dikkat
ederseniz /etc/group'taki sys adminlerin sonradane eklediği grouplardan
bahsetmiyorum.Onlar zaten 1000+ gid'a sahip olduğu için oynamaya gerek
yok... Birde sizlere ek olarak daha derinlere inmek isterseniz /usr/src/UPDATING dosyasını okumanızı tavsiye ederim.Aslında okumanada olur.Çünkü burada ben gerekli şeyleri aklıma geldikçce bir düzen içinde anlatacağım. Sisteminiz için özelleştirilmesi gereken diğer bir dosya ise /etc/make.conf'tur.Bu dosya ile oynayaraj sisteminize tam olarak uygun optimize edilmiş binary'leri ve/veya kernal'i elde edebilirsiniz.Buradaki yapılan eklemeler make in gerekli opsiyonlarına eklenecektir.Burada oynama yaparken CFLAGS'lere sakın -O2 opsiyonunu eklemeyin.Eklenmesi gereken opsiyon -O olmalıdır.Daha fazla bilgi isterseniz /etc/defaults/make.conf'a bakmanızı öneririm.Eğer hızlı bir şeklilde make world yapmak isterseniz sisteminiz için örnek bir make.conf dosyasını( bu dosyayı /etc/defaults/make.conf'u okuyarak oluşturdum) -------
|
||
| Tek Kullanıcılı Moda Geçiş | ||
|
NOT:Aslinda illaki tekli moda girmeniz gerekmiyor. Nitekim tecrube kazandiktan sonra bu isi uzaktaki makinaniza ssh ile baglanarak cok rahat yapabilirsiniz. |
||
| Make World | ||
| Evet artık sistem binarylerimizi derleme zamanımız
geldi.Şimdi make world komutunu verebiliriz.Ama benim sizlere tavsiyem
make buildworld ile önce sistem binarylerini derleyip daha sonra make
installworld ile derlenenen sistem dosyalarınızı sisteminize kurmak
olacaktır.Ayrıca % script /root/mbw.out ile derleme sırasında yapılan herşeyi mbw.out dosyasında kaydedebilirsiniz.Eğer sisteminizin kac saatte dosyları derlediğini öğrenmek isterseniz % time make buildworld komutuda kullanılabilir.Benim sistemimde (celeron 300a + 64mb ram) bu işlem yaklaşık 2,5 saat aldı.Birde eğer istenirse % make -j4 make buildworld komutunu kullanarak aynı anda make komutunun 4 farklı iş yapmasını sağlayabilirsiniz ama size tavsiyem bu opsiyonu kullanmayın..Eğer sisteminiz derleme sırasında çok değişik .c dosylarının derlenmesinde hata verirse bunun sebebi -j4 'tür. Birde eğer -j4 buildworld derseniz installworld derkende -j4 'ü kullanmalısınız yani: % make -j4 installworld Böylece sistem binarylerimiz stable oldu.Bunlara ek olarak bind gibi yazılımlarda stable duruma geldi.Bu aşamada sakın sisteminizi kapatmayın.(reboot vb.)Mutlaka yapılan her make world'ten sonra source tree'den yeni kernel derlenip stable sistem bu kernel ile açılmalıdır.!!!!!!
|
||
| Kernel'ın Derlenmesi | ||
| Yapılan her make worldten sonra mutlaka o
stable branch'e uygun bir kernel derlenilmesi gerekir.Neden? Daha önceden
de söylediğim gibi FreeBSD sadece kernel'dan oluşmaz.Sistem
binarylerini de içerir.Nitekim source tree (/usr/src) yi inceleyen herkes
bunun farkına çok rahat varabilir.İşte bu aşamada kernel nasıl
derleyeceğiz o anlatılacaktır.En üst kısımda Release kernelininizin
konfigurasyon dosyasını mutlaka bir diskete kopyalayın ibaresi vardı.İşte
burada onu kullanacağız.Kernel hataları ile make world'ten sonra uğraşmak
güç olabilir.Böylece karşılaşılacak hatalar minimuma indirilmiş
olur.En azından bu aşamada çalışır bir kernel derleyip sistem tam
manasıyla stable olduktan sonra kernel'da gerekli değişiklikler yapılabilir.Eğer
istenirse stable source tree'nin GENERIC kernel'ıda bu aşamada kulanılabilir. |
||
| /etc Dizininin Güncellenmesi | ||
| Make world /etc dizinine dokunmaz.Ama stable
sistemin /etc si her zaman release den değişik olmaktadır.Bunu cvsup
yada ctm yaparkende gözleyebilirsiniz./etc dizini altındaki dosyalar değiştirilebilir
yada /etc altında yeni dosyalar oluşturulabilir.Bu değişiklikler
normalde elle de yapılabilir diff komutunu kullanarak gerekli değişiklikler
/etc dizini altındaki dosyalara uygulanabilir.Bunun zorluğu göz önune
alınarak "mergemaster" scripti yazılmıştır.Yapılacaklar
: |
||
| /dev Dizinin Güncellenmesi | ||
| Make world ve /etc dizini halledildikten sonra
sırada /dev dizinini upgrade etmek var.Eğer sisteminizde devfs kullanıyorsanız
bu kısmı rahatlıkla geçebilirsiniz.İlk başta release'imizin /dev
dizini ile /usr/src/dev ini karşılaştırmak gerekir.Eğer mergemaster'ı
kullanmışsanız /dev/MAKEDEV dosyası source treeden /dev dizinine
kopyalanmıştır.Ama eğer paranoyak biri iseniz direk ellede
kopyalayabilirseniz.Yeni device'lar yaratılmadan önce bu device'ların
bir listesini alalım: |
||
| /stand/sysinstall Programının Güncellenmesi | ||
| Aslında bu programı güncellemek gerekli değil.İyi
bir sistem yöneticisi sysinstall'a ihtiyaç duymadan her türlü işini
gerçekleştirebilir.Kısacası kendi tabirimle " "BIGADMIN
/stand/sysinstall nedir bilmez.VI'dan şaşmaz" :) /stand/sysinstall
güncellenmesi için |
||
| Sistemin Yeniden Başlatılması | ||
| Artık herşey tamam.Sisteminizi tekrar başlatmalısınız.Bunun
için reboot yada fastboot komutlarından birini kullanabilirsiniz.Sistem
yeniden açılrken problemle karşışırsanız sonraki bölümü
okuyun..... |
||
| Sistem açılmıyor?Ne yapmalıyım? | ||
| Paniğe hiç gerek yok.Eğer buraya kadar
gelmişseniz ve bir sorunla karşılaşmasaydınız yaptığınız tek
hata mergemaster ile olacaktır.Daha açık bir ifade ile /etc altındaki
dosyalar tam manasıyla güncellenmemiştir.Mesela /dev/ttyv0,,,7 yok gibi
bir hata ile karşılaşırsanız muhtemelen /etc/gettytab dosyasını
manuel olarak /etc altına koyalamalısınız.Yada verilen hatalara göre
gerekli dosyayı kopyalamalısınız.Fakat burada bir sorun oluşacaktır.Eğer
sistem açılırken hata ile karşılaşırsaniz sisten bütün slice'ları
read-ony mount edecektir.İşte bu durumda daha önce zikrettiğim şekilde
sistemi single mode'ta açmanız gerekmektedir.Sistemi CTRL+ALT+DELETE ile
yeniden başlatın 10 saniye beklemeden ENTER tuşu haricinde herhangi bir
tuşa basın.Böylece kernel configurator'a girmiş olursunuz. |
||
| Bu dökumanın ana adresi http://EnderUnix.org
'tur.Bu dökumanın tüm hakları Enderunix Yazılım Geliştirme Grubuna
aittir.Dökuman üzerinde yapmak istediğiniz işlemler (sitenizde yayınlama,basılı
herhangş bir yerde kullanma vb.) için roots@enderunix.org
adresine mail atip gerekli izini alma zorunluluğu vardır Dökumanı yazan: Ömer Faruk Şen ( ofsen@enderunix.org, omer@faruk.net ) |
||