Yaz� Hakk�nda

18 Mart 2001

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.

NOT2:A�ag�daki i�lemlere ba�lamadan �nce [email protected] adresine �ye olman�z� �iddetle tavsiye ederim.Handbook makeworld.html de bulunan ifadeyi aynen kopyal�yorum

Subscribe to the right mailing listThe -STABLE and -CURRENT FreeBSD code branches are, by their nature, in development. People that contribute to FreeBSD are human, and mistakes occasionally happen.

Sometimes these mistakes can be quite harmless, just causing your system to print a new diagnostic warning. Or the change may be catastrophic, and render your system unbootable or destroy your filesystems (or worse).

If problems like these occur, a ``heads up'' is posted to the appropriate mailing list, explaining the nature of the problem and which systems it affects. And an ``all clear'' announcement is posted when the problem has been solved.

If you try and track -STABLE or -CURRENT and do not read the or mailing lists then you are asking for trouble.

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
2)Gerekli sistem yedeklerini almak
3)Make.conf dosyas�n� d�zenlemek ve /etc/group ile oynamak
4)Tek kullan�c� moda girmek
5)make world (yada "make buildworld" + "make installworld" )
6)Yeni kernel'in derlenmesi (Sisteminizi stable yapmandan �nce /usr/src/sys/i386/conf/TOSBAGA *ya da ne ise* dosyas�n� bir diskete kopyalay�n !!!!)
7)/etc nin "mergemaster" ile g�ncellenmesi
8)/dev in guncellenmesi ve gerekli device'lar�n olu�turulmas�
9) /stand/sysinstall'un kurulmas�
10)Sistem A��lm�yor?Ne Yapmal�y�m?
11)Sistemin yenidebn ba�lat�lmas� (reboot yada fastboot)

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:
a) wget ftp.uk.freebsd.org/pub/FreBSD/CTM/src-4/src-4xxxxEmpty.gz
b) mkdir cd /usr/src
c)cd /usr/src
d)ctm -v -v /root/src4-4xxxxEmpty.gz 
Bundan sonra ctm sizin yerinize gerekli islemleri yapacakt�r.�imdi s�ra di�er deltalar� commit etmeye geldi.
e)cd /usr/src ( bu i�lem mutlaka yap�lmal� )
f) ctm -v -v /root/src4-4001.gz  yada   ctm -v -v /root/src*. CTM otamatik olarak hangi versiyonda kald���n� /usr/src/.ctm_status dosyas�ndan okuyacakt�r.Ve kald��� yerden devam edecektir.Ports treenizide yine ayn� �ekilde isterseniz g�ncelleyebilirsiniz.

Art�k elimizde en son source tree var.�imdi s�ra sonraki ad�mda...

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)

-------
# Bu dosya /etc/make.conf dosyas�d�r

CFLAGS         = -O -pipe
COPTFLAGS = -O -pipe   (Bu sadece kernel derlenirken kullan�l�r)
NOPROFILE =  true         (Bunu mutlaka make.conf'a ekleyin)
CFLAGS+=  ${BDECFLAGS} ;  (bu option hata verebilir.# isareti ile disable edebilirsiniz.Aslinda bunun amaci hata mesajlarinin verilmesidir. gcc -Wall ile butun hata mesajlari ekrana verilebilir.Garip gelecek ama ben karsilastigim problemin ustesinden bunu #'leyerek a�m��t�m.
CXXFLAGS+= -fmemoize-lookups -fsave-memoized
PERL_THREAD = true      (Perl'u thread deste�i ile derlemek i�in
NO_SENDMAIL = true   (Sistemlerinde Qmail kullanan sistem y�neticileri i�in. E�er sendmail kullan�yorsan�z bu sat�r� silin)   
 

Birde ek olarak �ahsen denemedi�im fakat a�a��daki opsiyonlarda kullan�labilir.Fakat tekrar ifade etmek isterim ben kullanmad�m.Use it at your own RISK

CFLAGS   =        -O -pipe -mcpu=pentium -march=pentium   (COPTFLAGS'e de eklenebilir)


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.
shutdown now    komutu ile single moda mutli modtayken ge�ebilrsiniz yada reboot komutunu kullan�n sonra sistem a��l�rken ENTER tu�una basmak yerine herhangi bir tu�a basarak gelen Kernel Configuration'da  " boot -s  "kullanarak tekli moda ge�ebilirsiniz.Nitekim e�er ilerki safhalarda make world ( = make buildworld + make installworld ) ba�ar�l� olmazsa sistemimizi kurtarmak i�in ikinci se�ene�i kullanaca��z.Nitekim ilk denemesinde make world'u sorunsuz yapmak pek olas� de�il :)

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.
Kernel derlemek i�in :
% cd /usr/src/sys/i386/conf
%config -r TOSBAGA    {yada GENERIC }
%cd /usr/src/sys/compile/TOSBAGA
%make depend
%make
%make install
komutlar� kullan�l�r.��te kernel derlendi ve /kernel ' a kopyaland�.Modullerde /modules dizinine kopyaland�.

/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 :
%cd /usr/src
%mergemaster -cv
Mergemaster size interactive olarak de�i�ilikleri g�sterip size ne yapmas� gerekti�ini ��klar halinde g�sterecektir.

/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:
% cd /dev
% ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /root/dev_release.out
�imdide devicelar�m�z� yeniden olu�tural�m:
% sh MAKEDEV all
Daha sonra tekrar devicelar�m�z�n listesini bir dosyaya aktaral�m:
% ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /root/dev_stable.out ve iki dosyay� kar��la�t�ral�m:

%diff /root/dev_release.out /root/dev_stable.out
B�ylece olmayan device'lar tekrar yarat�labilir:
% sh MAKEDEV snd
gibi.

Burada �nemli olan birka� husus var.Mesela stable sistemde mutlaka scsi diskin  ya da ide diskin device filelar� olmal� yoksa sistem a��lmaz.Zaten diff komutu size nelerin kurulmas� gereti�i hususunda gerekli bilgiyi  verecektir.

/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
%cd /usr/src/release/sysinstall
%make all install
komutlar� kullan�l�r.

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.
Burada 
> boot -s  komutunu girin ( > i�areti sizin kernel configuratorda oldu�unuzu g�sterir.)
Sistem single modta a��laca�t�r.Fakat slice'lar read-only mount edilmi� olacakt�r.Yani gerekli de�i�iklikleri yapam�yacaks�n�z.Bunun �stesinden gelmek i�in shell'de iken
% mount -a -t ufs
komutunu yaz�n.Art�k ufs slicelar read only olacakt�r. /etc.bak dizininden yada /usr/src/etc dizininden istedi�iniz dosyay� kopyalay�n ve sistemi tekrar ba�lat�n...

Hepsi bu kadar.Umar�m yararl� olmu�tur.Bu d�kuman hakk�nda geri don�mlerinizi [email protected] adresine bekliyorum.

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 [email protected] adresine  mail atip gerekli izini alma zorunlulu�u vard�r

D�kuman� yazan: �mer Faruk �en ( [email protected], [email protected] )