Türkçe Gentoo Linux/AMD64 Elkitabı

Daniel Robbins  Chief Architect
Sven Vermeulen  Author
Chris Houser  Author
Jerry Alexandratos  Author
Seemant Kulleen  Gentoo x86 Developer
Tavis Ormandy  Gentoo Alpha Developer
Aron Griffis  Gentoo Alpha Developer
Brad House  Gentoo AMD64 Developer
Guy Martin  Gentoo HPPA developer
Pieter Van den Abeele  Gentoo PPC developer
Joe Kallar  Gentoo SPARC developer
John P. Davis  Editor
Pierre-Henri Jondot Editor
Eric Stockbridge  Editor
Rajiv Manglani  Editor
Jungmin Seo  Editor
Stoyan Zhekov  Editor
Jared Hudson  Editor
Colin Morey  Editor
Jorge Paulo  Editor
Carl Anderson  Editor
Jon Portnoy  Editor
Zack Gilburd  Editor
Jack Morgan  Editor
Benny Chuang  Editor
Erwin  Editor
Joshua Kinard  Editor
Grant Goodyear  Reviewer
Gerald J. Normandin Jr.  Reviewer
Donnie Berkholz  Reviewer
Ken Nowack  Reviewer
Lars Weiler  Contributor
Erkan Kaplan (Çevirmen)  Contributor
Mahmut Olcay Çelik (Çevirmen) Contributor
Adem Alp Yıldız (Kontrol) Contributor
Huseyin Kaya (Çevirmen) Contributor
Aytaç Kırmızı (Çevirmen) Contributor
Bulut Emektar (Çevirmen) Contributor
Mesut Öztürk (Çevirmen) Contributor
Bahadır Kandemir (Çevirmen) Contributor

25 Nisan 2004 tarihinde güncellenmiş
Belgenin orijinal hali en son 16 Kasım 2009 tarihinde güncellenmiş

İçerik:

A. Gentoo Kurulumu

1. Gentoo Linux Kurulumu Hakkında

1.a. Başlangıç

Hoş geldiniz!

Her şeyden önce, Gentoo dünyasına hoş geldiniz. Seçim ve performansın dünyasına girmek üzeresiniz. Gentoo tamamiyle bir seçimler dünyasıdır. Kaç kez derleme yapmak isteyeceğiniz, Gentoo sisteminizi nasıl yükleyeceğiniz, hangi sistem kayıtçısını kullanmak isteyeceğiniz ve bunun gibi daha bir çoğunu Gentoo Linux'sunuzu yüklediğiniz zaman anlaşılır hale gelecek.

Gentoo hızlı, temiz, esnek ve modern tasarıma sahip bir dağıtımdır. Gentoo serbest yazılım çerçevesinde yapıldı ve sistemin temelini kullanıcılarından saklamaz. Portage, Python ile yazılmış, Gentoo'nun kullandığı bir paket bakım/koruma ve edinme sistemidir. Bu sistemle paketleri kolayca görebilir ve değişiklik yapabilirsiniz. Gentoo'nun paketleme sistemi kaynak kodunu kullanır (ayrıca yeniden derlenmiş paketleride destekler) ve Gentoo olaylarını düzenli metin dosyalarıyla yapılandırır. Diğer bir değişle, her yerde açık sözlüdür.

Gentoo'yu çalışır yapan seçimleri anlamış olmanız çok önemli. Size sevmediğiniz herhangi bir şey için baskı yapmak istemiyoruz. Eğer öyle yaptığımızı düşünüyorsanız, lütfen hata raporu olarak bize iletin.

Kurulum Yapısı Nasıldır?

Gentoo kurulum prosedürü 2-11 bölümleri arasında yer alan 10 adım olarak görülebilir. Her adımın sonucu aşağıdaki gibidir:

Bir karar verdiğinizde, size tüm işlemleri elimizden geldiğince iyi açıklamaya çalışacağız. Daha sonra "Varsayılan:" olarak isimlendirdiğimiz öntanımlı seçimden devam edeceğiz. Diğer olasılıkları "Alternatif:" olarak isimlendirdik. 'Varsayılan' olanları bizim önerimiz olarak düşünmeyin. Onlar çoğu kullanıcının kullanacağını düşündüğümüz şeyler.

Bazen isteğe bağlı bir adım kullanabilirsiniz. Bunlar Gentoo kurulumu için mutlaka gereken işlemler değil. Bunları "Seçmeli" olarak isimlendirdik. Aynı zamanda bazı isteğe bağlı işlemler bir önceki karara bağlı olabilir. Böyle bir karar yürüttüğünüzde size isteğe bağlı seçimi anlatmadan bu durum hakkında açıklama yapacağız.

Seçeneklerim Neler?

Gentoo'yu bir kaç değişik yolla kurabilirsiniz. Bizim LiveCD'lerimizden (kurulum CD'leri) bir tane indirip kuruluma LiveCD üzerinden başlayabilirsiniz. Kurulu bir sisteminiz var ise, başlatılabilir bir CD ile (Knoppix gibi), internetten başlatılmış bir ortamla, bir kurtarma disketiyle vs. değişik yöntemler ile kurulumu gerçekleştirebilirsiniz. Bu döküman bizim LiveCD'mizle kurulumu anlatıyor. Diğer kurulum yollarıyla ilgili yardım için lütfenAlternatif Kurulum Rehberibelgemizi okuyunuz.

Ayrıca bir kaç ihtimalinizde var: rastgele sisteminizi derleyebilir ya da hazırlanmış paketleri kurarak Gentoo ortamınızı fazla beklemeden çalıştırabilirsiniz, ve tabiki hazır bir sistem için herşeyi derlemek yerine ortalama çözümlerde kullanabilirsiniz.

Hatalar?

Eğer bu kurulumda (ya da bu kurulum dökümanında) bir hata bulursanız, lütfen yazım hatasını Gentoo Release Engineering Project projesinden kontrol edin, bugtracking system sistemini ziyaret edin ve bu hatanın farkedilip farkedilmediğini kontrol edin. Eğer farkedilmediyse, lütfen bir hata raporu oluşturun ki bunun çaresine bakalım. Hata raporlarınızı geliştiricilere iletmekten korkmayın, onlar genelde insan yemezler :-)

Şunu unutmayın, şu an okuduğunuz bu döküman mimari-değişkendir, yani diğer mimarilerede rehberlik yapar. Bu nedenle beklendiği gibi Gentoo El Kitabının geniş kısımları kaynak kodu kullanımına değiniyor. Bunu olabildiğince karışıklığı küçük tutmaya çalıştık.

Eğer bir problemin kullanıcı veya yazılım problemi olduğundan emin değilseniz , irc.freenode.org üzerindeki #gentoo kanalına gelmekten çekinmeyin, tabiki diğer zamanlarda gelmektende özgürsünüz :-)

Eğer Gentoo'ya dair bir sorunuz varsa, Gentoo Dökümantasyonundan Sıkça Sorulan Sorular (Frequently Asked Questions)bölümünü kontrol edebilirsiniz. Ayrıca bunlarıforumumuzdanda görebilirsiniz. Eğer yanıtı bulamazsanız irc.freenode.org üzerindeki #gentoo kanalında sorabilirsiniz. Evet, bazılarımız IRC'de bulunabilecek kadar kaçığız :-)

1.b. Hazır paket yoksaa hepsini derlemek mi?

Gentoo Kaynak Platformu Nedir?

Gentoo Kaynak Platformu, bundan sonra GRP'ye kısaltarak bahsedeceğiz. Bu hazır paket kullanan kullanıcılarının (bu siz oluyorsunuz) yükleme işlemlerini hızlandırmaya yarayan bir görüntüdür. GRP tam anlamıyla fonksiyonel bir Gentoo kurulumu için gerekli tüm paketlere bağlıdır. Bunlar yalnızca yeterli temel kurulumu hızlandırmak içindir, fakat büyük yapılar için (örn: KDE, XFree, GNOME, OpenOffice, Mozilla, ... gibi) GRP paketleride mevcut durumdadır.

Diğer yandan, bu hazır paketler Gentoo dağıtımında hayati bir temel teşkil etmez. Bunlar sadece her Gentoo sürümüyle gelen görüntü sürümleridir ve kısa sürede fonksiyonel ortam sahibi olmanızı sağlar. Siz Gentoo ortamınızda çalışırken arkaplanda sisteminizi güncelleyebilirsiniz.

Portage GRP Paketlerini Nasıl Hallediyor?

'Portage tree' ( yani ebuilds kolleksiyonu; paketler hakkında açıklama, anasayfa, kaynak kodu adresi, derleme açıklamaları, bağımlılıklar, vs. gibi bilgileri barındıran dosyalar) - GRP setiyle senkronize olmalıdır: mevcut yapıların versiyonları ve eşlik eden GRP paketleri uyuşmalıdır.

Bu nedenle GRP kurulum yöntemini kullanmak istiyorsanız, en son mevcut Portage şemasını yüklemeniz gerekir.

GRP Mevcut mu?

Tüm mimariler GRP paketlerini karşılamaz. Bu GRP'nin başka bir mimariyi desteklemediği anlamına gelmiyor, fakat bu GRP paketlerini hazırlamak ve test etmek için kaynağımız olmadığı anlamına geliyor.

Şu anda aşağıdaki GRP paketlerini karşılayabiliyoruz:

Gentoo Hardenedprojesi kendi GRP paketlerini (ve evrelerini) tam olarak güvenli bir sistem üzerine yoğunlaşmış olarak önerir. Herhangi biri x86 mimarisinde bir sunucu kurmak istiyorsa bu seçenek üzerinde araştırma yapmalı.

Eğer sahip olduğunuz mimari (ya da alt mimari) bu listede yoksa, GRP kurulumu yapamazsınız.

Başlangıç burda bitiyor, şimdi En Doğru Kurulum Yöntemini Seçmekile devam edelim. .

2. Endoğru Kurulum Ortamını Seçmek

2.a. Donanım Gereksinimi

Başlangıç

İşe koyulmadan önce, kurulum için gereken/desteklenen donanıma sahip olup olmadığınızı inceleyelim.

AMD64 Mimarisi

Kuruluma başlamadan önce aşağıdaki şartları yerine getirdiğinizden emin olunuz:

2.b. Seçiminizi Yapın

Başlangıç

Gentoo yu kurup denemekte hala kararlı mısınız? Kararlıysanız kurulum medyanızı seçin. Hangi yöntemi seçerseniz seçin. Birbirinden farklı kurulum yolları, ama netice aynı olan seçim imkanınız var: Oda Gentoo temel sistemidir. .

Şimdi size kurulum medyalarını tanıtalım:

Her ikisinin de avantaj ve dezavantajı vardır. Size sayfanın akışında bunu izah edeceğiz. Ama ilk önce size 3 aşamada nasıl yüklendiğini anlatalım.

3 Aşama (Stage)

Gentoo Linux 3 aşama (Stage) herhangi birisi ile yüklenebilir. Seçiminiz sizin Sisteme ne kadar derleme yapacağınıza bağlıdır. Aşama 1 bootstrap yapıp Sistem'i en baştan kurmak için kullanılır. Aşama 2 Aşama2 tüm Sistem'i hazır "yarı derlenmiş" tabandan kurmak için kullanılır. Aşama 3 ise Gentoo temel sistem sizin için derlenmiş ve yapılmıştır. Size sonra hiç bir şey derlemeden Gentoo yu nasıl yükleyeceğinize değineceğiz (Kernel ve seçimlik paketler hariç). Eğer bu şekilde kurmak isterseniz size Aşama3 (stage3) arşivi gerekir.

Şimdi hangi aşamayı seçmeye karar verdiniz?

Aşama 1'den başlamak ileride size seçimlik sistem ayarlarında tam kontrol sahibi olmanızı sağlar. Aşama 1 ecrübeli ve ne yaptığını bilen kullanıcılar içindir. Gentoo'nun içyapısını bilmek isteyen kişiler için muhteşem bir Gentoo kurulum şeklidir.

Aşama 1 sadece internet bağlantısi iiel beraber yapılabilir.

Aşama 1 Avantaj ve Dezavantajları
+ Sistem üzerinde yapılacak tüm seçim ve ayarlarda, özel çalışmalarda ve sisteminize en baştan aktif edilecek olan her şeyde kontrol imkanına sahibisiniz.
+ Ne yaptığını bilen kullanıcılar için tavisye edilen bir yöntemdir.
+ Gentoo'nun iç yapısını öğrenmenizi sağlar.
- Kurulumu uzun sürer
- Eğer standart ayarları değiştirmek gibi bir niyetiniz yoksa zaman öldürmekten etmekten başka bir şey olmaz.
- İnterneti olmayan kullanıcılar için kurulumu zordur.

Aşama 2 kurulumunda Bootstrap işlemini geçebiliriz. Bu imkan bizler tarafından seçilen seçimlik ayarları ile memnunsanız iyidir.

Aşama 2 kurulumu sadece internet bağlantınız varsa kurulum yapabilirsiniz.

Aşama 2 Avantaj ve Dezavantajları
+ Bootstrap yapmak zorunda değilsiniz
+ Başlaması aşama1'den hızlıdır
+ Kendi ayarlarınızı genede seçebilirsiniz
- Aşama1 de olduğu gibi özelleştirilemez
- Gentoo kurmanın en hızlı yolu değildir
- Bootstrap için seçtiğimiz seçenekleri kabul etmek zorundasınız
- İnternetsiz kurulum yapılmaz

Aşama 3 arşivi en hızlı Gentoo kurma yöntemidir. Ama buda demektir ki, Base System'iniz standart ayarlara sahiptir (gerçekçi olmak gerekirse, bunlar sağlamlık ve hız konusunda iyi balans sağlayan ayarlardır). Aşama3 hazır derlenmiş paketleri kullanabilmek için gerekmektedir.

Aşama 3 Avantaj ve Dezavantajları
+ 'Gentoo Base System' elde edebilmenin en hızlı yöntemidir
+ İnternetsizde kurulabilir.
- Temek sistemi kendiniz ayarlayamazsınız (öntanımlı olarak ayarlanmıştır)
- Arkadaşlarınıza Aşama1 veya Aşama2 kurdum diye hava atamazsınız :-)

Şimdi hanagi aşama ile kurulum yapacağınaza karar verin ve bunu aklınızda tutun. Çünkü LiveCD veya başka birkurulum medyasını seçip kuruluma başladığınızda bu aşama seçimlerinine ihtiyacınız olacak.

Şimdi kurulum medyalarına bir göz atalım.

Gentoo LiveCD'leri

Gentoo LiveCD'leri Gentoo ortamını barındıran ve yüklenme(bootable) özelliği olan CD'lerdir. Size doğrudan CD'den boot etme imkanı sağlar. Yükleme (boot) esnasında donanımımız otomatik olarak tanınır ve sürücüleri yüklenir. Gentoo geliştiricileri tarafından desteklenir ve yönetilir.

Tüm LiveCD'ler sistemi yükleme (boot) etmekle beraber, ağ ayarları, sabit disk bölümlemeyi ve bölümlenen Partitionları biçimlendirmeyi ve İnternetten Gentoo kurmayı mümkün kılar. Ayrıca bazı LiveCD'lerde kaynak kod arşivi vardır. Bununla internetsiz Gentoo kurulumu yapmak mümkündür.

Evet, şimdi LiveCD hakkında ne düşünüyorsunuz?

Gentoo'nun Minimal LiveCD'leri

Bu ufak bir, yüklenebilir (bootable) CD'dir. Lüzumsuz fazla bir şey bulunmaz. Bunun tek mantığı, Linux Sistemini çalıştırmak, ağı ayarlamak ve Gentoo kurulumunda destek olmaktır. Bu LiveCD'de Aşama arşivi (bazı durumlarda sadece Aşama1 arşivi bulunur) yada kaynak kod yoktur. LiveCD'nin universal alt dizininde yer alır ve install-amd64-minimal-2004.1.iso diye tanımlanır.

Minimal LiveCD Avantaj ve Dezavantajları
+ En az Download
+ Bütün mimariler için uygundur
+ İstediğiniz aşamayı yükleyebilirsiniz; ( Aşama1, Aşama2, Aşama3) Yapmanız gereken, kurulum yapmak istediğiniz arşivi İnternetten çekmek.
- Aşama arşivi, Portage Snapshot, GRP Paketleri, bulundurmadığı için ağsız kurulum için uygun değildir.

Gentoo Universal LiveCD'si

Gentoo Universal LiveCD yüklenebilir (bootable) CD'dir. Ağ bağlantısı olmadan Gentoo kurmaya uygundur. İçinde Aşama1 ve türlü Aşama3 arşivleri (o anki altyapı mimarisine ayarlanmış) bulunur. Bazı mimariler Aşama2 arşivi ve GRP Paketlerini ilk CD de sunar. Örneğin: Bu CD'nin x86 türevinin adı install-amd64-universal-2004.1.iso dur ve releases/amd64/2004.1/livecd alt dizininde bulunur.

Yansı adreslerimize bakarsanız bazıGentoo Paket CD'lerinin de olduğunu görürsünüz.Bu CD (bootlu değil) sadece hazır derlenmiş Paketleri içerir, başarılı Kurulumdan sonra temel sistemi yüklemek için kullanılır. Gentoo yu kurmak için tek Universal LiveCD yeterlidir, eğer Siz OpenOffice.org, Mozilla, KDE, GNOME vs. derlemeden yüklemek isterseniz paket CD'ye ihtiyaç duyulur. Örneğin:packages-amd64-2004.1.isodur ve ona göre alt mimarisinin dizininde bulunur. Paket CD ile birlikte Universal LiveCD

Paket Cd'lerini sadece Aşama 3 veya GRP kurulum yapmak istediğinizde gereklidir.

Paket CD ile birlikte Universal LiveCD Avantaj ve Dezavantajları
+ Paket CD mimarisi ve alt mimarisi için ayarlanmıştır
+ Paket CD derlenmiş paketler ile hızlı Gentoo kurulumunu sunar
+ Gerekli herşey mevcuttur. Hatta Ağ bağlantısı olmadan kurulum yapılabilir
- Büyük dosya (download) içerir

2.c. İndirmek, Cd Yazmak ve Gentoo LiveCd'sini Yüklemek

İndirme ve LiveCD Yazdırma

Demek ki Gentoo LiveCD kullanmaya karar verdiniz. İlk olarak LiveCD yi indirip CD'ye yazacağız. LiveCD'leri hakkında yeteri kadar açıklama yaptık. Sanırız şimdi sizi en çok nereden temin edebileceğiniz sorusu meşgul ediyordur?

Siz her LiveCD yi (ve PackegesCD'leri isterseniz) Yansılar indirebilirsiniz ( releases/amd64/2004.1/livecd dizinine gidiniz)

İndirilen dosyanın sağlan oluduğunu md5sums kontrolu yaparak kontrol edebilrisiniz. (Örn: install-x86-minimal-2004.1.iso.md5) . Linux/unix altında md5sum programı ile , Windows altında isemd5summer programı ile kontrol edebilirsiniz.

İndirilen ISO dosyalarını CD'ye yazdırmak için RAW modusu seçmeniz gereklidir. bunların nasıl olabileceği ise kullanılan programa bağlıdır. Şimdi kullanılabilecek bazı programlar altında kısaca açıklayalım:

AMD64 LiveCD Yüklemek(boot)

İlk olarak bundan sonra gelen tüm bölümleri okuyun, ileride işlem esnasında da yeteri kadar zamanınız olmayabilir.

CD leri yazdıysanız sıra yükleme(boot) zamanıdır. CD aygıtınızdan CD varsa çıkartın. Sistemi yeniden başlatın ve Bios'a girin. Normal olarak DEL, F1 yada ESC, tuşları ile Bios'a girebilirsiniz. Şimdi boot sırasında en başa CD aygıtınızı seçin. Eğer bunu yapmazsanız Sisteminiz tekrar sabit diskten yüklenir(boot).

Kernel seçimi? Evet, biz LiveCD lerde başka Kernel seçimini de sunuyoruz. Standart kernelgentoo olarak isimlendirilen kerneldir. Diğer kerneller ise smp (multi-cpu sistemler destekler) ve -nofb türü framebuffer i etkisiz kılar.

Aşağıdaki listeden sunulan kernelleri bir gözden geçirebilirsiniz:

Kernel Açıklaması
gentoo Öntanımlı kernel ve framebuffer destekli
smp Multi-cpu sistem destekli Kernel
gentoo-nofb gentoo gibi, fakat framebuffer desteklemez
smp-nofb smp gibi, fakat framebuffer desteksiz
emachines Emachines m6805/7 Laptop'ları boot etmek için kernel

Not: Bazı LiveCD lerde ek olarak başka Kerneller vardır, yada yukarıdaki yazıda değinmediğimiz kerneller olabilir. Bunları görebilmek için Boot resmi çıktığında F1 tuşuna basınız.

İsterseniz başka ayarları da verebilirsiniz. Bunlar ek ve seçimlik olarak sizin (de)aktif edebileceğiniz ayarlardır. Tabloda Kernel ayarlarını tanıtalım:

Kernel Seçenekleri Açıklama
acpi ACPI desteğinin aktif edilmesi
doataraid ATA RAID Aygıtları desteğinin aktif edilmesi
dofirewire Firewire Aygıtları desteğinin aktif edilmesi
dopcmcia PCMCIA desteğinin aktif edilmesi
doscsi SCSI Aygıtları desteğinin aktif edilmesi
noapm APM desteğinin deaktif edilmesi
nodetect Donanım tanıma (kudzu/hotplug) desteğinin deaktif edilmesi
nodhcp IP Adresi üzerinden DHCP yapılmaması
noevms EVMS desteğinin deaktif edilmesi
nohotplug Hotplug (Kernel Loading Program) desteğinin deaktif edilmesi
nousb USB desteğinin deaktif edilmesi
ide=nodma DMA desteğinin deaktif edilmesi

Simdi CD nizi başlatın, Kernelinizi (eğer öntanımlı gentoo kernelinden memnun değilseniz) ve yükleme(boot) seçenekelerinizi seçin. Size bir Örnekte gentoo Kernelini dopcmcia Kernel Parametresi ile boot yaptığının örneğini vereceğiz:

Kod Listeleme 3.1: LiveCD ile Boot etmek

 boot: gentoo dopcmcia 

Siz karşılaştığınız Boot resminden başka gelişmiş Boot resmi ile selamlanacaksınız. Boot işlemi bittikten sonra otomatik olarak Superuser "root" olarak "Live" Gentoo Linux'a login olacaksınız. Konsol'da root Prompt ("#") göreceksiniz. Bununla Alt-F2, Alt-F3 ve Alt-F4'e basarak başka Konsola geçebilirsiniz. Alt-F1'e basarak başladığınız yere geri dönebilirsiniz.

Gentoo'yu non-US Klavyeli bir Sisteme kuracaksanız, loadkeys komutunu kullanarak uygun keymap dosyasını yükleyebilirsiniz. Mevcut keymaps dosyalarını görmek için ls /usr/share/keymaps komutunu verin.

Kod Listeleme 3.2: Mevcut keymap dosyalarını listelemek

 # ls /usr/share/keymaps 

Seçilen keymak dosyasını yüklemek için: (örn: türkçe Q klavye için)

Kod Listeleme 3.3: Türkçe Q klavye için keymap yükleme

 # loadkeys trq 

Şimdi Gelişmiş Donanım Ayarları bölümü ile devam edebilrisiniz.

Gelişmiş Donanım Ayarları

LiveCD yi başlattığınız zaman tüm Donanımınızı tanımaya ve gereken Modülleri yüklemeye çalışacaktır. Genelinde bu işlem hep basarili olur. Bazı durumlarda (SPARC LiveCD Donanım tanıma yapmaz) gereken Modüllerin otomatik yüklenmediği zamanlar olabilir. Bu durumda eliniz ile kendiniz gerekli modulu yüklemeniz icap edecektir.

Sıradaki örnekte size 8139too Modülünün nasıl eliniz ile yüklendiğini izah edeceğiz:(8139 ethernet kartları için)

Kod Listeleme 3.4: Kernel modulunu elimiz ile yükleme

 # modprobe 8139too 

İsteğe Bağlı: Sabit Diskin Performansını Yükseltmek

Eğer tecribeli bir kullanıcı isenizhdparm komutunun yardımı ile IDE sabit diskinizin performansını artırabilirsiniz. the -tT parametresi ile sabit diskinizin performansını test edebilirsiniz:

Kod Listeleme 3.5: Sabit Disk performansını test etmek

 # hdparm -tT /dev/hda 

Performansı yükseltmek için vereceğimiz örneği kullanbilirsiniz. Verdiğimiz Örnekte /dev/hda sizin Sabit diskiniz için kullanılacak (/dev/hda bunu kendi aygıtınızın adı ile değiştirin):

Kod Listeleme 3.6: Sabit Disk verimini yükseltme

 DMA Etkinleştirme: # hdparm -d 1 /dev/hda DMA aktifleştirme + güvenli verimini düzenleme: # hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda 

İsteğe Bağlı: Kullanıcı Hesapları

Eğer başkasına Kurulum için yada irssi programı ile Chat yapabilmesini root olarak sağlamak istiyorsanız, bir kullanıcı hesabı açıp, root şifresini değiştirmeniz gerekir.

root şifresini değiştirmek için passwd komutunu uygulayın:

Kod Listeleme 3.7: root şifresini değiştirmek

 # passwd New password: (yeni root şifresini girin) Re-enter password: (şifreyi tekrarlayın) 

Bir Kullanıcı hesabı oluşturmak için hesap adı ve şifre gerekmektedir. Biz useradd ve passwd komutlarını bu amaç için kullanıyoruz. Sıradaki örnekte "ahmet" Kullanıcısını oluşturacağız.

Kod Listeleme 3.8: Kullanıcı hesabı oluşturma

 # useradd ahmet # passwd ahmet New password: (ahmet için şifre girin) Re-enter password: (şifreyi tekrar girin) 

Root iken kullanıcı hesabını kullanmak istiyorsanız bunu su komutunun yardımı ile yapabilirsiniz:

Kod Listeleme 3.9: Kullanıcı ID değiştirmek

 # su ahmet - 

İsteğe Bağlı: SSH Daemon'u Çalıştırmak

Başka bir kullanıcının sizin bilgisayarınıza ulaşım yetkisi vermek isterseniz (Belki size kurulumda yardım edecek yada kurulumu sizin için yapabilecek bir kişi olabilir), o kişi için hesap açmanız ve hatta root şifresini dahi vermeniz gerekebilir. (Bunu sadece o kişiyi çok iyi tanıyor ve güvenebiliyorsanız yapın).

SSH Daemon'u çalıştırmak için aşağıdaki komutu kullanın:

Kod Listeleme 3.10: SSH Daemon'u çalıştırma

 # /etc/init.d/sshd start 

sshd'yı kullanabilmek için bir Ağ kurmanız gerek. Sıradaki Bölümle devam edelim: Ağ Ayarları.

3. Ağ Ayarları

3.a. Yapabilirsiniz fakat!...

Kim yapamaz?

Seçtiğiniz minimum kuruluma bağlı olarak, internet olmadan kuruluma devam etmeniz mümkün olabilir yada olmayabilir.

Genel olarak ağ kurmaya çok ihtiyacımız olacak. Bununla birlikte, Gentoo ayrıca internet bağlantısı olmadan size kurulum yapabilme imkanı sağlar. Bu kurulum seçeneğini sadece Gentoo Live Cd'ye sahip olanlar yapabilir.

Neden ağ bağlantısına ihtiyaç duyarız ?

Gentoo'yu tamamen internetten yükleyebilmek mümkün. Güncel bir internet kurulum tabanlı taşıma sistemi kullanarak(Portage Tree) kurulum yapılabilir. (Portage: paketlerin birlikte bulunduğu bilgisayar yazılımınızın kurulumunu idare edebileceğiniz bir araçtır.) Bunu ayrıca da internetten kurulum yapabilmemiz için en iyi sebeb gösterebiliriz. Bu sebebe rağmen pek çok kişi internetten kurulumun yapmayı pek istememektedir.

Eğer internetten kurulum yapmak istemiyorsanız, Gentoo Universal LiveCD'ye ihtiyacımız olacak. Bu LiveCD içerisinde kaynak kodlar ve Gentoo'yu yükleyebilmek için gerekli olan en güncel paketler mevcuttur.

İnternet olmadan kuruluma devam etmek istiyorsanız, biraz önce bahsedilen Universal LiveCD'ye sahip olmanız vede bu bölümü atlamanız gereklidir ve aşağıdaki bağlantıdaki 4. bölüm ile devam etmek gerekir:

Bölüm 4: Kurulum öncesi sabit sürücüleri hazırlamak

Aksi takdirde aşağıda anlatılacak olanlar internetten kurulumu gerektirmektedir.

İsteğe bağlı: Proxy ayarlamak

Eğer internete Proxy'den geçerek ulaşıyorsanız, proxy ayarlarını(bilgilerini) kurulum sırasında girmeniz gerekli. Çok basit bir yolla proxy ayarlarınızı girebilirsiniz.

Çoğu durumda sadece sunucu adı olarak proxy sunucu adı (yani hostname) girmemiz yeterli. Birkaç örnek verecek olursak; farz edelim ki proxy sunucu adı(yani hostname 'si)proxy.gentoo.org ve port numarası 8080 olsun.

Kod Listeleme 1.1: Proxy tanımlamak

(eğer proxy sunucunuz filter olarak HTTP tabanlı ise) 
 #  export http_proxy="http://proxy.gentoo.org:8080"

(eğer proxy sunucunuz filter olarak FTP tabanlı ise) 
# export ftp_proxy="ftp://proxy.gentoo.org:8080"

(eğer proxy sunucunuz filter olarak RSYNC tabanlı ise)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

Eğer proxy sunucuya bağlanmak için kullanıcı adı ve şifre gerekli ise, değişken olarak yazmanız gereken sözdizimi:

Kod Listeleme 1.2: Kullanıcı adı ve şifre eklemek

http://kullanici_adi:şifre@sunucu_adresi

HTTP tabanlı Proxy için kullanıcı adı ve şifre tanımlamak:

Kod Listeleme 1.3: Onaylı Proxy

# export http_proxy="http://kullanıcı_ismi:şifre@proxy.gentoo.org:8080"

3.b. Ağ Bileşenlerini Otomatik Olarak Bulmak

Maybe it just works?

Eğer sisteminiz DHCP tabanlı bir ağ sunucusuna bağlı ise, muhtemelen ağ yapılandırmanız otomatik olarak tanımlı bulunacaktır. Eğer tanımlı ise pek çok ağ komutlarından yararlanabilmek mümkündür. LiveCD'de bulunan birçok komuttan yararlanabilirsiniz, örnek:ssh, scp, ping, irssi, wget ve links, ve diğer birçok komut.

Eğer, ağ yapılandırmanız tanımlı ise/sbin/ifconfig komutu size ağ ile ilgili bilgileri karşınıza getirecektir (örnek eth0 için ):

Kod Listeleme 2.1: /sbin/ifconfig çalışan bir ağ yapılandırması

# /sbin/ifconfig
 eth0 	Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A 
	inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 
	inet6 addr:fe80::50:ba8f:617a/10 Scope:Link 
	UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
	RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0 
	TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0 
	collisions:1984 txqueuelen:100 
	RX bytes:485691215 (463.1 Mb) 
	TX bytes:123951388 (118.2 Mb) 
	Interrupt:11 Base address:0xe800

Ağı Test Etmek

Kendi internet sağlayıcınızın DNS numaralarına PING çekmek isterseniz ( DNS numaraların bulunduğu dosya:/etc/resolv.conf) ve bir Web sitesi seçerseniz , gönderdiğiniz PING'e gelen cevapların hatalı olmadığına ve DNS çözülümü yapabildiğine dikkat edin. Bunun anlamı DNS doğru çalıştığı ve sorunsuzca internete çıkabileceğinizdir.

Kod Listeleme 2.2: Alternatif ağ testi

#  ping  -c 3 www.yahoo.com

Ağınızı kullanabiliyor musunuz ? Eğer cevabınız evet ise bu andan itibaren 4. bölüme geçmelisiniz: Kurulum Öncesi Sabit Kurucuları Hazırlamak Hayır mı!! Kötü şans üzülmeyin, birazcık uğraşacaksınız :)

3.c. Ağ Bileşenlerini Otomatik Olarak Ayarlamak

Eğer ağ bağlantınız çalışmıyorsa, bazı komutlar ağınızı tanıtmaya yardımcı olabilir (normal ağ ve adsl kullanıcıları için) . Örnek:net-setup (Normal kullanıcı için) veya adsl-setup (ADSL kullanıcıları için).

Eğer seçtiğiniz minimum Gentoo kurulumu bu otomatik kurulum komutlarını içermiyorsa veya ağ tanımlı değilse, Ağ bileşenlerini elle ayarlamak bölümüne atlayınız.Elile Ağ Bileşenlerinin Ayarlanması .

Varsayılan: net-setup Kullanımı

Henüz hala ağınız tanımlı değilse, tanımlamak için verebileceğiniz komut: net-setup

Kod Listeleme 3.1: net-setup komutunu çalıştırmak

# net-setup eth0

net-setup size ağınızla ilgili bazı sorular soracaktır. Bu soruların hepsi bittiğinde, tamamıyle çalışan bir ağa sahip olmuş olacaksınız. Tekrar daha önce denediğiniz gibi ping atarak ağınızın çalışıp çalışmadığını kontrol etmeniz mümkün. Test sonucu olumlu ise Tebrikler! Gentoo kuruluma hazır. Bu bölümü atlayınız ve 4. bölümden devam ediniz. Kurulum Öncesi Sabit Sürücüleri Hazırlamak

Hala ağınız çalışmıyorsa Ağ bileşenlerini elle ayarlamak bölümüne atlayınız. Elile Ağ Bileşenlerinin Ayarlanması.

Alternatif: RP-PPPoE Kullanımı

Farz edelim ki internete bağlanmak için PPPoE 'ye ihtiyacınız var. LiveCD (herhangi bir sürüm) bunu içermektedir. adsl-setup komutu ile bağlantınızı tanımlamak mümkün. Bu komut sizi tam olarak adsl modeminize bağlayacak kullanıcı adı, şifre, IP, DNS sunucusu kısımlarını gireceksiniz.

Kod Listeleme 3.2: rp-pppoe kullanımı

# adsl-setup
# adsl-start

Eğer birşeyler yolunda gitmiyorsa dikkatli bir şekilde tekrar kullanıcı adı ve şifreyi /etc/ppp/pap-secrets veya /etc/ppp/chap-secrets dosyalarına bakarak, doğru girdiğinizden ve doğru ağ kartını kullandığınızdan emin olun. Eğer ağ kartınız mevcut değilse ağ kartınıza uygun olan, ona yakın olan ağ(network) modüllerini yüklemeniz gerekli. Bu durumda Elile Ağ Bileşenlerinin Ayarlanması bölümüne gidiniz: Elile Ağ Bileşenlerinin Ayarlanması.

Herşey yolunda ise 4. bölümden devam edin: Kurulum Öncesi Sabit Sürücüleri Hazırlamak.

3.d. Ağ Bileşenlerini Elile Ayarlamak

Ağ Modüllerini Yüklemek

Eğer net-setup veya adsl-setup başarısız sonuç verirse bunun sonucunda ağ kartınız büyük bir olasılıkla bulunamadı demektir. Bunun anlamı kernel(çekirdek) modülünüzü nam-ı diğer çekirdek derlemesini elle yani manuel olarak yapmak zorunda kalacaksınız.

Hangi kernel modülünün bizim ağa uygun olacağını görmek için:

Kod Listeleme 4.1: Gerekli olan modülü aramak

# ls /lib/modules/`uname -r`/kernel/drivers/net

Eğer ağ kartınız için bir sürücü(driver) bulduysanız, kernel modülünü yüklemek için modprobe komutunu kullanın:

Kod Listeleme 4.2: Kernel modulu yükelemek için modprobe kullanımı

(örneğin, pcnet32 modülünün yüklenmesi)
# modprobe pcnet32

Ağ kartınızın yüklenip yüklenmediğini kontrol edin. Bunun için ifconfig komutunu kullanın. Tanımlanmış bir ağ kartı aşağıdaki sonucu verecektir:

Kod Listeleme 4.3: Network kartının test edilmesi

# ifconfig eth0
 eth0 	Link encap:Ethernet HWaddr FE:FD:00:00:00:00 
	BROADCAST NOARP MULTICAST MTU:1500 Metric:1 
	RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
	TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
	collisions:0 txqueuelen:0 
	RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

Eğer sonuç olarak aşağıdaki hata mesajını aldıysanız ,ağ kartınız alğılanamamıştır:

Kod Listeleme 4.4: Network kartının test edilmesi

# ifconfig eth0
 eth0: error fetching interface information: Device not found

Farzedelimki kartımız bulundu. Tekrar net-setup ve adsl-setup komutlarını deneyin(hangisiyle bağlanıyorsanız). Ayarlarınızı yapın. Uzman kişiler için nasıl elle ayar yapılır bölümü hazırladık. İsterseniz göz atabilirsiniz.

Aşağıdaki bölümlerden hangisi sizinle ilgili ise seçiniz:

DHCP Kullanarak

DHCP (Dynamic Host Configuration Protocol) Ağ bilgilerinizi otomatik olarak algılamayı sağlar. Bunlar IP adresi, netmask, broadcast adresi, ağ geçidi, nameservers vb. bilgileridir. Bu sadece ağınızda DHCP sunucu varsa (servis sağlayıcınız DHCP hizmeti veriyorsa) çalışır. Bunu yapabilmek için ve bilgileri otomatik olarak alabilmek için dhcpcd komutunu kullanmanız gerekli:

Kod Listeleme 4.5: dhcpcd kullanmak

# dhcpcd eth0

Eğer bu çalışıyorsa (tekrar ping atmayı deneyiniz örnegin Google adresine mesela), sonrasında devam etmeye hazırsınız demektir. Bu bölümü atlayarak 4. bölüme geçiniz. Kurulum Öncesi Sabit Sürücüleri Hazırlamak.

Wireless(kablosuz) Ağ Erişim

Not: Not: Bütün LiveCD leri iwconfig komutuna sahiptir. Eğer sizinki sahip değilse linux-wlan-ng projectadresinden edinerek devam edebilirsiniz..

Eğer 802.11 kartına sahipseniz daha ileriye gitmeden önce wireless ayarlarımızı kontrol etmemiz gerekecek. Şu anki güncel wireless(kablosuz), bağlantı bilgilerini görmek içiniwconfigkomutunu kullanınız. iwconfig çalıştığı zaman:

Kod Listeleme 4.6: güncel wireless ağ ayarları

# iwconfig eth0
 eth0 	IEEE 802.11-DS ESSID:"GentooNode" 
	Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2 
	Bit Rate:11Mb/s Tx-Power=20 dBm Sensitivity=0/65535 
	Retry limit:16 RTS thr:off Fragment thr:off 
	Power Management:off 
	Link Quality:25/10 Signal level:-51 dBm Noise level:-102 dBm 
	Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx 
	excessive retries:237 Invalid misc:350282 Missed beacon:84

Not: Bazı wireless kartları eth0 yerine wlan0 aygıt ismine sahip olabilir.

Bir çok kullanıcı için sadece 2 önemli değiştirilebilecek ayar vardır. ESSID(wireless network name) veya WEP anahtarı. Eğer ESSID ve erişim noktası adresi zaten biliniyorsa ve WEP anahtarını kullanmıyorsanız, wireless çalışıyor demektir. Eğer ESSID'yi değiştirmek isterseniz veya WEP anahtarı eklemek isterseniz aşağıdaki komutları kullanmalısınız:

Kod Listeleme 4.7: ESSID veya WEP ahantarını değiştirmek

(bu ağ adını "GentooNode" olarak ayarlar)
# iwconfig eth0 essid GentooNode 
(bu hexadecimal olarak WEP anahtarını ayarlar)
#iwconfig eth0 key 1234123412341234abcd 
(bu ASCII kodu olarak ve "s" ön takısı olarak anahtarımızı ayarlar)
# iwconfig eth0 key s:some-password

Sonrasında wireless ayarlarınızı iwconfig komutunu kullanarak doğrulamanız gerekmektedir. Bir kez çalışıyorsa IP düzeyini ayarlama kısmından devam ediniz.(Ağ terminolojisini anlamak) veya daha önceden anlattığımız gibi net-setup bölümü ile devam edin.

Ağ Terminolojisini Anlamak

Not: Eğer IP, broadcast, ağ maskesi, nameserver adreslerini biliyorsanız bu bölümü atlayarak diğer bölüme yani ifconfig ve route komutlarını kullanmakbölümü ile devam ediniz.

Eğer tüm bunlar başarısız olduysa ağınızı elle yapılandırmak zorunda kalacaksınız. Korkmaya gerek yok. Zorluktan çok uzak hatta çok basit, fakat bunu başarabilmeniz için size kesin ağ(network) bilgisini vermeden önce kendinize olan güveninizi arttırınız. Bunu okuduğunuz zamangateway (ağ geçidi) nedir,netmask (ağ maskesi) nedir, gibi soruların cevablarını ve diğerlerinin ne olduğunu, nameserver'a neden ihtiyaç duyacağımızı, herşeyi ögreneceksiniz.

Bir Ağ'da adresler IP adresleri olarak tanımlanırlar (Internet Protocol address). Bu 0 ile 255 arasinda 4 haneden olusan bir rakamdır, bunu anlıyabilmemiz için gerçekte IP adresinin 32 bit olduğunu ve 1 ve 0 lardan meydana geldiğini bilmeniz gerekir. Bir örnekle özetlemek gerekirse:

Kod Listeleme 4.8: IP adres örneği

IP Address (numbers): 	192.168.0.2 
IP Address (bits): 	11000000 10101000 00000000 00000010 
			-------- -------- -------- -------- 
			192	168	0	2

Bu IP adresleri tüm kullanıcılara özel eşsiz adreslerdir. İnternette herşeyi bu adresler üzerinden yaparız. Ağda bulunan iki adres arasında ayrım yapabilmek ve ağın dışındaki bir IP adresi arasındaki farkı anlayabilmek için IP adresi iki kısma ayrılır. Host kısmı ve Network kısmı.

Aşağıda ayrım ağ maskesi(netmask) üzerinde anlatılmıştır. 1 ler topluluğunu 0 lar izlemektedir. 1 lerden oluşan kısım network kısmı diğer kısmı ise host kısmıdır. Genel olarak ağ maskesi IP adresi olarak yazılır.

Kod Listeleme 4.9: network/host ayrım örneği

IP-address: 	192 	168	 0	 2 
		11000000 10101000 00000000 00000010

Netmask: 	11111111 11111111 11111111 00000000 
		255 	255 	255 	0 
		+--------------------------+--------+ 
		Network        	Host

Diğer bir değişle 192.168.0.14 adres ağımızın bir parçası fakat 192.168.1.2 değildir.

broadcast 'da ağımızın bir parçası olan IP adresidir, fakat sadece host kısmı. Her ağ daki host IP adresini dinler.

Kod Listeleme 4.10: Broadcast adresi

IP-address: 		192 		168 		0 		2 
			11000000 	10101000 	00000000 	00000010 
Broadcast: 		11000000	10101000 	00000000 	11111111 
			192 		168 		0 		255 
			+----------------------------------------------+--------+ 
			Network 					Host

İnternette sörf yapabilmeniz için hangi host'un interneti paylaştığını bilmeniz gerekir. Bu host, gateway olarak bilinir. Eğer düzenli bir host varsa düzenli bir IP adresi vardır demektir. Örnegin 92.168.0.1 gibi.

Daha önce ifade ettiğimiz gibi, her host kendi IP adres aralığına sahiptir. Bu host ismine ulaşabilmek için bir servise ihtiyaç duyarız. Bu adresi isme çeviren bir servis(dev.gentoo.org) vardir. Bu servisleri kullanabilmek için gerekli ismi /etc/resolv.conf dosyasının içinde tanımlamamız gerekir.

Bazı durumlara ağ geçidimiz aynı zamanda nameserver olarak da görev yapar. Aksi takdirde servis sağlayıcınızın söylediği nameserver adresini girmeniz gerekir.

Buraya kadar özetlemek gerekirse ilerlemeniz için aşağıdaki bilgilere ihtiyacınız var:

Ağ Öğesi Örnek
IP adresiniz 192.168.0.2
Netmask 255.255.255.0
Broadcast 192.168.0.255
Gateway 192.168.0.1
Nameserver(ler) 195.130.130.5, 195.130.130.133

ifconfig ve route komutlarını kullanmak

Ağımızı ayarlayabilmek için 3 aşama gerekli: İlk olarak ifconfig kullanarak IP adresimizi girmek, sonrasında ağ geçidi adresini route komutunu kullanarak girmek ve son olarak nameserver ismini /etc/resolv.conf dosyasının içine koymak. :) .

ifconfıg komutunun kullanımına bir örnek vermek gerekirse;

${IP_ADDR} IP adresiniz,
${BROADCAST}
broadcast adresiniz
${NETMASK}
netmask adresiniz:

Kod Listeleme 4.11: ifconfig kullanımı

# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK}  up

Şimdi ise sıra geldi routing kullanmaya :).
${GATEWAY} Sizin gateway IP adresiniz.

Kod Listeleme 4.12: route komutunu kullanmak

# route add default gw ${GATEWAY}

Son olarakta her hangi sevdiginiz bir editor yardımı ile /etc/resolv.conf dosyasını açıp ( kendi örneğimizde biz nano editorunu kullandık ) Nameserver IP adreslerini yazıyoruz.

Kod Listeleme 4.13: /etc/resolv.conf dosyasını oluşturmak

# nano -w /etc/resolv.conf

Şimdi dosyamızı açtıktan sonranameserver(s) kısmını "${NAMESERVER1} ve ${NAMESERVER2}" şablonunu kullanarak dolduralım: (${NAMESERVER1} ve ${NAMESERVER2} bölümlerini kendi Nameserver IP adresleriniz ile değiştirebilirsiniz )

Kod Listeleme 4.14: /etc/resolv.conf şablonu

nameserver ${NAMESERVER1} 
nameserver ${NAMESERVER2}

İŞTE BU KADAR!!! Şimdi ağınızın tam olarak çalıştığını bu kadar uğraştan sonra google adresine ping atarak test edebilmemiz mümkün. Eğer bu çalışıyorsa şimdi güvenle 4. bölüme geçebilirsiniz.hat's it. Kurulum Öncesi Sabit Sürücüleri Hazırlamak.

4. Sabit Diskin Hazırlanması

4.a. Blok Aygıtlarına Giriş

Blok Aygıtlar

Bu bölümde sizlere Gentoo Linux'un "disk-orient" yönünü, Linux'un genel yapısını, ve dosya sistemini, disk bölümlerini anlatacağız. Sonrasında disk girdi çıktı yapısını ve dosya sistemiyle devam edeceğiz. Sizlere rehberlik edecek olan bu yazı, size sabitdisk bölümlemede ve dosya sistemi oluşturmada, Gentoo Linux 'unuzu kurmada size yardımcı olacaktır.

Başlangıç olarak sizeBlok aygıtlar hakkında bilgi vereceğiz. Bildiğimiz en yaygın sabit disk muhtemelen IDE sürücümüz yani /dev/hda. Eğer sisteminiz SCSI sürücü kullanıyorsa tabiki ilk sürücünüz /dev/sda olacaktır.

Sabit Disk Bölümleri (Partitions)

Pratikte mümkün olmamasına rağmen, teorik olarak bütün sabit diskimizi Linux olarak kullanmak mümkün. Ama bunun yerine yönetimi kolaylaştırmak amacı ile bütün sabit diskimizi daha küçük bölümlere ayırmak mümkün. Bu x86 sisteminde bölüm (Partitionen) olarak bilinir. Diğer mimarilerde Slices olarak tanınır.

Bölümler

Bölümler 3 kısma ayrılır: birincil (primar), uzatılmış (extended) ve mantıksal (logical).

Birincil bölüm (primary) bölünme bilgilerinin MBR(master boot record) üzerinde yazıldığı bir bölümdür. MBR çok küçük olduğu için (512 bytes) sadece 4 birincil bölüm tanımlanabilir. (Örneğin /dev/hda1 'den /dev/hda4 'e kadar).

Uzatılmış bölüm (extended) özel bir bölümdür ve kendi içerisinde başka bölümler içerir. Bunun anlamı, uzatılmış bölüm altında birçok bölünme yapılabilir. 4 bölünme az olduğu için ve geriye uyumluluğu genişletmek için bu bölüm geliştirilmiştir.

Mantıksal bölümler (logical) Uzatılmış bölümler içinde bulunan bölümdür. Tanımlamaları MBR içerisinde kaydedilmez aksine uzatılmış bölüm içerisinde bu bilgiler saklanır.

4.b. Sabit Disk Bölümlerini Tasarlamak

Öntanımlı Bölüm Planı

Eğer sisteminizin disk bölümlerinin şemasını çıkarmakla fazla kafa yormak istemiyorsanız, bizim sizin için hazırladığımız tabloyu kullanabilirsiniz:

Bölüm Dosya sistemi Boyut Açıklama
/dev/hda1 ext2 32M Boot bölümü
/dev/hda2 (swap) 512M Swap bölümü
/dev/hda3 ext3 Geriye kalan GB Root bölümü

Eğer sabit disk bölümleri ile ilgili iseniz, kaç tane bölüme ihtiyacımız olduğunu merak ediyorsanız, okumaya devam edin. Aksi takdirde diğer bölüm başlığı olan fdisk kullanarak diski bölümlere ayırmak adlı olan bölümümüze geçiniz.

Diskimin kaç tane bölümü ve boyutu ne olmalı?

Sabit disk bölümlerimizin büyüklüğü sisteminizdeki ortama bağlıdır. Örneğin birçok kullanıcıya sahipseniz muhtemelen /home dizininizi bölmek isteyeceksiniz. Güvenliği arttırmak ve yedeklemek kolay olacaktır. Eğer Gentoo'yu Mail sunucusu olarak kuracaksanız /var dizini bölümleyebilirsiniz. İyi bir dosya sistemi seçimi sisteminizin performansını arttıracaktır. Oyun sunucusu olarak kurmak istersenizde birçok program /opt izini altına kurulacaktır. Bölünmede sebeb hep aynı /homedizininde olduğu gibi aynı: Güvenlik ve yedekleme.

Görüldüğü gibi, herşey ne elde etmek isteğinize bağlı. Sabit diskinizi bölümlemek size şu avantajları kazandıracaktır:

Bununla birlikte çoklu disk bölümleri büyük bir dezavantaja sahiptir: Eğer doğru düzenlenemezse bölümler arasında tanımlanmamış bilinmeyen boşluklar oluşabilir.

Bir örnek verecek olursak; elimizde bir laptop ve 20GB lik bir sabitdisk bulunmakta websunucusu, mailsunucusu ve gnome içermektedir. Bunu için aşağıdaki bölünmeyi örnek olarak gösterebiliriz:

Kod Listeleme 2.1: Dosya sistemi örneği

Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/hda5     ext3    509M  132M  351M  28% /
/dev/hda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/hda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/hda8     ext3   1011M  483M  477M  51% /opt
/dev/hda9     ext3    2.0G  607M  1.3G  32% /var
/dev/hda1     ext2     51M   17M   31M  36% /boot
/dev/hda6     swap    516M   12M  504M   2% <not mounted>
(Unpartitionierter Speicherplatz für zukünftige Benutzung: 2 GB)

/usr dizini %83 olarak görünmekte, çünkü tüm yazılımlar kurulmuş bir haldedir. İnsanlar sabit diskimizin büyük bir bölümünü /var dizinine eşitlediğimizi düşünebilir. Lakin Gentoo tüm programları derlediğinde /var/tmp/portagedizini altına koyar. Bu durumda en az 1gb /vardizini ne ayırmak gerekecek eğer KDE

4.c. Diskimizi Bölümlere Ayırmak

Sıra geldi en eğlenceli kısma. Aşağıdaki tablo nasıl disk bölümü oluşturacağımız hakkında kısa bir bilgi vermektedir:

Bölüm Açıklama
/dev/hda1 Boot bölümü
/dev/hda2 Swap bölümü
/dev/hda3 Root bölümü

Bölüm ayarlarını kendi isteğinize göre değiştirin.

Güncel Sabitdisk Bölümlerini Görmek

fdisk ençok kullanılan, sabitdiskinizi bölümlere ayırmaya yararan küçük bir programdır. Aşağıdaki örnekte fdisk kullanımı hakkında ufak bir örnek hazırladık: (bizim örneğimizde /dev/hda kullandık):

Kod Listeleme 3.1: fdisk başlatmak

# fdisk /dev/hda

fdisk programını çalıştırdığınızda aşağıda gösterilen komut satırıyla karşılaşacaksınız:

Kod Listeleme 3.2: fdisk Prompt

Command (m for help): 

Eğer p düğmesine basarsanız şu anki sabit diskinizin güncel kısımlarını görebilmeniz mümkün:

Kod Listeleme 3.3: Bölüm yapılandırmasına bir örnek

Command (m for help): p

Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux
/dev/hda2            15        49    264600   82  Linux swap
/dev/hda3            50        70    158760   83  Linux
/dev/hda4            71      2184  15981840    5  Extended
/dev/hda5            71       209   1050808+  83  Linux
/dev/hda6           210       348   1050808+  83  Linux
/dev/hda7           349       626   2101648+  83  Linux
/dev/hda8           627       904   2101648+  83  Linux
/dev/hda9           905      2184   9676768+  83  Linux

Command (m for help): 

Yukardaki bu sabit diskte 7 Linux dosya sistemi(Linux olarak görünen bölümler) ve bir takas bölümü (Linux Swap olarak görünen) bulunmaktadır.

Sabit Disk Bölümlerini Kaldırmak

Biz ilk olarak tüm sabit disk bölümlerini diskimizden kaldırmak istiyoruz. Bunu yapabilmek için d düğmesine basarak bölümleri silebiliriz. Örnegin /dev/hda1 bölümünü silmek için:

Kod Listeleme 3.4: Löschen einer Partition

Command (m for help): d
Partition number (1-4): 1

Silmek istediğimiz bölüm silinmek üzere programlandı. Artık Sie p üğmesine bassanız bile, yapılan değişiklikleri kaydetmediğiniz sürece, gözükmeyecektir. Eğer bir hata yaptıysanız ve kaydetmeden işlemlerden çıkmak istiyorsanız q tuşuna basarak işlemi yarıda bırakabilirsiniz. Şimdiye kadar yaptığınız bütün işlemler dikkate alınmadan işlemden çıkılabilir.

Diyelim, sabit diskinizdeki bölümleri gerçekten silmek istiyorsunuz. Bu durumda tekrar p tuşuna basın ve bölünme tablosonun listesini dikkatlice inceleyin ve silmek istediğiniz bölümün numarasını aklınızda tutun ve bu numarayı d uşuna bastıktan sonra girin. Ve bölümünüz silindi. Bu işlemi bütün bölümler için yaparsanız, sonunda aşağıdaki bir bir liste ile karşılaşabilirsiniz:

Kod Listeleme 3.5: Boş bir sabit disk bilgisi

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

Şimdi tüm bölümlerimiz silindi ve tekrar oluşturmak için hazır durumda. Biz daha önce belirttiğimiz öntanımlı disk bölümlerini kullacağız. Tabikide aynı bölüm isimlerini tanımlamak zorunda değilsiniz.

Yeni Bir Sabit Disk Bölümü Oluşturmak

Biz ilk olarak küçük bir Boot bölümü oluşturalım. Bunun için n düğmesine basarak yapabilirsiniz, sonra p düğmesine basarak birincil disk (primary) bölümü oluşturabilir ve arkasında 1 yazarak 1. bölüm olmasını sağlayabilirsiniz (yani hda1). Hemen arkasından sizden boyutunu soracaktır bunun için +32M girerek 32 Mbyte boyutundan bir bölüm oluşmasını sağlayabilirsiniz:

Kod Listeleme 3.6: "boot" adlı sabit disk bölümünü oluşturma

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1): (Enter tuşuna basın)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

Şimdi , p düğmesine bastığınızda ekranınızda aşağıdaki tabloda olan bilgiler ekranınızda çıkacaktır:

Kod Listeleme 3.7: Tanımlanmış bir Boot sabit disk bölümü

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1          1        14    105808+  83  Linux

Şimdi bu bölümü önyüklenebilir (bootable) hale getirmemiz gerek. Bunun için a tuşuna basıyoruz ve bu bölüme önyüklenebilir etiketi koyuyoruz. Tekrar p tuşuna basarsanız * (yıldız=asteriks) karakterinin "boot" sütununa yerleştiğini görürsünüz.

Takas (Swap) Alanı Oluşturmak

Şimdi sıra geldi takas alanı oluşturmaya. Bunu yapmak için n tuşuna basıp yeni bir bölüm oluşturuyoruz ve p şu ile birincil bir bölüm oluşturmak istediğimizi fdisk'e söylüyoruz. Sonra 2 uyazıp ikinci bir birincil bölüm, dev/hda2 bölümü yani, oluşturuyoruz. İlk blok bölümü geldiğinde enter a basın. Son blok bölümüne geldiğinde +512M yazıp, 512MB boyutundan bir bölüm oluşturuyoruz. Sonra t basarak sabitdisk bölümünüzün tipini belirliyoruz. Seçmiş olduğumuz 2 bölümün türü olarak 82 seçerek, bu bölümün "Linux Swap" larak tanınmasını istiyoruz. Bu adımları tamamladıktan sonra p tuşuna basarak aşağıdaki tabloya benzer bir sonuç alacaksınız.:

Kod Listeleme 3.8: Takas alanı yaratıldıktan sonraki diskimizin durumu

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap

Kök (root) Sabit Disk Bölümü Oluşturmak

En son olarak kök (root) bölümünü oluşturmakta sıra. Bunu yapabilmek için n uşuna basın ve yeni bir bölüm oluşturmayı seçin. Sonra p uşuna basarak birincil bölüm (primary) seçin. Sonra 3 yazarak dev/hda3 birincil bölümünün oluşturulmasını sağlayın. Son blok bölümü için istediğiniz büyüklükte bir bölüm oluşturun. Son olarak p bastığınızda sabit diskimizin enson güncel halini görmüş olacaksınız:

Kod Listeleme 3.9: Kök (root) bölümü oluşturduktan sonraki durum

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1 *        1        14    105808+  83  Linux
/dev/hda2         15        81    506520   82  Linux swap
/dev/hda3         82      3876  28690200   83  Linux

Bölümleri Kaydetmek

Sabitdiskimizin son halini kaydetmek için ve fdisk den çıkmak içinw tuşuna basmanız gereklidir.

Kod Listeleme 3.10: Kaydedip fdisk'ten çıkmak.

Command (m for help): w

Artık bölümlerimiz oluştu ve şimdi Dosya Sistemimizi Yaratmak bölümü ile devam edebiliriz.

4.d. Dosya Sistemimizi Yaratmak

Giriş

Şimdiye kadar sabitdisk bölümlerimizi yarattık. Şimdi üzerilerine dosya sistemlerini yazmaya geldi. Dosya sistemini seçmek için endişelenmeyin, öntanımlı olan dosya sistemlerini kullanacaksınız, dosya sistemlerinin ne olduğunu bilmek isteyen okumaya devam etsin okumak istemeyenler Dosya Sistemlerini Bölümlere Uygulama adlı başlıktan itibaren okumaya devam edebilirler.. Aksi taktirde mevcut dosya sistemlerini okumaya devam edin...

Dosya Sistemleri

Linux'un çekirdek yapısı çok çeşitli dosya sistemini destekler. Bunlardan birçoğu amd64 için stabil olarak ifade edilir.Fakat bazıları stabil olarak tanımlanmazlar. AMD64 için Stabil olarak tanımlanan bazı dosya sistemler şunlardır : ext2 ve ext3- JFS ve ReiserFS .

ext2 güvenilirliği denenmiş bir dosya sistemi biçimidir. Fakat "metadata journaling" özelliğine sahip değildir. Bunun anlamı ise ext2 dosya sistemi açılışta herseferinde başlangıç zamanını kontrol eder. Bu da zaman kaybına neden olur. Artık tamamiyle yeni bir nesil olan "journaled" dosya sistemi bulunmaktadır. Ve daha çok tercih edilmektedir. "journaled" dosya sistemleri, bilgisayarınızı yeniden başlattığınız da ve dosya sisteminizin kararsız bir durumda olduğunda geçikmeyi önler.

ext3 ext2 'nin "journaled" halidir ve tüm sistemi hızlı geri almak için "metadata journaling" özelliğine sahiptir. Eğer bu seçenekleri arttırmak istersek "full data" ve "ordered data journaling" buna örnektir. Ext3 "hashed b-tree indexing" özelliği ile çok yüksek performans sağlar. Ext3 mükemmel bir dosya sistemidir.

ReiserFS ise "B*-tree" tabanlı bir dosya sistemidir. ReiserFS, ext2 ve ext3 gibi çok iyi performansa sahiptir. ReiserFS ayrıca "metadata journaling" özelliğine de sahiptir. Özellikle 2.4.18+ sürümleri için mevcuttur. ReiserFS çok büyük boyutlarda sabit disk bölümleri yaratmak isteyeceğiniz zaman kullanacağiniz dosya sistemi olmalıdır.

XFS Gentoo Linux'un tam destek( xfs-sources kerneli) verdiği "metadata journaling" özelliğine sahip bir dosya sistemidir. Bu sistemi sadece SCSI ve UPS sistemi olanlara tavsiye ederiz. Çünkü XFS dosya sistemi RAM ile çok ilişki içindedir ve kullandığınız bir program herhangi bir sebebte dolayı çökerse verilerinizin kaybolmasına sebep olabilir.

JFS IBM tarafından geliştirilen yüksek performanslı "journaling" dosya sistemidir. Yeni bir dosya sistemidir ve henüz daha sağlamlığı hakkında fazla deliller bulunmamaktadır.

Dosya Sistemlerini Bölümlere Uygulama

Bir disk bölümü üzerine istediğimiz dosya sistemini kurmak için gerekli küçük programlar bulunmaktadır. Bunlar aşağıdaki tabloda belirtilmiştir:

Dosya sistemi Komut
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Boot bölümünü boot bölümünü (yani bizim örneğimizde /dev/hda1 ) ext2 olarak ve kök (root) ( bizim örneğimizde /dev/hda3 ext3 olarak tanımlamak istersek:

Kod Listeleme 4.1: Dosya Sistemlerini Uygulama

# mke2fs /dev/hda1
# mke2fs -j /dev/hda3

Şimdi dosya sistemlerini daha önceden yarattığımız sabit disk bölümleri için ayarlamış olduk.

Takas (Swap) Alanını Aktif Hale Getirmek

mkswap komutu bizim işimizi görecek ve takas alanımızı yaratacaktır:

Kod Listeleme 4.2: takas alanı yaratma #

# mkswap /dev/hda2

Takas alanını etkin hale sokmak için kullanacağımız komut ise swapon:

Kod Listeleme 4.3: Takas alanını aktif hale getirme

# swapon /dev/hda2

Takas alanımız oluşturuldu ve başarıyla aktif edildi.

4.e. Sabit Disk Bölümlerini Bağlamak (Mounting)

Sabitdisk bölümlerimiz hazır ve dosya sistemlerimiz için ev sahipliği yapıyor. Şimdi sıra sabitdisk bölümlerimizi bağlamaya geldi. Kullanacağımız komut: mount Sabitdisk bölümlerimizi bağlamadan önce her bölüm için dizin yaratmayı unutmayın. Aşağıdaki örnekte biz kök ve boot bağladık:

Kod Listeleme 5.1: Sabit disk bölümlerini bağlamak

# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot

Not: Eğer /tmp dizinini ayrı bir sabitdisk bölümüne koymak istiyorsanız, bağlamadan önce aşağıdaki komutunu kullanarak izin verdiğinizden emin olun: chmod 1777 /mnt/gentoo/tmp. Aynı şey /var/tmp dizini içinde geçerlidir.

Ayrıca çekirdeğimiz için /proc dizinini bağlamamız gerek. Bunu yapmak için ilk olarak /mnt/gentoo/proc dizinini oluşturmak sonra mount ile bağlamamız gerekli:

Kod Listeleme 5.2: /mnt/gentoo/proc bağlanma noktası oluşturma

# mkdir /mnt/gentoo/proc
# mount -t proc none /mnt/gentoo/proc

Şimdi diğer bölüme geçebilirsiniz : Gentoo Kurulum Dosyalarının Kurulması

5. Gentoo Kurulum Dosyalarının Kurulması

5.a. Bir Aşama(Stage) Arşivi Yüklemek

Zaman ve Tarihi Doğru Olarak Yüklemek

Devam etmeden önce sisteminizin saat/tarih ayarlarını yapmalısınız. Yanlış ayarlanmış bir zaman aşaması gelecekte size sorun çıkarabilir.

Güncel saat/tarih ayarlarınızı kontrol etmek için date komutunu kullanabilirsiniz:

Kod Listeleme 1.1: Zaman/Tarih kontrol etmek

# date
Thu Apr  1 16:21:18 CEST 2004

Eğer saat/tarih yanlış ise bunu date MMDDhhmmCCYY paremtreleri ile ayarlayabilirsiniz: (M Ay, D Gün h saat, m dakika, C yüzyıl ve Y sene). Zamanı/Tarihi mesela 29 nisan 2004, 15:49 ayarlamak için aşağıdaki komutu kullanabiliriz:

Kod Listeleme 1.2: Saat/Tarih ayarlamak

# date 040116212004

Bir Seçim Yapmak

Sıradaki adım karar verdiğiniz aşama (stage) arşivini sisteme yüklemek. Bunun için karar verdiğiniz Aşama arşivini internetten Tarball olarak indirebilir yada LiveCD kullanıyorsanız oradan kopyalaya bilirsiniz.

5.b. Varsayılan: Aşama(stage) Paketlerini İnternetten İndirme

İnternet'ten aşama(stage) arşivini indirme

İlk önce Gentoo bağlanma(mount) noktasına gitmelisiniz, yukardaki açıklamarı takip ettiyseniz şuanda Gentoo bölümüne bağlı olmanız ve bağlı klasörünüzde bu /mnt/gentoo olabilir:

Kod Listeleme 2.1: Gentoo bağlanma noktasına gitmek

# cd /mnt/gentoo

Kurulum yönteminden bağımsız olarak, Aşama arşivini indirmek için bir çok yazılım bulunmaktadır. Mesela lynx erişilebilir bir durumdaysa direk olarak Gentoo yansı adreslerine gidin ve kendinize bir yansı seçin. Seçtikten sonra releases/ klasörüne gitmelisiniz, sonra kullandığınız mimariye görex86/ altına gidip , güncel olan Gentoo sürümünü (2004.1) seçin ve sonra olarak stages/ klasöründe işlemcinize göre uygun Aşama-arşivleri bulacaksınız. Birini seçtikten sonra lynx tarayıcısında D tuşuna basarak indirin. İndirme işlemi bittikten sonra Q tuşuyla tarayıcıyı kapatabilirsiniz.

Not: Gentoo Hardened Aşamalarının (x86 mimarı için olanlar) bulunduğu bölüm: hardened/stages/.

Kod Listeleme 2.2: Lynx'le yansı listesini açmak

# lynx http://www.gentoo.org/main/en/mirrors.xml

Eğer lynx kullanma olasılığınız yok ise links2 kullanabilirsiniz. links2 daha gelişmiş olmasına rağmen lynx 'e göre bazı noksanları var. Mesela verdiğimiz proxy ayarlarını kullanmayabilir. Böyle bir durumda links2 tarayıcımızı links2 -http-proxy proxy.server.com:8080 parametresiyle çalıştırabiliriz. Geri kalan işlem ise lynx 'de olduğu gibidir.

Kod Listeleme 2.3: Yansı listesini links2'yle açmak

(Proxy kulanmadan)   # links2 http://www.gentoo.org/main/en/mirrors.xml
(Proxy kullanarak)      # links2 -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

İndirdiğiniz Aşama(stage) arşivinin bozuk olmadığına emin olmak için md5sum yazılımını kullanabilirsiniz. Yansı da bulunan Aşama-arşivinize ait olan md5sum dosyasını, indirmiş olduğunuz arşivle md5sum yazılımıyla karşılaştırın.

Kod Listeleme 2.4: Aşama-arşivini kontrol etmek

# md5sum stage1-x86-20030910.tar.bz2
6cda1cc745ba882731ac07fbae0dd973  stage1-x86-20030910.tar.bz2

Aşama(Stage) Arşivini Açmak

Şimdi indirmiş olduğunuz Aşama-arşivini sisteminizin içinde açmalısınız. Bu işlem için GNU tar yazılımını kullanacağız, çünkü en kolay yöntem bu.

Kod Listeleme 2.5: Aşama arşivini açmak

# tar -xvjpf stage?-*.tar.bz2

-xvjpf parametresini kullandığınıza emin olun. Parametredeki x 'in anlamı açmak (extrackt) için , v bilgi vermek için ((ing: Verbose, şart değil ama genede olası hataları görmek için ideal) , j parametresi bzip2 ile açmak için, p parametresi dosya haklarının aynen kalması ve f bir dosyayı açacağımızı bildiren ve standart veriyi kullanmayacağımızı belirten parametre anlamındadır.

Aşama arşiviniz sisteme yüklendikten sonra Portage Kurulumu ile devam ediniz.

5.c. Alternatif: LiveCD'deki Aşama(stage) Paketerini Kullanmak

Aşama Arşivini Açmak

CD deki Aşama arşivleri /mnt/cdrom/stages klasöründe bulunmaktadır. Klasör içinde kilerini görüntülemek içinlskomutunu kullanın:

Kod Listeleme 3.1: CD'de bulunan Aşama-arşivlerinin listelenmesi

# ls /mnt/cdrom/stages

Eğer sistem aşağıda olduğu gibi bir hata verirse CD-ROM'unuzu mount etmelisiniz:

Kod Listeleme 3.2: CD-ROM'u bağlamak(mount etmek)

# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages

Şimdi Gentoo bağlanma (mount) noktasına gitmeliyiz (genellikle /mnt/gentoo):

Kod Listeleme 3.3: /mnt/gentoo klasörüne gitme

# cd /mnt/gentoo

Burada seçmiş olduğunuz Aşama arşivini şimdi GNU tar yazılımını kullanarak açacağız. Kesinlikle listeleme 11'de kullandığımız parametreyi (-xvjpf)! kullanmaya özen gösterin! Örnek olarak stage3-20031011.tar.bz2 arşivini Kod Listesi 11 de kuracağız, siz bu dosya ismini seçmiş olduğunuz Aşama-arşivi ismiyle değiştiriniz.

Kod Listeleme 3.4: Aşama arşivini açmak

# tar -xvjpf /mnt/cdrom/stages/stage3-20031011.tar.bz2

Şimdi Aşama(stage) paketleri kuruldu ve Portage Kurulumu ile devam edebiliriz.

5.d. Portage Kurulumu

Ağ ile mi yoksa ağ olmadan mı?

Eğer internet bağlantınız yoksa LiveCD'deki snapshotlardan birini kullanmalısınız, sonraki adımlarda önderlenmiş paketler kullanmak isterseniz (mesela gentoo kurumunu hızlandırmak için) mutlaka LiveCD deki Snapshotlardan birini seçmelisiniz. Diğer kullanıcılar mesela önümüzdeki adımlarda emerge ile güncel bir Portage ağacı(Tree) indirecekler.

Aşağıdaki bölümlerden birisi ile devam edebilirsiniz:

Portage Snapshot'un ve Kaynak Kodun LiveCD'den Kurulumu

Universal LiveCD'lerde bir Portage Snapshot'u bulunmaktadır. Bu bölümü okuduğunuza ve bu yöntemi seçtiğinize göre LiveCD kullandığınızdan yola çıkabiliriz. Devam etmek için LiveCD'de bulunan yansımayı (Snapshot) yüklememiz gerek, hangi Snapshot'un /mnt/cdrom/snapshots/ klasöründe bulunduğuna lütfen tekrar kontro ediniz:

Kod Listeleme 4.1: /mnt/cdrom/snapshots/ içeriği

# ls /mnt/cdrom/snapshots

Seçtiğiniz Snapshot'u tar komutuyla açabilirsiniz, tekrardan verdiğimiz seçenekleri bire bir aktarmaya özen gösterin. Dikkat edilmesi başka bir unsurda -C 'yi büyük C harfi olarak yazmak, (küçük colarak değil). Sıradaki örneğimizde portage-20031011.tar.bz2 snapshotunu kullanıyoruz, burda bu snapshot'un yerine sizin seçmiş olduğunuz Portage Snapshot'u yazmalısınız.

Kod Listeleme 4.2: Portage Snapshot'unun kurulumu

# tar -xvjf /mnt/cdrom/snapshots/portage-20031011.tar.bz2 -C /mnt/gentoo/usr

Şimdiyse CD'de bulunan tüm kaynak kodunu kopyalamalıyız:

Kod Listeleme 4.3: Kaynak kodun kopyalanması

# mkdir /mnt/gentoo/usr/portage/distfiles
# cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/

Portage snapshot şimdi kuruldu ve Derleyici Parametrelerininin Ayarlanması bölümü iled devam edebiliriz.

5.e. Derleyici Parametrelerininin Ayarlanması

Giriş

Gentoo'yu ayarlamak için portage'i etkileyen bazı değişkenler verilebilir. Bu değişkenlerin tümü ( export komutu ile) ortam değişkenleri olarak tanımlanabilir. Ama bu yöntem kalıcı bir çözüm değildir. Ayarlarınızın kalıcı olması için portage size/etc/make.conf ayar dosyasını sunuyor. Şimdi bu dosyayı ayarlayacağız.

Not: Tüm değişkenlerin açıklamalı anlatımını /mnt/gentoo/etc/make.conf.example dosyasında bulabilirsiniz. Başarılı bir Gentoo kurulumu için vereceğimiz değişkenleri kullanmaya özen gösteriniz.

Dilediğiniz bir editörü (biz bu durumda nanoeditörünü kullandık) kullanarak, tanıtacağımız ayarlı değişkenlerle /etc/make.conf dosyasını biçimlendirmeliyiz.

Kod Listeleme 5.1: /etc/make.conf dosyasını editörle açmak

# nano -w /mnt/gentoo/etc/make.conf

Sizinde çabucak görebileceğiniz gibi, make.conf.example dosyası tipik bir yapılandırma dosyasıdır: Kullanmak istemediğiniz satırların başına "#" koyabilirsiniz. Kullanmak istediğiniz satırların başında ise sadece değişken tanımlamaları olmalıdır, örn: VARIABLE="content"

CHOST

Uyarı: Aşama1 kurulumu dışında make.conf dosyasında bulunan CHOST ayarlarına dokunmamakta fayda vardır. Sonuçta sizi bozuk bir sistem bekleyebilir. Tekrardan: CHOST değişkenini sadece Aşama1 (stage1) kurulumunda ayarlamalısınız.

CHOST değişkeni gcc derleyicisiin yazılımları tercüme ederken hangi mimariyi kullanacağını belirler. Bunlar :

Mimari Alt Mimari CHOST Ayarları
x86 i386 i386-pc-linux-gnu
x86 i486 i486-pc-linux-gnu
x86 i586 i586-pc-linux-gnu
x86 i686 veya daha yükseği (athlon'da dahil) i686-pc-linux-gnu
alpha alpha-unknown-linux-gnu
ppc powerpc-unknown-linux-gnu
sparc sparc-unknown-linux-gnu
hppa (generic) hppa-unknown-linux-gnu
hppa pa7000 hppa1.1-unknown-linux-gnu
hppa pa8000 ve yükseği hppa2.0-unknown-linux-gnu
mips mips-unknown-linux-gnu
amd64 x86_64-pc-linux-gnu

CFLAGS ve CXXFLAGS

CFLAGS ve CXXFLAGS değişkenlerinin tanımı gcc derleyicisinin C ve C++ derleyicisini uygun hale getirir. Burada bu ayarları global tanımlasak bile en iyi verimi Flag'leri her yazılım için ayrı tanımlayarak elde ederiz. Bunun sebebi her yazılımın derlenirken ayrı davranmasıdır ve ayrı özellikler gösterebilmesidir.

make.conf dosyasını uygun hale getiren Flag'leri tanımlarken sistemin genel olarak ayarlamaya özen gösterin. Bu değişkenlerde denemelerde bulunmayın, aşırı fanatik tanımlarmalar yazılımlarda hatalara yol açabilir

Burada en uygun hale getiren tüm parametreleri açıklamayacağız. Bunları öğrenmek için GNU Online Manual(s) veya gcc info page (info gcc sayfasına bakmanız gereklidir. Bunun dışında make.conf.example dosyası bir sürü örnek ve bilgi barındırmakta.

İlk ayarlamamız -march= flag'ı . Flag işlemcimizin mimarisini belirliyor. Yapılabilecek seçenekler make.conf.example dosyasında açıklanmış halde bulunuyor. Örnek olarak x86 Athlon XP'nin mimarisini ayarlayalım.

Kod Listeleme 5.2: GCC'nin march ayarı

-march=athlon-xp

İkinci paremetremiz ise -O flag'ı dır. (DIKKAT: Büyük O harfidir(Osmanın O harfi gibi), sıfır(0) rakamı ile karıştırmayın). Bu Flag'ımız gcc derleyicisini uygun hale getiren sınıflandırmasıdır. Verilebilir sınıflardan bazıları s (for size-optimized), 0 (zero - for no optimizations), 1, 2 veya 3 Flag'ı daha yüksek hız ulaştırmak için kullanılabilir. (Her sınıf kendinden ufak sınıfların Flag'larını miras alablir. Mesela bir Sınıf-2 uygun hale getirme seçeneği olarak kullanmak istersek:

Kod Listeleme 5.3: GCC O değişkeninin ayarları

-O2

Bunların dışında çok kullanılan uygun hale getiren Flag'lerden bazıları -pipe (geçici dosyalar yerine farklı tercüme aşamalarındaki iletişimde pipe kullanıyor) ve fomit-frame-pointer (bu seçenekle fonksiyonlar için kullanılan Frame Pointer ihtiyaç duymadığında kayıt tutulmuyor).

CFLAGS CXXFLAGS değişkenlerinde birden fazla uygunlaştırma flag'leri birleştirerek kullanılabiliniz; aşağıdaki örneğimizde olduğu gibi:

Kod Listeleme 5.4: CFLAGS ve CXXFLAGS değişkenlerinin tanımlanması

CFLAGS="-march=athlon-xp -pipe -O2"
CXXFLAGS="${CFLAGS}"                  # Her iki değişken için aynı ayarları kullan

MAKEOPTS

MAKEOPTS değişkeniyle kaç tane paralel derleme işleminin bir paketi derlerken çalışmasını belirleriz. Tavsiye edilen sayı makinemizde bulunan işlemci sayısının bir fazlasıdır.

Kod Listeleme 5.5: Basit tek işlemcili bir makina için MAKEOPTS değişkeni

MAKEOPTS="-j2"

Hepsi Bu Kadar

/mnt/gentoo/etc/make.conf dosyanızı kaydedin ve şimdi Gentoo Temel Sisteminin Kurulması ile devam edebilirsiniz.

6. Gentoo Temel Sisteminin Kurulması

6.a. Chrooting

İsteğe Bağlı: Yansı Seçimi

Eğer sisteminizi Gentoo LiveCD ile başlattıysanız, /etc/make.confdosyanızı aynı Portage ve kaynak kodlarını kullanan en hızlı yansıları bulup, güncellemesi için mirrorselectkullanabilirsiniz. (İnternet bağlantısına ihtiyaç duyar):

Kod Listeleme 1.1: En hızlı yansıları seçme

# mirrorselect -a -s4 -o >> /mnt/gentoo/etc/make.conf

Eğer herhangi bir nedenle mirrorselect çalışmazsa paniklemeyin. Bu kısım isteğe bağlıdır, öntanımlı ayarlarda yeterli olacaktır.

DNS Bilgisini Kopyalamak

Yeni ortama geçmeden önce /etc/resolv.conf dosyasındaki DNS bilgilerinin kopyalanması gerekiyor. /etc/resolv.conf ağınızın Nameserver'larını içeriyor.

Kod Listeleme 1.2: DNS bilgisinin kopyalanması

( "-L" parametresi gereklidir. Aksi taktirde sadece sembolik bağlantı (link) yapabilir.
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Yeni Ortama Giriş Yapmak

Şimdi tüm bölümler hazırlandı ve temel ortam yüklendi, yeni ortama chrooting yoluyla giriş yapma zamanı. Bu şu anki yükleme ortamından (LiveCD ya da başka bir yükleme yöntemi), sizin yükleme sisteminize geçeceğimiz anlamına geliyor. (kısaca hazırlanmış HDD bölümlerine).

chrooting yöntemi üç adımda tamamlanıyor. İlk önce kök dizinimizi / (yükleme ortamındaki), /mnt/gentoo (sizin HDD bölümünüzdeki) olarak değiştiriyoruz. Sonra env-update kullanarak (ortam değişkenlerini yaratması için) yeni ortamı yaratıyoruz. Son olarak, bu değişkenleri source komutunu kullanarak sistem belleğine yüklüyoruz.

Kod Listeleme 1.3: Yeni ortam için "chroot" işlemi

# chroot /mnt/gentoo /bin/bash
# env-update
Regenerating /etc/ld.so.cache...
# source /etc/profile

Tebrikler! Şu an kendi Gentoo Linux ortamınızdasınız. Elbette kurulumun bitmesine henüz uzağız :-)

İsteğe Bağlı: Portage'i Güncellemek

Eğer bir önceki bölümde Portage paket listesini yüklemediyseniz, İnternet üzerinden Portage indirmeniz gerekmektedir. emerge sync bunu sizin için yapar. Diğer kullanıcılar bu kısmı geçerek USE Değişkeninin Yapılandırması bölümünden devam edebilirler.

Kod Listeleme 1.4: Portage'i Güncellemek

# emerge sync
(Eğer rsync kullanamıyorsanız, "emerge-webrsync" (sizin için bir Portage paket listesi indirip, kuracak) kullanın.)
# emerge-webrsync

Eğer Portage'in yeni bir sürümünün olduğuna ve Portage'i güncelleyebileceğinize dair bir uyarı alırsanız, iptal edebilirsiniz. Portage kurulum sırasında güncellenecektir.

USE Değişkeninin Yapılandırması

USE , Gentoo'nun kullanıcılarına sunduğu çok güçlü bir değişkendir. Bir çok program mutlak nesneler için isteğe bağlı seçeneklerle ya da seçenek olmadan derlenebilir. Örnek olarak, bazı programlar gtk desteği ile, ya da qt desteğiyle derlenebilir. Diğerleri SSL desteği ile ya da SSL desteği olmadan derlenebilir. Hatta bazı programlar X11 desteği (X-server) yerine framebuffer (svgalib) desteği ile derlenebilir.

Çoğu dağıtım, paketleri olabildiğince destek ile derler, programların boyutunu ve çalışma zamanını arttırmak için bağımlılık hatalarını belirtmemeye özen gösterir. Gentoo ile bir paketin hangi seçeneklerle derleneceğini belirtebilirsiniz. İşte burada USE rol alıyor.

USE değişkeni ile derleme seçeneklerinde bulunan anahtar kelimeleri belirtebilirsiniz. Örnek olarak,vssl anahtarı, ssl destekleyen programları ssl desteği ile kuracaktır. -X X-server desteğini kaldıracaktır (eksi işareti önde olmalıdır). gnome gtk -kde -qt programlarınızı gnome (ve gtk) desteği ile, fakat kde (ve qt) desteği olmadan derleyecektir. Sisteminizi tamamiyle GNOME'a uyumlu hale getirecektir.

Öntanımlı USE ayarları /etc/make.profile/make.defaults içindedir./etc/make.conf dosyasında belirttiğiniz değişkenler, bu öntanımlı ayarların ardından hesaplanmıştır.Eğer USE yarlarına herhangi bir şey eklediyseniz, o seçenek öntanımlı listeye eklenir. Eğer USE ayarlarından herhangi bir şey kaldırdıysanız (seçeneğin önüne eksi işareti koyarak) o seçenek öntanımlı listeden çıkarılır (eğer ön tanımlı listede bulunuyorsa). Asla /etc/make.profile dizininde bir değişiklik yapmayın; Portage'i güncellediğinizde bu dizin yeniden yazılacaktır!

USE değişkeninin tam bir açıklaması Gentoo El Kitabı'nın ikinci bölümünde bulabilirsiniz; Bölüm 1: USE flags. Ayrıca tam bir başka açıklamayı sisteminizde /usr/portage/profiles/use.desc dosyasında da bulabilirsiniz.

Kod Listeleme 1.5: Kullanılabilir USE seçeneklerini görme

# less /usr/portage/profiles/use.desc

Bir örnek olarak KDE tabanlı; DVD, ALSA ve CD yazma için bir sistemin USE ayarlarını gösterelim:

Kod Listeleme 1.6: /etc/make.conf dosyasını açma

# nano -w /etc/make.conf

Kod Listeleme 1.7: USE ayarları

USE="-gtk -gnome qt kde dvd alsa cdr"

İsteğe Bağlı: Dağıtım Derleme Kullanımı

Eğer sistemlerin koleksiyonunu yapmakla ilgileniyorsanız, bizimDistCC Rehberimize göz atmak isteyebilirsiniz. Distcc kullanarak, bir çok sistemin işlemci gücüne ek olarak kurulum da kullanabilirsiniz.

6.b. Aşama1(Stage1), Aşaram2(Stage2) ve Aşama3(Stage3) Arasındaki Farklar

Şimdi rahatlayın ve bundan sonraki adımları düşünün. Size aşama1, aşama2 ve aşama3'den birini seçmenizi söylemiştik ve bu seçimlerin kurulum sırasında sonraki adımlar için önemli olduğu konusunda uyarmıştık. İşte burası yaptığınız seçeneğin sonraki adımları etkileyeceği ilk yer.

6.c. Aşama1(Stage1)'den Aşama2(stage2)'ye İlerleme

Bootstrapping Girişi

Şimdi siz her şeyi gelişi güzel derlemek istiyorsunuz öyle mi? Tamam o zaman :-)

Bu adımlarda, Gentoo sisteminizinbootstrap'nı jazırlayacagız. Bu işlem uzun zaman sürer, fakat kullanıma en iyi derecede ayarlanmış, sıfırdan başlayarak makinenizin ihtiyaçları için hazırlamak en iyi sonucu verir.

Bootstrapping şu anlama gelmektedir: GNU C kütüphanesi, GNU Derleyici Koleksiyonu ve bir kaç anahtar sistem programını yapmaktır.

Bootstrapping'e başlamadan önce, size isteyebileceğiniz ya da istemeyeceğiniz bir kaç seçeneği listeleyeceğiz. Eğer bunları okumak istemiyorsanız,Sistemi Bootstrapping İşleminden Geçirme bölümünden devam edin.

İsteğe Bağlı: Derleme Süresini Azaltma

Eğer bootstrapping işlemini hızlandırmak istiyorsanız, java desteğini seçmeyebilirsiniz. Bu GNU Derleme Koleksiyonu ve GNU C kütüphanesi; java desteği olmadan (bu derleme süresini düşürecektir) derleneceği anlamına geliyor. Bu durumda GNU Java Derleyicisi (gcj) sistemde olmayacak, fakat bu java uygulamalarını ve diğer java malzemelerini kullanamayacağınız anlamına gelmiyor.

Java desteğini kapatmak için, bootstrap scriptini başlatmadan önce USE="-java" seçeneğini kullanın.

Kod Listeleme 3.1: Java desteğini kapatma

# export USE="-java"

Bootstrapping'den sonra değişkenleri unset işleminden geçirmeyi unutmayın:

Kod Listeleme 3.2: USE değişkenini unset işleminden geçirme

# unset USE

İsteğe Bağlı: Önce Kaynakları İndirme

Eğer önce tüm kaynakları kopyalamadıysanız, bootstrap scripti tüm gerekli dosyaları indirecek. Bootstrap bu internet bağlantısı gerektirir demeden çalışmaya koyulacaktır :-) Eğer kaynakları bootsprap işleminden önce ve sonra indirmek istiyorsanız (örnek olarak, eğer derleme esnasında internet bağlantısını açmak istemiyorsanız), bootstrap'in -f parametresini kullanınız (bu tüm kaynak kodlarını sizin için alacak).

Kod Listeleme 3.3: Gerekli Kaynakları İndirme

# cd /usr/portage
# scripts/bootstrap.sh -f

Sistemi Bootstrapping İşleminden Geçirme

Tamam o zaman, klavyenizi alın ve bootstrap'i başlatmak için sıradaki komutları kullanın. Daha sonra kendinize meşgul olacak birşey bulun çünkü bu adım biraz uzun zaman alacak :-)

Kod Listeleme 3.4: Sistemi Bootstrapping işleminden geçirme

# cd /usr/portage
# scripts/bootstrap.sh

Eğer önceden /etc/make.conf içindeki CHOST ayarlarında değişiklik yaptıysanız, bazı değişkenleri GCC'nin hızlı çalışması için belli bir düzende tekrar hazırlamanız gerekir:

Kod Listeleme 3.5: Ortam Değişkenlerini Tekrar Hazırlama

# source /etc/profile

Şimdiki adımımız : Aşama2'den Aşama3'e İlerleme.

6.d. Aşama2'den Aşama3'e İlerleme

Giriş

Eğer bu bölümü okuyorsanız, sistemi bootstrap işleminden geçirdiniz (çünkü öncesinde bootstrap işlemini yaptınız yaaşama2'ikullanıyorsunuz). Şimdi tüm sistem paketlerini kurmanın zamanı geldi.

Tüm sistem paketleri? Hayır, tam olarak böyle değil. Bu adımda, kullanmak için başka alternatifi olmayan paketleri kuracaksınız. Bazı sistem paketleri bir kaç alternatife sahip (sistem kayıtçıları gibi) ve Gentoo tamamen seçenekler hakkında. Size sadece bir tanesi konusunda baskı yapmak istemiyoruz.

İsteğe Bağlı: Bitirilecekleri Görme

Eğer hangi paketlerin kurulacağını görmek istiyorsanız, emerge --pretend system komutunu kullanın. Bu kurulacak bütün paketleri gösterecektir. Eğer liste çok büyük görünüyorsa, less ya da more gibi bir sayfalayıcı da kullanabilirsiniz.

Kod Listeleme 4.1: 'emerge system' komutunun Neler Yapacağını Görme

# emerge --pretend system | less

İsteğe Bağlı: Kaynakları İndirme

Eğer emerge 'nin siz devam etmeden önce kaynakları indirmesini istiyorsanız (örnek olarak, eğer paketlerin kurulumu esnasında internet bağlantısını açmak istemiyorsanız), emerge'ün --fetchonly seçeneğini kullanabilirsiniz (bu tüm kaynakları sizin için alacaktır)

Kod Listeleme 4.2: Kaynak Kodları Alma

# emerge --fetchonly system

Sistemi Kurma

Sistemi kurmaya başlamak için, emerge system komutunu kullanın. Sonra kendinizi meşgul edecek başka bir daha bulun çünkü bu işlemde biraz uzun zaman alacak.

Kod Listeleme 4.3: Sistemi Kurma

# emerge system

Güncellenmiş bir yapılandırma dosyasına dair herhangi bir uyarı alırsanız, güvenle uyarıyı görmezden gelebilirsiniz (ignore) (ve etc-update çalışırken). Gentoo sisteminiz tam olarak kurulup, başlatıldığında dökümantasyonumuzu okuyun:Configuration File Protection.

Tüm kurulum işlemleri tamamlandığında, Kernel Yapılandırması ile devam edin: Kernel Yapılandırma.

7. Kernel Ayarları

7.a. Sistem Saat Diliminin Ayarlanması

Sisteminize ilk önce hangi saat diliminde bulunduğunu söylemeniz gereklidir. Bunun için /usr/share/zoneinfo dizini altında size uyan saat dilimini bulun ve ln komutu yardımı ile /etc/localtimeolarak yönlendirin(link edin):

Kod Listeleme 1.1: Saat diliminin ayarlanması

# ls /usr/share/zoneinfo
(Örnek: Türkiye)
# ln -sf /usr/share/zoneinfo/GMT /etc/localtime

7.b. Kernel Kaynak Kodunun Kurulması

Kernel Seçimi

Bütün Linux satıcılarının bir araya topladığı programların temeli linux kernele dayanır. Kernel kullanıcı programları ile sistemdeki donanım arasında iletişimi sağlar. Gentoo da bütün kullanıcılarına çeşitli kernel kaynak kodları sunmaktadır. Bu çeşitli Kernel kaynaklarını ve açıklamalarını 'Gento Kernel Guide' bölümünde bulabilirsiniz: Gentoo Kernel Guide.

AMD64 basisli sistemler için gentoo-dev-sources (2.6er Kernel , amd64' e özel yamalar ile sağlamlığı yapılmış ve performansı artırılmış).

Kernel kaynağını seçin ve emerge komutuyla kurun.

Aşağıdaki örneğimizde vanilla-sources-2.4.24 (Ağ oratamı olmadan kernel kurulumu için ideal olan seçim ). Tabi siz kendi seçtiğiniz kernel kaynağını kurmanız gereklidir. Bu sadece bir örnektir:

Kod Listeleme 2.1: Kernel kaynak kodunun kurulması

# emerge gentoo-dev-sources

Eğer şimdi /usr/src dizinine bakarsanız, linuxadında bir dizinin oluştuğunu ve kernel sürümüne bağlandığını (link) görürsünüz:

Kod Listeleme 2.2: Kernel kaynak koduna sembolik bağlantı oluşturulması

# ls -l /usr/src/linux
lrwxrwxrwx    1 root     root           12 Oct 13 11:04 /usr/src/linux->linux-2.6.5-gentoo

Eğer linux dizini başka bir dizine bağlı gözüküyorsa, kullandığınız kernel kaynağını ve sürüm numarasını tekrar kontrol edin veya kendi eliniz ile aşağıdaki komutu verip bağlayın:

Kod Listeleme 2.3: Kernel kaynak koduna yapılan sembolik bağlantının değiştirilmesi

# rm /usr/src/linux
# cd /usr/src
# ln -s linux-2.6.5-gentoo linux

Şimdi kernelinizi kendi donanımınıza göre ayarlayabilir ve sonra derleyebilirsiniz. Bütün kernel yapılarında genkernel komutunu kulllanabilirsiniz. Bu sayede LiveCD de kullanınan generik kernelin bir benzeri oluşturulur. Ama şimdi ilkönce 'elile' nasıl ayarlayabileceğinizi aktaracağız. Çünkü bu sayede, yani elile ayarlamada kendi donanımınızı en iyi şekilde ayarlama imkanınız olur.

Eğer kerneli eliniz ile kendiniz ayarlamak istiyorsanız Varsayılan: Elile Kernel Ayarlama bölümü ile devam edin. Eğer genkernelotomatik kernel derleme için genkernel kullanıp, herşeyin otomatik olarak derlenmesini istiyorsanız. Eğer genkernel kullanacaksanız Seçmeli: Genkernel Kullanımı bölümü ile devam edin.

7.c. Varsayılan: Elile Ayarlama

Gerekli Secenekleri Etkinleştirmek

İlk önce geliştirme ve deneysel kullanıma izin veren kod sürücülerinin blunduğu bölümü seçmeniz gerekli. Bu bölüm gereklidir, çünkü bazı önemli Kod/Sürücü (code/drivers) bölümlerinin menülerde bulamazsınız. Onun için bu bölümü muhakkak işaretleyin:

Kod Listeleme 3.1: Selecting experimental code/drivers

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers

Sonra File Systems bölümüne gişdin ve kullancağınız dosya sistemlerini seçin. Bu dosya sistemlerini MODUL olarak seçmeyizin. , çünkü modul olarak bu dosya sistemlerini Gentoo Linux altında kullanmazsınız..Tercihen Y eçerek kernel içine gömün. Seçimizine Virtual memory, /proc file system, /dev file system + Automatically mount at boot bölümlerinide ekleyin:

Kod Listeleme 3.2: Gerekli dosya sisteminin seçilmesi

File systems --->
  [*] Virtual memory file system support (former shm fs)
  [*] /proc file system support
  [*] /dev file system support (EXPERIMENTAL)
  [*]   Automatically mount at boot

(Şayet 2.6 Kernel kullanmıyorsanız aşağıdaki bölümü seçmeyin)

  [ ] /dev/pts file system for Unix98 PTYs

(Kendi ihtiyacınıza göre aşağıdaki dosya sistemlerini seçin)

  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

Not: 2.6 Kernel kullanıcıları aşağıdaki bölümlerde diğer gerekli seçenekleri bulabilirler:Pseudo filesystems, File systems bölümü altında .

İnternete PPPoE (genelde ADSL de kullanılır) veya dial-up modem kullanarak çıkmayı planlıyorsanız aşağıdaki seçeneklere ihtiyacınız olacak:

Kod Listeleme 3.3: Auswählen PPPoE notwendiger Treiber

Network device support --->
  <*> PPP (point-to-point protocol) support
  <*>   PPP support for async serial ports
  <*>   PPP support for sync tty ports

Not: 2.6 Kernel kullanıcıları bu seçenekleri Networking support, ( Device Drivers alt bölümünde) bölümünde bulabilirler..

Aşağıdaki iki seçenekler zarar gelmeyecektir fakat o kadarda gerekli değil. Mesela PPP over Ethernet seçenekleri ve rp-pppoe tarafından kullanılır. (Eğer PPPoE kernel modulu kullanılırsa).

Not: 2.6 Kernel kullanıcıları bu ayarları Device Drivers bölümünde bulabilirler.

Ağ kartınızın desteğini kernelden aktif etmeyi unutmayın.

Kullandığınız mimariye göre bazı seçenekleride aktif etmeniz gerekbilir.:

Eğer Multi-CPU Opteron System sahibi iseniz "Symmetric multi-processing support" etkinleştirin:

Kod Listeleme 3.4: Aktivieren der SMP Unterstützung

Processor type and features  --->
  [*] Symmetric multi-processing support

Kernel ayarlarınız bittiyse Derleme ve Kurulum ile devam edebilrisiniz.

Gerekli Seçeneklerin Seçilmesi

İlk önce geliştirme ve deneysel kullanıma izin veren kod sürücülerinin blunduğu bölümü seçmeniz gerekli. Bu bölüm gereklidir, çünkü bazı önemli Kod/Sürücü (code/drivers) bölümlerinin menülerde bulamazsınız. Onun için bu bölümü muhakkak işaretleyin:

Kod Listeleme 3.5: Selecting experimental code/drivers

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers

Sonra File Systems Sonra File Systems bölümüne gidiyoruz ve dosya sistemlerinin desteğini sağlayan bölümü geçip, kullanmak istediğimiz veya bize gerekli olan dosya sistemlerini seçiyoruz.Burdaki modulları tercihen gömülü (Y) olarak seçin. Aksi taktirde yeni Gentoo sisteminiz sabit sürücünüzdeki (harddisk) bölümleri görmeyebilir( yani mount etmeyebilir). Seçimizine Virtual memory, /proc file system, /dev file system + Automatically mount at boot bölümlerinide ekleyin:

Kod Listeleme 3.6: Gerekli dosya sisteminin seçilmesi

File systems --->
  [*] Virtual memory file system support (former shm fs)
  [*] /proc file system support
  [*] /dev file system support (EXPERIMENTAL)
  [*]   Automatically mount at boot

(Şayet 2.6 Kernel kullanmıyorsanız aşağıdaki bölümü seçmeyin)
  [ ] /dev/pts file system for Unix98 PTYs

(Kendi ihtiyacınıza göre aşağıdaki dosya sistemlerini seçin)
  <*> Reiserfs support
  <*> Ext3 journalling file system support
  <*> JFS filesystem support
  <*> Second extended fs support
  <*> XFS filesystem support

Not: 2.6 Kernel kullanıcıları aşağıdaki bölümlerde diğer gerekli seçenekleri bulabilirler:
Pseudo filesystems, ( File systems bölümü altında).

İnternete PPPoE (genelde ADSL de kullanılır) veya dial-up modem kullanarak çıkmayı planlıyorsanız aşağıdaki seçeneklere ihtiyacınız olacak:

Kod Listeleme 3.7: Selecting PPPoE necessary drivers

Network device support --->
  <*> PPP (point-to-point protocol) support
  <*>   PPP support for async serial ports
  <*>   PPP support for sync tty ports

Not: 2.6 Kernel kullanıcıları bu seçenekleri Networking support, ( Device Drivers alt bölümünde) bölümünde bulabilirler.

Aşağıdaki iki seçenekler zarar gelmeyecektir fakat o kadarda gerekli değil. Mesela PPP over Ethernet seçenekleri ve rp-pppoe tarafından kullanılır. (Eğer PPPoE kernel modulu kullanılırsa).

Ağ kartı kullanıyorsanız, gerekli modulları kernel içine dahil etmeyide unutmayın.

Eğer bir HyperThereading destekli Intel CPU sahibi iseniz veya multi-CPU sistem kullanıyorsanız, "Symmetric multi-processing support" desteğini etkin hale getirebilirsiniz:

Kod Listeleme 3.8: SMP desteğini etkinleştirmek

Processor type and features  --->
  [*] Symmetric multi-processing support

Kendinize özel diğer gerekli seçimi yaptıysanız artık Derleme ve Kurulum bölümü ile devam edebiliriz.

Derleme ve Kurulum

Artık Kernel derleme için gerekli seçimi yaptınız ve kerneli derleme için gerekli adımı atmaya geldi. Menüden çıkın ve make dep && make bzImage modules modules_install komutlarını çalıştırın:

Kod Listeleme 3.9: Kernel derleme

# make && make modules_install

Kernel derleme işlemi bittikten sonra, oluşan kernel image dosyasını /bootdizini altına kopyalayın.

Kod Listeleme 3.10: Kernel kurulumu

# cp arch/x86_64/boot/bzImage /boot/kernel-2.6.5-gentoo

Ne olur ne olmaz hesabı ile, kernel ayar dosyamızıda /boot dizini altına kopyalıyoruz. Belki ilerde ihtiyacımız olabilir. :)

Kod Listeleme 3.11: Kernel ayar dosyasını yedekleme

# cp .config /boot/config-2.6.5-gentoo

Şimdi Değişik Kernel Modullarının Kurulması bölümüne gidebilirsiniz.

7.d. Alternatif: Genkernel Kullanımı

Bu bölümü okumanızdaki amaç, Gentoo da kullanılan genkernel skriptini kullanmazı düşündüğünüz içindir. Bu skript aslında bütün işinizi kolaylaştıran bir skripttir.

Kernel kaynak kodu sisteminize kurulu ve şimdi otomatik olarak bütün işlerinizi kolaylaştıracak genkernel komutunu uygulayabilirsiniz. genkernel ilk önce kernel seçimini yapar. Bunun için LiveCD de seçilen seçenekleri esas alır. Bunun anlamı; boot esnasında tanınan bütün donanım kernel seçiminde kullanılır. genkernel çalıştırıldıktan sonra elile bir ayar gerektirmediği için, Linux ve kernel dünyasına yabancı ama kendi özel kernelini derlemek isteyen Gentoo kullanıcıları için ideal bir çözümdür.

Sırası ile Genkernel nasıl kullanabilirsiniz kısaca aktaralım. İlk önce sistemimize genkernel kurmamız gerekli:

Kod Listeleme 4.1: genkernel kurulumu

# emerge genkernel

Kernel kaynak kodunun genkernel all yardımı ile derleyebilirsiniz. Burda bir açıklama yapmamız gerekli: genkernel komutu ile kernel derlemek, bütün donanımı destekleyen bir derleme seçeneğidir. Bununda anlamı, derleme süresinin oldukça uzun sürebileceğidir. Yani bu işlemler yapılırken ekranda hiçbir haraket olmadı diye kernel derleme olayını yarıda bırakmayın veya sisteminizi kapatmayın.!

Şunuda belirtmekte yarar var: Eğer kullandığınız boot bölümü (boot partition) ext2 veya ext3 değilse, kendiniz kernel ayarları yapmak için genkernel --menuconfig all komutunu verin ve bu dosya sistemlerini kernel içine gömün ( DIKKAT: Modul olarak seçim yapmayın)

Kod Listeleme 4.2: genkernel komutunu uygulamak

# genkernel all

genkernel biter bitmez, yeni bir kernel imagesi, tüm modullar ve bir initial root disk (initrd) oluşturulmuş olur. Eğer bir önyükleyici (bootloader) kullanmak istiyorsanız, oluşan yeni kernel imagesi ve initrd daha sonra burda kullanılabilirsiniz. Bunların isimlerini bir kenara not alın. initrd doğrudan boot bittikten sonra donanımın tanınması için kullanılır. Böylece sisteminizdeki donanım için gerekli olan sürücüler otomatikman yüklenir.

Kod Listeleme 4.3: Kernel imagesinini kontrolu

# ls /boot/kernel* /boot/initrd*

Sırada sistemimizin LiveCD olmaktan kurtaracak hotplug aracını emerge ediyoruz. Donanım initrd tarafından otomatik olarak tanınırken(yani sisteminizi başlatmak için gerekli olan modulları tanırken) hotplug ise otomatik olarak diğer donanımları tanır(örn: USB cihazlarınız gibi). hotplug pakedini kurup, etkin hale sokmak için aşağıdaki komutu vermeniz yeterlidir:

Kod Listeleme 4.4: Hotplug kurulumu ve etkinleştirilmesi

# emerge hotplug
# rc-update add hotplug default

7.e. Değişik Kernel Modullarının Kurulması

Özel Modulların Kurulması

Eğer uyum sağlarsa emerge komutunu kullanarak bütün donanımınızın sürücülerini kurabilirsiniz. Aşağıda sık kullanılan bazı modullar ve ebuilds isimlerini bulabilirsiniz:

Ebuild Açıklama Komut

Lütfen bu Ebuilds dosyalarının büyük bağımlılıklarıda beraberinde getirebileceklerini untumayın. Kurmak istediğiniz pakedin bağımlı olduğu paketleri bulmak için emerge --pretend kullanabilirsiniz.. Örnek : emu10k1 Pakedi için:

Kod Listeleme 5.1: Bağımlılıkların kontrol edilmesi

# emerge --pretend emu10k1

Kurulacak paketleri istemiyorsanız, emerge --pretend --verbose komutunu vererek, hangi USE-Flags bagımlılıklarına etki yapalabilir görebilirsiniz. Bu sayede istemediğiniz ve bağımlılık gerektiren bir pakedin birlikte derlenmesini engelleyebilirsiniz:

Kod Listeleme 5.2: USE-Flag kullanımı

# emerge --pretend --verbose emu10k1
...
[ebuild  N    ] media-sound/aumix-2.8  +gpm +nls +gtk +gnome +alsa -gtk2

Yukardaki örnekte de görebileceğiniz gibi emu10k1 için bağımlı paketler(aumix) gtk ve gnome USE-Flags içinde. Bunun anlamı gtk da birlikte derleneceğidir.

Eğer bütün bu bağımlılıkların birlikte derlenmesini istemiyorsanız USE-Flag kullanarak bunları etkisiz hale getirebilirsiniz:

Kod Listeleme 5.3: emu10k1 için USE-Flag kullanarak gerekliliklerden vazgeçmek

# USE="-gpm -nls -gtk -gnome -alsa" emerge --pretend emu10k1

Eğer sonuçtan memnun iseniz --pretend parametresini kaldırın ve emu10k1 derlemeye başlayın.

Modulların Ayarlanması

Otomatik olarak yüklenmesini istediğiniz modulları /etc/modules.autoload.d/kernel-2.4 dosyasına ( veya kernel 2.6 kullananlar için /etc/modules.autoload.d/kernel-2.6) koyabilirsiniz. Eğer kullandığınız modul ilave bir parametre gerektiyorsa veya siz ilave bir parametre eklemek istiyorsanız bu dosya içine koyabilirsiniz.

Mevcut Modulların listesini görmek için find komutunu kullanabilirsiniz. Aşağıdaki komutdaki "<kernel_sürümüm>" bölümüne kendi kernel sürümünüzü yazıp kontrol edin:

Kod Listeleme 5.4: Mevcut modulların listelenmesi

# find /lib/modules/<kernel_sürümüm>/ -type f -iname '*.o' -or -iname '*.ko'

Mesela 3c59x.o Modulunu otomatik olarak, başlangıçda yüklemek istiyorsanız, /etc/modules.autoload.d/kernel-2.4 (veya kernel-2.6) dosyasının içine bunu yazmanız gerekir.:

Kod Listeleme 5.5: /etc/modules.autoload.d/kernel-2.4

(2.4 kernel için bir örnek)
# nano -w /etc/modules.autoload.d/kernel-2.4

Kod Listeleme 5.6: /etc/modules.autoload.d/kernel-2.4 veya kernel-2.6

3c59x

Ve aktif hale getirmek için modules-update komutunu çalıştırın. Böylece /etc/modules.conf dosyasının içindeki değişiklikler etkinleşecektir:

Kod Listeleme 5.7: modules-update komutunun uygulanması

# modules-update

Şimdi Sistem Ayarlarının Yapılması bölümü ile devam edebiliriz.

8. Sisteminizin Ayarlanması

8.a. Dosya Sistem Bilgileri

fstab nedir?

Linux altında tüm sabit disk bölümleriniz /etc/fstab dosyasında listeli bir şekilde bulunur. Bu dosya sabit disklerinizin bağlantı noktalarını, nasıl bağlandıklarını (spesifik özellikleri ile birlikte) göstermektedir.

/etc/fstab Dosyasının Oluşturulması

/etc/fstab 'ın kendine özel bir sözdizimi(syntax) vardır. Her satır 6 alan içerir ve birbirinden boşluk karakteri ile ayrılır. Her alanın kendine ait anlamı bulunmaktadır.

Şimdi nano editörümüzle /etc/fstab dosyamızı yaratmaya geldi,bunun için:

Kod Listeleme 1.1: etc/fstab dosyasının oluşturulması

# nano -w /etc/fstab

/boot sabit disk bölümümüzün nasıl yazıldığını dikkatle inceleyelim. Bizim örneğimizde /boot sabit disk bölümü /dev/hda1 olarak ext2 dosya sistemini kullanmaktadır. Otomatik olarak bağlanamaz. Ohalde bize gerekli olan satırlar şöyle olabilir:

Kod Listeleme 1.2: /etc/fstab dosyası içindeki /boot satırı

/dev/hda1   /boot     ext2    noauto        1 2

Bazı kullanıcılar performansı daha arttırmak için bağlama seçeneklerinden olan noatime 'ı eklemek ister (aslında bu gerekli değildir):

Kod Listeleme 1.3: /etc/fstab daki /boot dizinin geliştirilmesi

/dev/hda1   /boot     ext2    noauto,noatime    1 2

Eğer bu şekilde devam edersek, liste sonunda aşağıdaki gibi bir görünüme sahip olmuş olacağız:

Kod Listeleme 1.4: /etc/fstab taki 3 satır

/dev/hda1   /boot     ext2    noauto,noatime    1 2
/dev/hda2   none      swap    sw                0 0
/dev/hda3   /         ext3    noatime           0 1

Bitirmek için /proc, tmpfs(gerekli) ve cd-rom sürücünüz için gerekli olanlar: (tabi ki de başka sürücüler ve sabit disk bölümleri ekleyebilirsiniz):

Kod Listeleme 1.5: Tam bir /etc/fstab örneği

/dev/hda1   /boot     ext2    noauto,noatime    1 2
/dev/hda2   none      swap    sw                0 0
/dev/hda3   /         ext3    noatime           0 1

none        /proc     proc    defaults          0 0
none        /dev/shm  tmpfs   defaults          0 0

/dev/cdroms/cdrom0    /mnt/cdrom    auto      noauto,user    0 0

auto seçeneği dosya sistemini otomatik olarak tanınmasını sağlar ( CD rom gibi farklı dosya sistemlerini içeren değiş tokumu yapılabilir multimedya cihazları için tavsiye edilir). user seçeneği kullanıcılara CDROM u mount etmesini sağlar.

Şimdi yukarıdaki örneği kullanarak kendi /etc/fstab dosyasını yaratın.Eğer SPARC kullanıcı sı iseniz /etc/fstab dosyasına ayrıca şunu da eklemelisiniz:

Kod Listeleme 1.6: /etc/fstab ,ç,ne openprom dosya sstemi ekleme

none        /proc/openprom  openpromfs    defaults      0 0

Eğer usbfs ihtiyaç duyuyorsanız (ki yeni bilgisayarlada muhakkak bir USB cihazınız vardır) , aşağıdaki satırı da ekleyiniz:

Kod Listeleme 1.7: /etc/fstab içine USB dosya sistemini ekleme

none        /proc/bus/usb   usbfs         defaults      0 0

Şimdilik bukadar. Yaptıklarınızı tekrar tekrar kontrol edin ve /etc/fstab dosyasın kaydedip çıkın.

8.b. Ağ Bilgileri

Makine Adı,Alan Adı ve diğerleri

Kullanıcı kişinin diğer seçeneklerinden bir tanesi, bilgisayarına isim vermektir. Bu tamamıyla çok basittir, fakat kullanıcıların çoğu Linux sistemlerine isim bulmakta biraz zorlanırlar. İşlemlerimizin hızını arttırmak için biz bir şeyler hazırladı, bilmenizde fayda var, seçtiğiniz isim sonradan da değiştirilebilir. Biz hepimiz için bir isim bulduk, bu isimleri vererek sonrasında istediğiniz şekilde değiştirebilirsiniz. Şimdi makine ismi olarak tux, alan adı olarak ise homewetwork giricegiz.

Bu değerleri şimdiki aşağıdaki örnekde kullanıyoruz. İlk önce makina adını koyalım:

Kod Listeleme 2.1: Makine ismini ayarlamak

# echo tux > /etc/hostname

Sonra alan ismini koyuyoruz:

Kod Listeleme 2.2: Alan ismini ayarlamak

# echo homenetwork > /etc/dnsdomainname

Eğer NIS alan ismine sahipseniz aşağıdaki kodu giriniz.NIS 'in ne olduğunu bilmiyorsanız muhtemelen NIS alan adına sahip değilsiniz:

Kod Listeleme 2.3: NIS alan adının ayarlanması

# echo nis.homenetwork > /etc/nisdomainname

Şimdi alan ismi(domainname) komut dosyasını ön tanımlı "runlevel" için ekleyiniz.:

Kod Listeleme 2.4: Öntanımlı çalışma seviyesine makina ismi ekleme

# rc-update add domainname default

Ağ Biçimlendirmesi

"Hey biz bu bölümü yaptık demeden önce" , hatırlamanız gereken başlangıçtaki ağ ayarlarımız sadece kurulum içindi.Şimdi sıra kalıcı bir şekilde ağınızı biçimlendirmeye geldi.

Ağ ile ilgili tüm bilgileriniz /etc/conf.d/net dosyasında toplanmıştır. Henüz ağınızı elle ayarlamasını bilmiyorsanız eğer, korkmayın biz size her şeyi aşağıda açıkladık:

İlk olarak nano editörü ile /etc/conf.d/net dosyasını açın:

Kod Listeleme 2.5: /etc/conf.d/net dosyasının açılması

# nano -w /etc/conf.d/net

Dosya içine ilk arayacağımız değişken iface_eth0 değişkenidir, aşağıdaki sözdizimine sahiptir:

Kod Listeleme 2.6: iface_eth0 syntaxis

iface_eth0="<ip adresiniz> broadcast <broadcast adresiniz> netmask <netmask adresiniz>"

Eğer DHCP (otomatik IP alıyorsanız) kullanıyorsanız, tek yapmanız gereken iface_eth0 değişkenini dhcp olarak tanımlamak (# işaretini kaldırmanız yeterli) . rp-pppoe(ADSL kullanıcıları için) kullanıyorsanız up olarak ayarlayın. Eğer ağınızı elle ayarlamak istiyorsanız ve bu terimlerle ilgili bilgiye sahip değilseniz Ağ Terminolijisi Anlamak bölümüne gidiniz.

Aşağıda sizin için bir kaç örnek verdik.İlki DHCP kullanmakta,ikincisi,sabit bit IP(192.168.0.2), ağ maskesi(255.255.255.0) ve yayımlama(193.168.0.255) adreslerini kullanmaktadır.Sonuncu ise rp-pppoe kullanımını göstermektedir.

Kod Listeleme 2.7: /etc/conf.d/net örnekleri

(DHCP kullanıcıları için)
iface_eth0="dhcp"

(Sabit IP kullananlar için)
iface_eth0="192.168.0.2 broadcast 192.168.0.255 netmask 255.255.255.0"
gateway="eth0/192.168.0.1"

(rp-pppoe kullanlar için)
iface_eth0="up"

Eğer birden fazla ağ arabirimine sahipseniz, iface_eth1 ve iface_eth2 gibi extra bir iface_eth değişkeni yaratmanız gerekli. Her bilgisayar için ayrı ağ geçidi girmelisiniz.

Şimdi dosyamızı kayıt ederek güvenli bir şekilde çıkabiliriz.

Ağ Servisimizin Otomatik Olarak Başlangıçda Başlatmak

Ağ servisinizi otomatik olarak başlatabilmek için,aşağıdaki komutları ön tanımlı "runlevel" ekleyiniz. Eğer PCMCIA arabirimine sahipseniz bunu geçin. PCMCIA arabirimini kullanınız.(belgenin sonlarına doğru biz bunu size açıkladık)

Kod Listeleme 2.8: Öntanımlı çalışma seviyesine (runlevel) net.eth0 eklenmesi

# rc-update add net.eth0 default

Birden fazla ağ arabirimine sahipseniz ,ayrıca net.eth1, net.eth2 gibi komut dosyalarını ln komutunu kullanarak oluşturmalısınız:

Kod Listeleme 2.9: İlaveten net.eth1 in oluşturulması

# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default

Ağ Bilgilerinin Yazılması

Linux'unuzu ağ hakkında haberdar etmelisiniz, örneğin 3 bilgisayardan oluşan iç bir ağa sahipseniz, bu bilgisayarları IP adresleriyle birlikte /etc/hosts dosyasına eklemelisiniz. Farz edelimki ağımızda 3 bilgisayar var ise aşağıdaki işlemleri yapabiliriz:

Kod Listeleme 2.10: /etc/hosts 'in açılması

# nano -w /etc/hosts

Kod Listeleme 2.11: Ağ bilgilerinin doldurulması

127.0.0.1     localhost
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny
192.168.0.7   tux.homenetwork tux

Eğer sisteminiz tekse, iç ağ'a sahip değilseniz yani 1 bilgisayarınız varsa, tek bir satır yeterli:

Kod Listeleme 2.12: Tek bir bilgisayar için /etc/hosts dosyası

127.0.0.1     localhost

Devam etmek için dosyadan kayıt ederek çıkınız.

Eğer PCMCIA 'a sahip değilseniz, Sistem Bilgileri bölümüne gidebilirsiniz. PCMCIA kullanıcıları PCMCIA le ilgili başlığı okuyunuz.

İsteğe Bağlı: PCMCIA Aygıtlarının Çalıştırılması

Not: pcmcia-cs pakedi sadece x86, amd64 ve ppc platformları için mevcuttur.

PCMCIA kullanıcıları ilk önce pcmcia-cs paketini yüklemeleri gerekli. Bu anda USE="-X" değişkeni Xfree86 dan sakınmak için gerekli:

Kod Listeleme 2.13: pcmcia-cs pakedinin kurulması

# USE="-X" emerge pcmcia-cs

pcmcia-cs paketi yüklendiği zaman ön tanımlı(default)çalışma seviyemize(runlevel) ekleyelim:

Kod Listeleme 2.14: pcmcia runlevel e eklenmesi

# rc-update add pcmcia default

8.c. Sistem Bilgileri

Gentoo /etc/rc.conf dosyası geniş bir sistem bilgisine sahiptir. Bu dosyayı açarak içerisindeki tüm bilgileri kullanabilirsiniz.:)

Kod Listeleme 3.1: /etc/rc.conf dosyanın açılması

# nano -w /etc/rc.conf

Görüldüğü gibi bu dosya sisteminiz için gerekli değişkenleri ayarlayabilmek için bir çok yoruma sahip ,KEYMAP ayarlarına dikkat ediniz, aksi taktirde klavyeden girilecek olan her yanlış KEYMAP için garip sonuçlar alabilirsiniz. Örn: Türkçe Q Klayve için kullanılabilecek satır :KEYMAP="trq"

Not: Usb tabanlı SPARC sistemleri ve klon kullanıcıları, i386 keymap olarak "us" yerine "sunkeymap" seçebilirler.

PPC birçok sistemde x86 "keymap" lerini kullanır. önyüklemede ADB "keymap" kullanmak isteyen kullanıcılar çekirdeklerindeki ADB anahtar kodlarını olanaklı kılmak zorunda ve /etc/rc.conf daki mac/ppc "keymap" lerini ayarlamaları gerekmektedir.

/etc/rc.conf dosyasını ayarlamayı bitirdiyseniz kayıt edip çıkabilirsiniz. Bir sonraki bölüme geçiniz: Önyükleyici Ayarlanması.

9. Önyükleyici Ayarlanması

9.a. Seçim Yapmak

Başlangıç

Şu ana kadar çekirdeğiniz doğru bir şekilde ayarlandı ve tüm gerekli sistem yapılandırma dosyalarınız doğru bir şekilde derlendi. Şimdi sıra geldi önyükleyicimizi kurmaya. Önyükleyici sisteminizi başlattığınızda karşınıza gelen programdır.

İsteğe Bağlı: FrameBuffer

Wenn Eğer kernelinizi Framebuffer desteği ile derlediyseniz, vga bildirisini önyükleyici ayarlarına eklemeniz gerekmektedir, eğer frame buffer kullanacaksanız;Aşağıdaki tabelada vga değerlerini bulabilirsiniz. Bizim örneğimizde 800x600 @ 16bpp, 788 değerlerini kullanacağız.

640x480 800x600 1024x768 1280x1024
8 bpp 769 771 773 775
16 bpp 785 788 791 794
32 bpp 786 789 792 795

Hatırlatma gereği duyuyoruz; yukarıdaki değerlerden hangisini kullanacaksaniz bir kağıta not etmenizde fayda var.

9.b. GRUB önyükleyicisini kullanmak

GRUB terminolojisini anlamak

GRUB un en önemli özelliğini anlıyabilmek için, sabitdiskimize ve sabitdisk bölümlerimize nasıl hitap ettiğini anlamada yarar vardır. Linux'da sabitdisk bölümlerinizin, örneğin/dev/hda1 yerine (hd0,0) olarak tanımlıdır.

Sabit diskler "a" dan ziyade 0 dan itibaren saymaya başlar ve sabit disk bölümleriniz 1 den ziyade 0 dan başlıyarak devam eder. Hatırlatmakta fayda var sadece sabitdisk aygıtları sayılır diğer IDE aygıtlarınız (CD-rom vs vs) gibi aygıtlar sayılmaz. Buna ek olarak aynı yapı SCSI sürücüleriniz içinde geçerlidir. (Normalde scsi sürücüler IDE sürücülere göre daha yüksek sayıları alırlar ,fakat bios ta başlangıç olarak başlatılmıycaksa bu geçerli değildir. )

Farzedelimki /dev/hda, olarak tanımlı bir sabit sürücünüz ve /dev/hdb olarak tanımlı bir CD-rom unuz vede /dev/hdcolarak tanımlı bir CD-RW aygıtına sahipsiniz. Ve ikinci sabit diskiniz/dev/hdd tanımlı ve SCSI kullanmıyorsunuz. /dev/hdd7 otomatik olarak(hd1,6)tanımlanacaktır. Biraz kulağa düzenbazca gelebilir fakat GRUB, etiket sonlama mekanizmasına sahip olup çok partisyona sahip olan kullanıcılar için kullanışlı ve daha çok avantajlıdır.

Şimdi durumu anladığınızı farz ederek sırada GRUB kuruluna geçelim.

GRUB Kurulumu

Grub kurmadan önce gelin onu emerge edelim:

Kod Listeleme 2.1: GRUB yüklemek

# emerge grub-static
# cp -Rpv /usr/share/grub/i386-pc/* /boot/grub

Grubu kurmaya başlıyoruz,komut satırına grub yazın. Grub komutuna geçeceksiniz grub> olarak komut satırınızda gözükecektir.Şimdi GRUB düzgün olarak kurabilmek için doğru komutlara ihtiyacımız var.

Kod Listeleme 2.2: GRUB konsolunu başlatmak

# grub

Not: Eğer sisteminizde disket sürücünüz yoksa --no-floppy komutunu yukarıdaki tabloda komut satırına ekleyiniz. Bunu yaparsanız sistemizde floppy yoksa sorun çıkmasını önleyecektir.

Yukarıdaki yapılandırma örneğinde GRUB'u kurma isteğinde bulunduk, bu komut bölüm 4 de yarattığımız boot yani /dev/hda1 adlı sabit disk bölümünden bilgileri okur , ve MBR (master boot record) üzerine yazar. Yani bilgisayarımızı başlattığımızda Grub önyükleyicisinin karşımıza gelmesini sağlar.Tabikide örnekte anlatağımız komutları kullanmak zorunda değilsiniz yüklemenizdeki duruma göre bu değişebilir.

GRUB içerisinde GRUB un etiket sonlama mekanizmasini kullanabiliriz. Örneğin eğer root ( yazarsanız sonrasında klavyemizdeki TAB tuşuna basarsak karşımıza sabitdisk Seçenekleri gelecektir, örneğin hd0gibi. Eğer root (hd0, yazarsanız ve sonrasında klavyemizdeki TAB tuşuna basarsanız sabitdisk bölüm seçenekleri karşınıza gelecektir, Örneğin hd0,0 gibi.

GRUB'un etiket sonlama mekanizmasını kullanarak GRUB u kurmak hiçte zor değil. Başlayalım mı ? Nedersiniz ? :-)

Kod Listeleme 2.3: GRUB'u MBR üzerine kurmak

grub> root (hd0,0)          ((/boot bölümünün nerde olduğunu belirtin)
grub> setup (hd0)           ((MBR üzerine GRUB kur)
grub> quit                  (GRUB konsolundan çık)

Not: Eğer GRUB u MBR değilde kesin başka bir sabit disk bölümüne kurmak istiyorsanız, setup komutunu değiştirmelisiniz. Bu size doğru sabit disk bölümünü gösterecektir. Örneğin eğer GRUB u /dev/hda3 üzerine kurmak istiyorsaniz, kullanmanız gereken komut setup (hd0,2). Bazı kullanıcılar bunu yapmak ister.

GRUB u kurmamıza rağmen, grub yapılandırma dosyasına yazmamız gerekir, şimdi GRUB otomatik olarak yeni çekirdeğinizden başlıyacak. Herhangi bir editör yardımıyla /boot/grub/grub.conf dosyasını açın:

Kod Listeleme 2.4: /boot/grub/grub.conf dosyasını yaratmak

# nano -w /boot/grub/grub.conf

Şimdi grub.conf yazma zamanı. Altta bazı sabitdisk bölümü için uygun 2 tane çekirdek-2.4.24 te ayarlanmış grub.conf dosyası bulacaksınız. Biz ilk grub.conf dosyasını detaylı şekilde açıkladık.

Kod Listeleme 2.5: non-genkernel kullanıcıları için grub.conf dosyası

# Hangisi Öntanımlı olarak önyüklenilebilir olacak? 0 birinci için 1 ikinci için vs.
default 0
# Ön tanımlı olarak seçtiğiniz yüklenmeden önce kaç saniye beklesin?
timeout 30
# Güzel bir arkaplan resmi
# Eğer grafik kurmadıysanız burasını silebilir veya yorum yapabilirsiniz
splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.5
# İşletim sisteminiz hangi sabitdisk bölümü üzerinde ise onu yazın.
root (hd0,0)
kernel (hd0,0)/kernel-2.6.5-gentoo root=/dev/hda3

# # sonraki 3 satır eğer iki işletim sistemine sahipsek geçerli.
# bu durumda Windows işletim sistemimiz /dev/hda6 üzerinde
title=Windows XP
rootnoverify (hd0,5)
chainloader +1

Kod Listeleme 2.6: grub.conf genkernel Benutzer

default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.5
root (hd0,0)
kernel (hd0,0)/kernel-2.6.5-gentoo root=/dev/ram0 init=/linuxrc real_root=/dev/hda3
initrd (hd0,0)/initrd-2.6.5-gentoo

# Dual-Boot kullanımı için
title=Windows XP
rootnoverify (hd0,5)
chainloader +1

Not: Eğer farklı bir disk bölünmesi yaptıysanız veya kernel kulandıysanız, yukardaki yerleride ona göre kendiniz ayarlamanız gereklidir. dikkat etmeniz gereken noktalar; (hd0,0) in aslında bağlanma noktası olduğudur ( root değil). Diğer bir deyişle (hd0,0)/grub/splash.xpm.gz tanımlaması , aslında /boot/grub/splash.xpm.gz dizini altında olmalıdır. Çünkü (hd0,0) ifadesi ile kastedilen /boot dizinidir.

Çekirdekle ilgili ek özellikleri eklemek istiyorsanız, eklemek istediğiniz özellikleri çekirdek satırının sonuna ekleyin.Biz bir tane özelliği ekledik (root=/dev/hda3 veya real_root=/dev/hda3)gibi, fakat başka özellikleride ekliyebilmeniz mümkün. Örnek verecek olursak daha önce vga bildirisini frame buffer için kullanmıştık hatırlarsanız:

Kod Listeleme 2.7: vga bildirisinin eklenmesi

title=Gentoo Linux
  root (hd0,0)
  kernel (hd0,0)/kernel-2.6.5-gentoo root=/dev/hda3 vga=788

Genkernel kullanıcıları şunu bilmelerinde fayda var, LiveCD deki çekirdek için kullanılacak önyükleme komutlari ayni. Örneğin SCSI sürücüsüne sahipseniz çekirdek özelliği olarak doscsi komutunu kullanın.

Şimdi grub.conf dosyasını kayıt edebiliriz. Şu ana kadar GRUB doğru bir şekilde ayarlandı, bundan sonra Bölüm 10 geçebilirsiniz : Gerekli Sistem Araçlarının Kurulması

GRUB hakkında detaylı bilgi almak için GRUB SSS veya GRUB Kılavuzuna bakınız.

10. Gerekli Sistem Araçlarının Kurulması

10.a. Sistem Kayıtçısı

Elkitabının başlangıcında aşama3 bölümünü tanıttığımızda değinmiştik. Orda tüm gereken sistem araçlarının siz seçmeden bulunduğunu ve hatta daha başka araçların sonradan kurulabileceğini söylemiştik. Evet simdi o noktaya geldik :)

İlk seçimini yapabileceğimiz araç, sistemde olan bitenin(aktiveteleri) Protokolunu tutar. Unix ve Linux Sistem protokol tutmada haylice bir ün saldı-- eğer isterseniz, sizde aisteminizde olan biteni protokol halinde alabilirsiniz. Bu işlem sistem kayıtçısı sayesinde gerçekleşir.

Gentoo değişik sistem kayıtçıları arasında size seçim bırakır: Bunlar sysklogd (bu geleneksel sistem kayıtçı daemon'udur) , syslog-ng (geliştirilmiş bir sistem kayıtçısıdır) ve metalog (çok yönlü ayarlanabilir sistem kayıtçısı) 'dur. Daha başkalarıda olabilir, sunulan paket sayısı gün geçtikce artıyor. Eğer karar vermediyseniz çok yetenekli

syslog-ng sistem kayıtcısını tavsiye edebiliriz.

Seçtiğiniz Sistem Kayıtçısını yüklemek için emerge yapmanız ve rc-update ile otomatik başlangıca eklemeniz kafidir. Aşağıdaki örnekte syslog-ng kayıtcısını yükleyeceğiz. Tabii ki burda kullandığımız sistem kayıtçısı ismi yerine yükleyeceğiniz sistem kayıtçısı ismiyle değiştirebilirsiniz:

Kod Listeleme 1.1: Sistem kayıtçısı yüklemek

# emerge syslog-ng
# rc-update add syslog-ng default

10.b. İsteğe Bağlı: Cron Daemon

Şimdi sırada Cron Daemon var. Yüklenmesi size bağlıdır, kurma gerekliliği yoktur. Ancak yüklenmesi tavsiye edilir. Ama bu Cron Daemon nedir ? Cron daemon belirli zamanlarda çalıştırılması için tanımlanan komutları çalıştırabilir. Bu SIK SIK ve hatta günlük kullanılan komutlarda çok pratiktir (örn. günlük, haftalık, aylık).

Gentoo Linux'ta üç değişik Cron Daemon'dan seçim yapabilirsiniz: dcron, fcron ve vixie-cron. Bunun yüklenmesi Sistem Kayıtçısına benzer. Fakat dcron ve fcron ayarları için ek olarak Komut gerekir, crontab /etc/crontab. Eğer emin değilseniz vixie-cron kullanmanızı öneririz.

Hazır derlenmiş paketten yükleyecekseniz vixie-cron yüklemesinde hata alırsanız, vixie-cron yerine vcron kullanın.

Kod Listeleme 2.1: Cron Daemon yüklenmesi

# emerge vixie-cron
# rc-update add vixie-cron default
(Sadece dcron veya fcron kurarsanız aşağıdaki komutu uygulayın) 
# crontab /etc/crontab

10.c. Dosya Sistemi Araçları

Hangi tür dosya sistemi kullanmayı düşünüyorsanız, o dosya sistemi için gereken araçları (dosya sistemini kontrol etmek, yeni dosya sistemi yapmak için) yüklemeniz gerekir.

Aşağıdaki tablo gerekli dosya sistemi için dosyaları listeler:

Dosya sistemi Araç Kurulum komudu
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

Eğer İnternete bağlanmak için rp-pppoe gerek yoksa Gentoo Kurulumunu Bitirmek ile devam edebilirsiniz. Aksi takdirde İsteğe Bağlı: Ağ Araçları bölümü ile devam edin.

10.d. İsteğe Bağlı: Ağ Araçları

İnternete bağlanmak istiyorsanız rp-pppoe pakedini kurmanız gereklidir:

Kod Listeleme 4.1: rp-pppoe kurulması

# USE="-X" emerge rp-pppoe

USE="-X" düzenlemesinde, XFree bağimlılık olarak beraberinde yüklenmesini engeller (rp-pppoe paketinin arayüz (Grafiksel) araçlarıda mevcuttur, eger arayüz kullanmak isterseniz rp-pppoe paketini yeniden USE="-X" kullanmadan derleyebilirsiniz, yada XFree'yi beraberinde yükleyin-- buda baya uzun sürebilir).

Şimdi sıradaki bölüm ile devam ediyoruz: Gentoo Kurulumunu Bitirmek

11. Gentoo Kurulumunu Bitirmek

11.a. Kullanıcı Yönetimi

Root şifresi ayarlamak

Unutmadan önce, root şifresini aşağıdaki komutu kullanarak ayarlayın:

Kod Listeleme 1.1: Root şifresi ayarlama

# passwd

Eğer root'un seri konsola bağlanabilmesini istiyorsanız, /etc/securetty dosyasına tts/0 ekleyin:

Kod Listeleme 1.2: /etc/securetty dosyasına tts/0 ekleme

# echo "tts/0" >> /etc/securetty

Günlük Kullanım İçin Kullanıcı Eklemek

Bir Unix/Linux sistemde root olarak çalışmak tehlikelidir, ve olabildiğince bu şekilde kullanılmamalıdır. Bu sebeple günlük kullanım için bir kullanıcı oluşturmanız ısrarla tavsiye olunur.

Örnek olarak, whell (su komutuyla root olabilen), users (tüm kullanıcılar için öntanımlı) ve audio (ses aygıtlarını kullanabilen) gruplarına bağlı, ahmet adında bir kullanıcı oluşturmak için:

Kod Listeleme 1.3: Günlük kullanım için kullanıcı ekleme

# useradd ahmet -m -G users,wheel,audio -s /bin/bash
# passwd ahmet
Password: (ahmet için şifreyi girin)
Re-enter password: (aynı şifreyi tekrar girin)

Eğer bir kullanıcının rootun yapabileceği bazı işleri yapması gerekiyorsa, su - (root izinlerine erişebilmek için) komutunu kullanabilir. Bir başka yolda eğer doğru olarak ayarlandıysa çok güvenli olan sudo paketini kullanmaktır.

11.b. Reboot ve Eğlence

Reboot İşlemi

Tebrikler! Gentoo sisteminiz şimdi hazır. Chroot işleminden geçmiş ortamdan çıkın ve bağlı bütün sabit disk bölümlerini ayırın. Sonra beklediğiniz büyülü komutu yazın: reboot.

Kod Listeleme 2.1: Sistemi yeniden başlatma

# exit
# cd /
# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
# reboot

Tabiki başlatılabilir CD'yi çıkarmayı unutmayın, yoksa sistem Gentoo sisteminiz yerine tekrar CD'den başlar.

PPC kullanıcıları önyükleyiciyi yüklenmedikçe MacOS başlayacaktır. Bu kullanıcılar İsteğe Bağlı: BootX'i Ayarlamak bölümünü okumalıdır.MIPS kullanıcıları Gentoo'yu başlatabilmek için MIPS PROM da biraz oynama yapmalıdır. Bu kullanıcılar İsteğe Bağlı: Çalışmak için Gentoo/MIPS Edinmek bölümünü okumalıdır.

GRP kullanıcıları İsteğe Bağlı: GRP Paketlerini Yüklemek bölümünü okuyabilirler. Diğerleri Kurulum bitti, ya sonra ?bölümü ile devam edebilirler.

İsteğe Bağlı: BootX Ayarları

Önemli: Bu bölüm sadece BootX kullanmak isteyenonly for PPC kullanıcıları içindir. Tüm diğer okuyucular bu bölümü geçmelidir.

Makineniz MacOS ile açıldıktan sonra, BootX kontrol panelini (Control Panel) açın. Seçenekler'i (Options) seçin ve "Used specified RAM disk" bölümünün işaretini kaldırın. BootX ana ekranına geri dönüğünüzde, artık makinenizin kök diski ve bölümü için bir seçenek bulacaksınız. Bu alanları sizin sisteminize göre doldurun.

BootX başlama sırasında Linux'un başlaması için ayarlanabilir. Eğer bunu yaptıysanız, makinenizin başlangıcı sırasında önce MacOS'u başladığını, sonra BootX'in Linux'u başlattığını göreceksiniz. Daha fazla bilgi için BootX anasayfasına göz atın: BootX home page

Eğer bir GRP kullanıcısıysanız İsteğe Bağlı: GRP Paketlerini Yüklemek bölümüyle devam edin, eğer değilseniz Kurulum bitti, ya sonra ? bölüme geçin.

İsteğe Bağlı: Çalışmak için Gentoo/MIPS Edinmek

Önemli: Bu bölüm sadece only for MIPS kullanıcıları içindir! Tüm diğer kullanıcılar bu bölümü geçmelidir.

Yeniden başlattığınızda (reboot), System Maintenance Menu kısmına gidin ve Enter Command Monitor (5) seçin. Eğer Gentoo kurulumunuzu test etmek istiyorsanız, sadece boot -f <kernel name> komutunu çalıştırabilirsiniz. Gentoo'ya başlamak istiyorsanız, MIPS PROM içerisinde bazı değişkenleri ayarlamanız gerekir:

Kod Listeleme 2.2: PROM'u Gentoo'yu Bağlatması için Ayarlama

1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor

Option? 5
Command Monitor.  Type "exit" to return to the menu.

(<root device> = Gentoo's root partition, e.g. /dev/sda3)
>> setenv OSLoadPartition <root device>

(To list the available kernels, type "ls")
>> setenv OSLoader <kernel name>
>> setenv OSLoadFilename <kernel name>

(Declare the kernel parameters you want to pass)
>> setenv OSLoadOptions <kernel parameters>

(Provide the location of the Volume Header)
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)

(Automatically boot Gentoo)
>> setenv AutoLoad Yes

(Set the timezone)
>> setenv TimeZone EST5EDT

(Use the serial console - graphic adapter users should have "g" instead of "d1" (one))
>> setenv console d1

Şimdi Gentoo ile eğlenmeye hazırsınız!

İsteğe Bağlı: GRP Paketlerini Yüklemek

Önemli: Bu bölüm GRP kullanıcıları içindir. Diğer kullanıcılar bu bölümü geçipKurulum bitti, ya sonra ? bölümü ile devam etmelidir.

Şimdi sisteminiz başladı, oluşturduğunuz kullanıcı olarak giriş yapın (örnek olarak, ahmet) ve su - (root yetkilerine sahip olmak için) komutunu kullanın:

Kod Listeleme 2.3: Root yetkilerine sahip olma

$ su -
Password: (Root şifrenizi girin)

Şimdi ikinci CD (Gentoo Paketleri CD'si) hazırlanmış yapılara bakmak için Portage ayarlarını değiştirmemiz lazım. İlk Önce CD'yi bağlayalım:

Kod Listeleme 2.4: Paketler CD'sini bağlama

# mkdir /mnt/cdrom
(CD sürücüsüne Gentoo Paketleri CD'sini koyun)
# mount /mnt/cdrom

Şimdi Portage'i hazırlanmış paketler için /mnt/cdrom 'u kullanması için ayarlayın:

Kod Listeleme 2.5: Portage'i /mnt/cdrom kullanması için ayarlama

# ls /mnt/cdrom

(Eğer bir /mnt/cdrom/packages dizini varsa:)
# export PKGDIR="/mnt/cdrom/packages"

(Yoksa:)
# export PKGDIR="/mnt/cdrom"

Şimdi istediğiniz paketleri yükleyin. Paketler CD'si bir kaç hazırlanmış yapı bulundurur, örnek olarak KDE:

Kod Listeleme 2.6: KDE yükleme

# USE="bindist" emerge --usepkg kde

XFree'yi (doğrudan ya da bağımlılık olarak) yüklerken USE="bindist" kullanmanız gerekiyor. Bu Microsoft'un çekirdek fontlarını (bunları LiveCD'ler içinde veremiyoruz) indirmek için yol gösteriyor.

Çalıştırılabilir yapıları yüklediğinizden şimdi emin olabilirsiniz. Portage'i güncellemek içinemerge sync uyguladığınızda (sonra öğreneceğiniz gibi), çalıştırılabilir yapılar güncellenmiş Portage'inizdeki dosya görüntüleriyle uymayabilir. Bunu engellemek içinemerge --usepkg yerine emerge --usepkgonly deneyebilrisiniz.

Tebrikler, sisteminiz şimdi tam olarak hazırlandı! Gentoo hakkında daha fazla şey öğrenmek için Kurulum bitti, ya sonra ? bölümünden devam edin.

12. Kurulum bitti, ya sonra ?

12.a. Dökümantasyon

Tebrikler! Artık çalışan bir Gentoo sisteminiz var. Fakat burdan nereye gidiyoruz? Seçenekleriniz nelerdir? İlk önce neyi keşfedebilirsiniz? Gentoo kullanıcılarına bolca ihtimal sunar ve bu sebeple bolca dökümanda sunar (ve dökümansız ihtimallerde).

Gentoo El Kitabının İkinci bölümü ( Gentoo Altında Çalışma ) size yazılımlarınızı nasıl güncel tutabileceğinizi, daha çok yazılımı nasıl yükleyeceğinizi, USE bayraklarının neler olduğunu, Gentoo Init sisteminin nasıl çalıştığını v.s. açıklar ve bu kısmı mutlaka okumalısınız.

Eğer sisteminizi masaüstü kullanım için uygunlaştırmak istiyorsanız, ya da sisteminizin tamamiyle masaüstü kullanım için nasıl ayarlanıcağını öğrenmek istiyorsanız, Masaüstü Ayarları Kılavuzu bölümüne göz atın.

Mevcut dökümanların tamamının listesi içinDökümantasyon Kaynak Sayfası (Documentation Resorce page) bakabilirsiniz.

12.b. Gentoo Online

Gentoo Online Gentoo Formumuza veya Gentoo IRC kanalımıza herzaman gelebilirsiniz.

Ayrıca tüm kullanıcılarımıza açık mail listemizde bulunmaktadır.

Biz şimdi sözü burda bağlıyor sizi Gentoo sisteminizle eğlenceye bırakıyoruz :-)

B. Gentoo Altında Çalışma

1. USE flags

1.a. USE Flagları Nedir ?

USE Flaglarının Amacı Nedir ?

Gentoo kurarken, çalıştığınız ortama göre değişiklikler yaparsınız. Bir sunucunun kurulumuyla iş istasyonununki farklıdır. Oyun istasyonu ile 3D-render istasyonu farklıdır.

Bu sadece kurmak için seçeceğiniz paketler için değil, aynı zamanda, paketlerin hangi özellikleri destekleyeceği ile de ilgilidir. Eğer OpenGL'e ihtiyacınız yoksa, niye onu kurmak ve kurduğunuz paketlerde OpenGL desteğini eklemek için ugraşasınız? Eğer KDE kullanmak istemiyorsanız, paketler KDE desteği olmadan sorunsuz çalıştırabilecekken, neden KDE desteği ile kurmak için vakit kaybedesiniz?

Kullanıcıya, neyi kurması/aktivite-etmesi, neyi etmemesine yardım etmek için, kullanıcıdan,kurmak istediği sistemi belirtebilmesi için kolay bir yol olmasını istedik. Bu, kullanıcının gerçekte ne istediğine karar vermesini ister ve Portage'i kolaylaştırır. Portage bizim paket yönetim sistemimizdir.

Bir USE Flagının Tanımı

Bir USE flag girin. Bu flag, belli bir konseptin destek ve bağımlılık bilgilerini meydana getiren anahtar kelimedir. Eğer belli bir USE flag tanımlarsanız, Portage seçilen anahtar kelimenin desteğinin istendiğini anlayacaktır. Bu tabiiki paketin bağımlılık bilgisini de değiştirir.

Şimdi bir öerneği inceleyelim: kde anahtarı. Eğer USE değişkeninde bu anahtar kelime yoksa, seçmeli (optional) KDE desteği bulunan tüm paketler, KDE desteği olmadan derlenir. Seçmeli KDE bağımlılıği olan paketler, bağımlılık olarak KDE kütüphaneleri kurulmadan derlenir ve kurulur.

Anahtar kelimeleri doğru tanımlayarak, ihtiyaçlarınıza göre bir sistem oluşturabilirsiniz.

Hangi USE Flagları Vardir

Global (global) ve yerel (local) olmak üzere iki türlü USE-flag vardır.

Global USE-flag'larinin listesi, online veya /usr/portage/profiles/use.desc dosyasında mevcuttur. Bazı kısa ve önemli USE Flagsları şunları (tam liste değildir):

Kod Listeleme 1.1: USE-flaglarınden kısa bir bölüm

gtk     - x11-libs/gtk+ (The Gimp toolkit) desteği ekler.
gtk2    - bi program her ikisini de destekliyorsa, gdk-1.2 yerine gtk-2 kullanır.
gtkhtml - gnome-extra/gtkhtml desteği ekler.
guile   - dev-util/guile desteği ekler.
icc     - Paket destekliyorsa, intel C++ derleyicisini kullanır.
icc-pgo - icc kullanılırken, PGO veri üretimini etkinleştirir veya kullanır.
imap    - IMAP desteği ekler.

1.b. USE Flaglarının Kullanılışı

Kalıcı USE Flagsların Belirtilmesi

USE flaglarının ne kadar önemli olduğunu anladınız umuduyla, şimdi onların nasıl belirtileceğini açıklayalım.

Daha once belirtildii gibi, USE-flag'ları USE değiskenine tanımlanır. Kullanıcıların, USE-flaglarını araştırıp seçmesini kolaylaştırmak için, öntanımlı bir USE değişkeni hazırlanmıştır. Bu USE-flagları Gentoo kullanıcılarının en çok kullandıklarıdır. Öntanımlı USE değişkeni, /etc/make.profile/make.defaults dosyasında belirtilmiştir. Bu öntanımlı değişkenlere bir göz atalım:

Kod Listeleme 2.1: /etc/make.profile/make.defaults dosyasındaki USE değişkeni

USE="x86 oss apm arts avi berkdb crypt cups encode foomaticdb gdbm gif gpm gtk 
     imlib jpeg kde gnome libg++ libwww mad mikmod motif mpeg ncurses nls 
     oggvorbis opengl pam pdflib png python qt quicktime readline sdl slang 
     spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Gördüğnüz gibi, bu değişken epey fazla anahtar kelime içeriyor. Bu değişkeni kendinize göre düzenlemek için /etc/make.profile/make.defaults dosyasını kullanmayın. Bu dosya, Portage güncellemesi esnasında eski haline döner.

Öntanımlı değerleri değiştirmek için, USE değiskenine yeni anahtar kelimeler eklemeniz veya varolanları çıkarmanız gerekir. Bu işlem /etc/make.conf dosyasını değiştirerek global olarak yapılabilir. Bu değişkene, kullanmak istediğiniz USE-flag'larını ekliyebilir, istemediklerinizi çıkarabilirsiniz. Çıkarma işlemi, anahtar kelimenin başına "-" (eksi) isareti konularak yapılır:

Mesela, kde ve qt desteğini kaldırıp, ldap desteği eklemek için, /etc/make.conf dosyasındaki USE değişkeni şu şekilde olmalıdır:

Kod Listeleme 2.2: /etc/make.conf dosyasında örnek bir USE değişkeni

USE="-kde -qt ldap"

Geçici USE Flags Belirtmek

Bazen bir USE-flagı sadece bir kez kullanmak isteyebilirsiniz. Bunun için iki kere (derlemeden önce ve sonra)/etc/make.conf dosyasını değiştirmektense USE değişkenini ortam değişkeni olarak kullanabilirsiniz.

Örnek olarak, Mozilla kurulumunda java esteğini USE değiiskeninden geçici olarak çıkaralım.

Not: emerge komutu, Portage ve Yazılım bölümden detaylı olarak anlatılacaktır.

Kod Listeleme 2.3: SE değişkenini ortam değişkeni olarak kullanılması.

# USE="-java" emerge mozilla

USE Flaglarının Miras Olarak Kullanımı

Bazı paketler varolan USE Flagları dinleyip uygulamak ile kalmaz, kendileri bazı USE flag desteği verirler. Böyle bir paket eklediğinizde, bu paketin sağladığı USE-flagı USE değişkeninize eklenir. USE-flag sağlayan paketlerin listesini görmek için /etc/make.profile/use.defaults dosyasına göz atmanız yeterli olacaktır:

Kod Listeleme 2.4: /etc/make.profile/use.defaults dosyasındna bir par

gnome           gnome-base/gnome
gtk             x11-libs/gtk+
qt              x11-libs/qt
kde             kde-base/kdebase
motif           x11-libs/openmotif

Sıralama

Tabiki hangi ayarın USE değişkeninde önceliğe sahip olduğu bellidir. Sadece java'nın belirtildiğini görmek için USE="-java" demek istemezsiniz. USE ayarlarının öncelik sırası: (Birinci en düşük önceliğe sahiptir):

  1. Öntanımlı ayarların bulunduğu dosya: /etc/make.profile/make.defaults
  2. Eğer, /etc/make.profile/use.defaults dosyasındaki öpaketlerden biri kuruluyor ise, onun mirası olan USE değişkenleri.
  3. Kullanıcının /etc/make.conf dosyasında belirttiği USE değişkeni.
  4. Kullanıcının ortam değişkeni olarak kullandığı USE değişkeni.

Portage tarafından kullanılan, tüm önceliklere göre ayarlanmış USE değişkenini görmek için emerge info komutunu kullanın. Bu komut Portage'n,n kullandığı tüm değişkenkenleri( USE değişkenide dahil) liste halinde sunar.

Kod Listeleme 2.5: 'emerge info' kullanılması

# emerge info

Tüm Sistemi Yeni USE Flaglarına göre Ayarlamak

Eğer USE flagları değiştirdiyseniz ve tüm sistemi bu yeni USE değişkenine göre güncellemek isterseniz, aşağıdaki adımları izleyebilirsiniz. Bu adımlar uzun zaman alacaktır.

İlk olarak tüm sistemi yeni USE flaglarını kullanarak oluşturun:

Kod Listeleme 2.6: Tüm sistemin tekrar oluşturulması

# emerge --emptytree world

İkinci olarak Portage depclean çalıştırılarak eski USE flaglarına göe bağımlılık sebebi ile kurulmuş ancak yeni USE flaglarına göre ihtiyaç olmayan paketleri kaldırın.

Uyarı: emerge depclean komutunu kullanmak tehlikeli olabilir. Oluşturulan eski paketlerin listesini iki defa kontrol edin ve kullanacağınız bir pakedin kaldırılmadıına(silinmediğine) emin olun. Sonraki örnekte -p anahtarı ekleyerek paketlerin önce listelenmesi sağlanmıştır.

Kod Listeleme 2.7: Eski paketlerin kaldırılması

# emerge -p depclean

depclean bittiğinde, yeni sistemimiz yeni USE flaglarını kullanıyor demektir

1.c. Pakete Özel USE Flaglar

Kullanılabilen USE Flagları Görmek

Sonraki bölüm olan Portage ve Yazılım 'da kurulu paketleri nasıl yöneteceğiniz anlatılacak. Yinede emerge için ilk bilgileri, bir pakedin kullandığı USE flaglarının nasıl görebileceğinizi göstererek vermiş olalım.

Mesela mozilla pakedini örnek alalım: Hangi USE flaglarını kullanıyor? Bunu öğrenmek için emerge komutuna --pretend ve --verbose parametrelerini ekleyelim:

Kod Listeleme 3.1: Kullanılan USE flagların gösterilmesi

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 -gtk2 +ssl +ldap 
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft 

emerge 'den başka yöntemler ilede bu işi yapabiliriz. Aslında sadece paket bilgilerinin görülmesinde kullanılmka üzere etcat adında bir program vardır. Bu program gentoolkit pakedinin içindedir. Yani ilk önce gentoolkit pakedini kurun, ancak o zaman etcat aracını kullanabilirsiniz:

Kod Listeleme 3.2: gentoolkit kurulumu

# emerge --usepkg gentoolkit

Şimdi bir pakedin hangi USE flaglarını kullandığını görebilmek için etcat komutunu uses parametresi ile beraber kullanalım. Mesela gnumeric pakedi için bir örnek:

Kod Listeleme 3.3: Kullanılan USE flaglar için etcat kullanımı

# etcat uses gnumeric
[ Colour Code : set unset ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - libgda  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - gnomedb : unknown
 + + python  : Adds support/bindings for the Python language
 + + bonobo  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)

2. Portage ve Yazılımlar

2.a. Paket Bilgisini Görmek

Tüm Araçların Efendisi: emerge

Tüm kullanıcıların kullanacağı asıl Portage aracı emerge aracıdır. Gentoo kurulumu sırasında ve bir önceki bölümde emerge zaten kullanmıştık. Şimdi tam olarak nasıl kullanılacağını açıklayacağız. Bu bölüm ayrıntılı olarak emerge kullanmayı ve yazılım tabanlı tüm ihtiyaçlarınızı karşılamayı öğretecek.

emerge yazılım paketlerini yükleme, kaldırma, sorgulama ve korumaya yarayan bir komuttur. emerge , ebuild için bir ön işlemcidir; Gentoo profesyoneli olmakla ilgilenen kullanıcılar ebuild kullanımı hakkında detaylı bilgiyi sonra öğrenecekler. Şimdilik emerge ve ebuild üzerinde duracagız.

emerge gentoo kullanıcıları için en önemli araç olduğu sürece, geniş bir kılavuz sayfasına sahip olacaktır. man emerge veya emerge --help ile çok detaylı bilgi bulabilirsiniz.

Kod Listeleme 1.1: emerge için yardım almak

# man emerge
# emerge --help

Portage Şeması

emerge kullanımına devam etmeden önce, Portage şemasına bir göz atalım./usr/portage dizinine gidin ve mevcut dizinleri listeleyin. Biz dizinlere "/" ekleyerek gösteren ls --classify komutunu kullanıyoruz.

Kod Listeleme 1.2: Portage şemasını görmek

# cd /usr/portage; ls --classify
app-admin/       dev-ml/            gnome-libs/     net-print/
app-arch/        dev-perl/          gnome-office/   net-wireless/
app-benchmarks/  dev-php/           header.txt      net-www/
app-cdr/         dev-python/        incoming/       net-zope/
app-crypt/       dev-ruby/          jython/         packages/
app-dicts/       dev-tcltk/         kde-apps/       profiles/
app-doc/         dev-tex/           kde-base/       releases/
app-editors/     dev-util/          kde-i18n/       scripts/
app-emacs/       distfiles/         kde-libs/       sec-policy/
app-emulation/   eclass/            licenses/       skel.ChangeLog
app-games/       experimental/      media-fonts/    skel.ebuild
app-gnustep/     files/             media-gfx/      skel.metadata.xml
app-i18n/        fresco-base/       media-libs/     snapshots/
app-misc/        games-action/      media-plugins/  sys-apps/
app-office/      games-arcade/      media-radio/    sys-build/
app-pda/         games-board/       media-sound/    sys-cluster/
app-portage/     games-emulation/   media-tv/       sys-devel/
app-sci/         games-engines/     media-video/    sys-fs/
app-shells/      games-fps/         metadata/       sys-kernel/
app-text/        games-kids/        net-analyzer/   sys-kmods/
app-vim/         games-misc/        net-apache/     sys-libs/
app-xemacs/      games-mud/         net-dialup/     unix2tcp/
berlin-base/     games-puzzle/      net-dns/        x11-base/
dev-ada/         games-roguelike/   net-firewall/   x11-libs/
dev-cpp/         games-rpg/         net-fs/         x11-misc/
dev-db/          games-server/      net-ftp/        x11-plugins/
dev-dotnet/      games-simulation/  net-im/         x11-terms/
dev-embedded/    games-sports/      net-irc/        x11-themes/
dev-games/       games-strategy/    net-libs/       x11-wm/
dev-haskell/     games-util/        net-mail/       xfce-base/
dev-java/        glep/              net-misc/       xfce-extra/
dev-lang/        gnome-apps/        net-nds/
dev-libs/        gnome-base/        net-news/
dev-lisp/        gnome-extra/       net-p2p/

Gördüğünüz gibi Portage şeması bolca alt dizin içermektedir. Bunların çoğu Gentoo paketlerinin ebuilds olarak adlandırılan kategorilerdir. Örnek olarak, app-office kategorisine bir göz atalım:

Kod Listeleme 1.3: Bir kategoriyi görmek

# cd app-office; ls --classify
abiword/     gnotime/   kmymoney2/  ooodi/              plan/     timestamp.x
dia/         gnucash/   koffice/    oooqs/              qhacc/
dia2code/    gnumeric/  lxbank/     openoffice/         sc/
facturalux/  ical/      lyx/        openoffice-bin/     scribus/
gaby/        kbudget/   mdbtools/   openoffice-ximian/  siag/
gnofin/      khacc/     mrproject/  phprojekt/          texmacs/

Kategori içinde o kategoriye ait paketleri, paketi içeren klasörlerle bulacaksınız. openoffice paketine bir göz atalım:

Kod Listeleme 1.4: Paket gösterimi

# cd openoffice; ls --classify
ChangeLog  files/        openoffice-1.0.3-r1.ebuild  openoffice-1.1.0-r2.ebuild
Manifest   metadata.xml  openoffice-1.1.0-r1.ebuild  openoffice-1.1.0.ebuild

Size Gentoo paketlerinin ebulid olarak isimlendirildiğini söylediğimizi hatırladınız mı? Görüldüğü gibi örnek dizinde dört tane ebuild mevcut. İsimleri her zaman fikir verecek şekilde: sadece sürüm numaraları farklı. Paketlerin içeriğini görmekte özgürsünüz: onlar sadece betikler. Gentoo kullanmak için çok önemli bir şey olmadığından bu konunun detaylarına girmeyeceğiz şimdi.

Diğer dosyalar ChangeLog (ebuild'lerde yapılan tüm değişiklikleri içerir), Manifest (dizindeki tüm dosyaların boyutlarını ve checksumlarını içerir) ve metadata.xml (paketler hakkında geliştiricileri, açıklamalar gibi ayrıntılı bilgileri içerir).

files dizininde Portage'in ihtiyaç duyduğu bilgiler (checksum ve paketin ihtiyaç duyduğu diğer dosyaların yetkileri), paketler, örnek ayar dosyaları v.s.

Kod Listeleme 1.5: Özel paketleri görmek

# cd files; ls --classify
1.0.3/  digest-openoffice-1.0.3-r1  digest-openoffice-1.1.0-r1
1.1.0/  digest-openoffice-1.1.0     digest-openoffice-1.1.0-r2
# cd 1.1.0; ls --classify
fixed-gcc.patch      ooffice-wrapper-1.3
newstlportfix.patch  openoffice-1.1.0-linux-2.6-fix.patch
no-mozab.patch       openoffice-1.1.0-sparc64-fix.patch
nptl.patch

Eğer Prtage şemasının kök düzününe giderseniz (/usr/portage), orada katerogize edilmemiş dizinler olduğunu farkedeceksiniz. Bunların ayrıntılarını bu bölümde vereceğiz.

Paket Aramak

Eğer Gentoo Linux'da yeniyseniz, işleriniz için hangi aracı kullanacağınızı bilmiyor olabilirsiniz. Bir arama yapmak için, emerge sistemdeki mevcut paketleri aramak için bir yol sunuyor. Paket aramanın iki yolu var: isim ile arama, ya da isim ve açıklama ile arama.

Portage şemasında isim ile arama gerçekleştirmek için, emerge search kullanın. Örnek olarak, mozillahakkında daha çok şey bulmak için:

Kod Listeleme 1.6: mozilla hakkında bilgi görüntülemek

# emerge search mozilla
Searching...   
[ Results for search key : mozilla ]
[ Applications found : 5 ]
(Some output removed to improve readability)
*  net-www/mozilla
      Latest version available: 1.5-r1
      Latest version installed: 1.4-r3
      Size of downloaded files: 29,153 kB
      Homepage:    http://www.mozilla.org
      Description: The Mozilla Web Browser

*  net-www/mozilla-firebird
      Latest version available: 0.7
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 37,850 kB
      Homepage:    http://www.mozilla.org/projects/firebird/
      Description: The Mozilla Firebird Web Browser
(...)

Eğer açıklamalarında aranmasını istiyorsanız --searchdesc argümanını kullanın:

Kod Listeleme 1.7: Açıklamalarıda aramak

# emerge --searchdesc mozilla
Searching...   
[ Results for search key : mozilla ]
[ Applications found : 10 ]
(Some output removed to improve readability)
*  dev-libs/nss-3.8
      Latest version available: 3.8
      Latest version installed: 3.8
      Size of downloaded files:  2,782 kB
      Homepage:    http://www.mozilla.org/projects/security/pki/nss/
      Description: Mozilla's Netscape Security Services Library that implements PKI support

Gördüşünüz gibi, emerge'in çıktısı size kategori, paket ismi, mevcut sürüm, yüklenmiş olan sürüm, indirilen dosyaların boyutları, internet sayfası ve küçük bir açıklama gibi bilgilerin hepsini size aktarmakta.

Yeni bir şey gördünüz mü? Evet, indirilmiş dosyalar. Portage'e bir paket yüklemesini söyleniz yeterli, tabiki gerekli kaynaklara sahip olmak zorunda (yada hazır paketler). Bu nedenle Portage /usr/portage/distfiles (kaynak kodlar için) veya /usr/portage/packages/All (hazır paketler için) içeriğini paketlerin mevcut olup olmadığını görmek için kontrol eder. Eğer mevcut değilse, gerekli dosyaları indirir ve bu dizinler içine yerleştirir.

ChangeLog Dosyasını Görmek

Portage şemasını gezerken, paketler için bir ChangeLog olduğunu gördünüz. Mevcut sürüm ve yüklenmiş sürüm arasındaki ChangeLog girdilerini emerge ile görebilirsiniz. --pretend --changelog ( kısaca -pl ) seçeneğini kullanın. Bir örnek olarak gnumeric paketinin ChangeLog girdilerini göreceğiz:

Kod Listeleme 1.8: gnumeric için ChangeLog girdilerini görmek

# emerge --pretend --changelog gnumeric
(Some output removed to improve readability)
*gnumeric-1.2.2

  27 Nov 2003; foser <foser@gentoo.org> gnumeric-1.2.2.ebuild :
  New release, requested in #34492
  updated deps

  12 Nov 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.2.0.ebuild:
  Marked stable on sparc, fixes bug #32405.

  14 Oct 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.0.8.ebuild:
  Added ~sparc keyword.  Fixes bug #31150.

2.b. Portage Güncellemesi Yapmak

Giriş

Portage ile arama yapmak güzel, fakat Portage'i güncellemezseniz sisteminizdeki mevcut paketler içinde sıkışırsınız. Bunun anlamı sisteminiz yakında eskiyecek ve bug yamaları, güvenlik problemleri gibi güncellemeleri kaçıracaksınız.

Portage şemasını güncellemenin bir kaç yolu var. En çok kullanılan yol rsync yansılarımızdan birini kullanmaktır. Diğer yol ise bir Protage görüntüsü kullanmak (güvenlik duvarı ya da yetersiz network izimleri gibi durumlar için).

"rsync" İçin Bir Yansı Seçmek

Size en yakın yansıyı seçmek avantajlı olacaktır. Bunu el ile SYNC değişkeninin değiştirerek yapabilirsiniz (Bu değişken /etc/make.conf dosyasının içindedir) veya mirrorselect komutunu kullanarak onun bu işi sizin için yapmasınısağlayabilrisiniz. SYNC değişkeni üzerinde daha sonra duracağız. Şuanda sadece mirrorselect üzerinde duracağız. İlkönce mirrorselect aracını emerge ediyoruz:

Kod Listeleme 2.1: mirrorselect kurulumu

# emerge --usepkg mirrorselect

Şimdi bize otomatik olarak yansı seçmesi için mirrorselect komutunu veriyoruz (bu aynı zamanda Portage'i kaynak kodlarını o yansıdan indirmesi içinde ayarlayacak):

Kod Listeleme 2.2: mirrorselect uygulaması

# mirrorselect -a -s3

Portage Şemasını Güncellemek

Portage'i rsync yoluyla güncellemek için, basitce emerge sync işlemini başlatın:

Kod Listeleme 2.3: Portage'i emerge sync ile güncellemek

# emerge sync

Eğer bu çalışmazsa (bir ağ problemine ya da güvenlik duvarına bağlı olarak), emerge-webrsync komutunu deneyin. Bu işlem wget kullanarak Portage şemasının görüntüsünü indirecektir. Bu isterseniz proxyde kullanabileceğiniz anlamına geliyor. Gentoo kurulumu sırasında nasıl proxi ayarlayacağınızdan bahsetmiştik.

Kod Listeleme 2.4: emerge-webrsync kullanarak Portage güncellemek

# emerge-webrsync

2.c. Yazılımları Korumak

Hazırlamak mı Yoksa Hazır Kullanmak mı?

Gentoo isterseniz paketleri ebuild olarak sunar. Fakat bir ebuild gibi yüklemek isterseniz, paketi hazırlamak ya da hazırlanmış bir paket kullanmak arasında bir tercih yapabilirsiniz. Fakat bu iki seçim arasındaki avantajlar/dezavantajlar nerlerdir, ve biri diğerine tercih edilebilir mi?

Tahmin edeceğiniz gibi paket hazırlamak uzun zaman alacaktır (özellikle KDE, OpenOffice.org, gibi yapılarda). Bir paket hazırlayarak USE değişkeniyle paketin sizin sisteminize özgü olmasını sağlayabilirsiniz. Tabiki, sisteminize uyarlamak için yüksek seçeneklerde kullanabilirsiniz (CFLAGS ve CXXFLAGS değişkenleriyle).

Hazır bir paket kullanmak yükleme süresini kısaltacaktır (derlemeye gerek yoktur), fakat USE ayarları ve CFLAGS, CXXFLAGS değişkeni avantajlarını kaybedersiniz.

Hazır paketler /usr/portage/packages/All dizininde barındırılırlar. Kaynak kodları ise /usr/portage/distfiles altında toplanırlar. Eğer bir yazılım kurmayı bitirdiyseniz, paketi ya da kaynak kodunu bu dizinden silebilirsiniz. Fakat, istiyorsanız tekrar kurmanız gerekebilirse paket ya da kaynak kodunun son versiyonunu saklayabilirsiniz (bu sayede tekrar indirmeniz gerekmez).

Kaynak Kodundan Yazılım Kurmak

Tamam, bu kadar konuşma yeter. Bir paket yüklemek için emerge komutunu kullanacaksınız. Eğer hazır bir paket kullanmak istemiyorsanız, sadece emerge <paket_ismi> veya emerge <kategori>/<paket ismi> kullanabilirsiniz. Örnek olarak gnumeric yükleyelim:

Kod Listeleme 3.1: gnumeric derlenmesi

# emerge gnumeric

Bu komut sisteminize dosyayı indirir, açar, derler ve yükler. Aynı zamanda bunu tüm bağımlılıklara yapar. Eğer paketle birlikte hangi bağımlılıkların yüklendiğini görmek isterseniz, --pretend seçeneğini kullanın ( kısaca -p olarak da kullanabilirsiniz):

Kod Listeleme 3.2: gnumeric bağımlılıklarını görmek

# emerge --pretend gnumeric

Eğer bir paketin ve bağımlılıklarının kaynak kodlarını indirmek istiyor fakat kurmak istemiyorsanız, --fetchonly seçeneğini kullanın (kısaca -f kullanabilirsiniz):

Kod Listeleme 3.3: gnumeric kaynaklarını indirmek

# emerge --fetchonly gnumeric

Eğer emerge kaynakları nerden indirdiğini görmek istiyorsanız, --fetchonly ve --pretend seçeneklerini kullanın:

Kod Listeleme 3.4: gnumeric kaynağının URL'sini görmek

# emerge --fetchonly --pretend gnumeric

Aynı zamanda paketlerin detaylı sürümlerinide yükleyebilirsiniz. Örnek olarak, gnumeric'in 1.2 sürümünden eski bir sürümünü yüklemek istiyorsunuz ( herhangi garip bir sebeple :) ) şunu yazmalısınız:

Kod Listeleme 3.5: Detaylı gnumeric sürümü yüklemek

# emerge "<gnumeric-1.2"

Diğer olasılıklar tabiki ">"(sonraki sürüm) ve "="(belirtilen sürüm).

Hazır Paketleri Yüklemek

Hazır paket yüklemek istediğiniz zaman --usepkg seçeneğini ( kısaca -k ) kullanabilirsiniz. Bu eğer paket ve sürüm uyuşuyorsa /usr/portage/packages/All dizini altındaki mevcut derlenmiş paketi kullanacak.

Kod Listeleme 3.6: gnumeric için hazır paket yüklemek

# emerge --usepkg gnumeric

Eğer derlenmiş paket yüklemek istiyorsanız, buna karşılık sürüm uyuşmuyorsa, --usepkgonly (kısaca -K ) kullanabilrisiniz.

Kod Listeleme 3.7: gnumeric için hazır paket yüklemek

# emerge --usepkgonly gnumeric

Eğer sisteminizde henüz hazır paket bulunmuyorsa emerge bu işi PORTAGE_BINHOST değişkennde belirtilmiş bir yansıdan indirerek yapabilir (değişken /etc/make.conf dosyasının içindedir).

Bu paket sisteminizde yoksa ve hazır paketi indirmek istiyorsanız --getbinpkg (kısaca -g ) kullanabilirsiniz:

Kod Listeleme 3.8: Downloading and installing a prebuilt package for gnumeric

# emerge --getbinpkg gnumeric

Bu işlem paketi ve paket bilgilerini bağımlılıklarıyla beraber sisteminize indirecek ve kuracak. Eğer paketle birlikte hangi bağımlılıkların yüklendiğini görmek için, --pretend seçeneğini kullanın (kısaca -p):

Kod Listeleme 3.9: gnumeric için yüklenen bağımlılıkları görmek

# emerge --getbinpkg --pretend gnumeric

Aynı zamanda sisteminizde bulunan hazır paketi kullanmadan ve yerel sisteminiz hakkında bilgi toplamadan bir hazır paket (ve paket bilgisi) indirmek için, --getbinpkgonly seçeneğini kullanabilirsiniz (kısaca -G):

Kod Listeleme 3.10: Yerel bilgileri kullanmadan hazır paket yüklemek

# emerge --getbinpkgonly gnumeric

Özel paket sürümleride yükleyebilirsiniz. Örnek olarak, gnumeric'in 1.2 versiyonundan eski bir versiyonunu kullanmak istiyorsanız şunu yazmalısınız:

Kod Listeleme 3.11: Özel gnumeric sürümü yüklemek

# emerge --usepkg "<gnumeric-1.2"

Diğer olasılıklar tabiki ">"(sonraki sürüm) ve "="(belirtilen sürüm).

Bağımlılıklarla Çalışmak

Portage bağımlılıklarla başa çıkmak için geniş bir destek sunar. Aslında bunu düşünmenize pek gerek yok (bağımlılıklar otomatik olarak Portage tarafından halledilir) fakat bazı kullanıcılar bağımlılıklar için emerge ile nasıl çalışacaklarını bilmek isteyebilirler.

Örnek olarak, Portage'in bir paketle beraber yüklediği bağımlılıkları görmek için --emptytree seçeneğini kullanabilirsiniz (kısaca -e). Bir paketin bağımlılıklarını tam bir şema olarak görmek için --pretend seçeneğiniyle beraber kullanılması yararlıdır. --pretend seçeneği olmazsa emerge listelenen paketleri (yeniden) derler.

Kod Listeleme 3.12: gnumeric paketinin tüm bağımlılıklarını görmek

# emerge --emptytree --pretend gnumeric

Bir başka argüman --nodeps seçeneğidir. Bu seçenek bağımlılıkları kurmadan paketi yüklemenizi sağlar.

Kod Listeleme 3.13: Bağımlılıklar olmaksızın gnumeric yüklemek

# emerge --nodeps gnumeric

--nodeps seçeneğinin tersi --onlydeps seçeneğidir. Bu seçenek istediğini paketin tüm bağımlılıklarını yükler fakat paketin kendisini yüklemez:

Kod Listeleme 3.14: gnumeric paketinin bağımlılıklarını yüklemek

# emerge --onlydeps gnumeric

Sisteminizi Güncellemek

Portage sistemi güncellemek için iki anahtar kelimeyi tanıyor: system ve world. Eğer stage3 kullanmadıysanız zaten bunlardan birini gördünüz. Bulunan şeyleri yenilemek için: system çalışan bir Gentoo sistemi için gereken core paketlerinin bir koleksiyonunu yapar.

world anahtar kelimesi ise sizin kurduğunuz system üzerine kurulmuş paketleri edinir. Diğer bir değişle, emerge <paket-ismi> şeklinde yüklediğiniz her paket, world dosyasına (/var/cache/edb/world) kaydedilir. Bağımlılıklar world dosyasının bir parçası değildir, fakat bunu daha sonra halledeceğiz.

Eğer sistem paketlerini güncellemek istiyorsanız, --update seçeneğini kullanın (kısaca -u):

Kod Listeleme 3.15: Sistem paketlerini güncellemek

# emerge --update system

Aynı işlem world paketleri içinde kullanılabilir.

Kod Listeleme 3.16: Yüklediğiniz sistemi güncellemek

# emerge --update world

Tekrar, eğer emerge'in güncelleyeceği dosyaları görmek istiyorsanız, --pretend seçeneğini --update seçeneğiyle beraber kullanabilirsiniz:

Kod Listeleme 3.17: Yüklediğiniz sistemi güncelleme sırasında yüklenecek dosyaları görmek

# emerge --pretend --update world
(Some output removed to improve readability)
[ebuild     U ] net-misc/wget-1.9-r1 [1.9] 
[ebuild     UD] media-video/dvdauthor-0.5.0 [0.5.3] 
[ebuild     U ] net-analyzer/ethereal-0.9.16 [0.9.14] 

Bu adımla bir harf (ya da harf kombinasyonları) farkedeceksiniz. Bu size paket hakkında daha fazla bilgi verecek:

Bazı sebeplerden dolayı, bir güncelleme eski paket yükleyek anlamına gelebilir. Eğer bunun olmasını istemiyorsanız, --upgradeonly seçeneğini kullanmalısınız (kısaca -u):

Kod Listeleme 3.18: Yüklediğiniz sistemi güncellemek

# emerge --update --upgradeonly world

Tabiki biz system ve world paketleri hakkında konuşuyoruz, fakat aynı işlemi seçtiğiniz bir paket içinde kullanabilirsiniz.

Yazılım Kaldırmak

Eğer sisteminizden bir yazılımı kaldırmak istiyorsanız, unmerge seçeneğini kullanabilirsiniz (kısaca -C ):

Kod Listeleme 3.19: Yazılım kaldırmak

# emerge unmerge gnumeric

Eğer bir kaldırma işlemini test etmek ama uygulamak istemiyorsanız, gene --pretend seçeneğini kullanabilirsiniz:

Kod Listeleme 3.20: Yazılım kaldırma işlemini test etmek

# emerge --pretend unmerge gnumeric

Uyarı: Portage, kaldırmak istediğiniz yazılım başka bir yazılımın bağımlılığıysa bunu farkedemez. Aynı zamanda sistemin bir parçasıysa da sizi uyarmaz, örn: sistemin doğru fonksiyonelliği için gerekli bir core uygulaması!

unmerge işlemi başladığında pakete ait olan dosya isimlerinin yazıldığı uzun bir liste göreceksiniz. Bazı dosya isimlerinin sol tarafında işaretler göreceksiniz. Bu işaretler !mtime, !empty, ve cfgpro işaretleridir ve paket kaldırıldığı halde bu dosyaların nie kaldırılmadığının sebebini açıklar. Listede bulup bu işaretlerin bulunmadığı dosya isimleri sistemden başarıyla kaldırılmıştır. Bu iç işaret şu nedenleri açıklar:

2.d. Mevcut Yazılımlar

ARCH mı, Değil mi?

Gentoo paketlerini ARCH ve ~ARCH adında iki olası biçime göre çağırır. Bu biçim kullandığınız mimariye bağlıdır. Diğer bir değişle, x86 temelli bir sistemde x86 ve ~x86, ppc temelli sistemdeppc ve ~ppc vb...

~ARCH biçimi paketin tam olarak test edilmediğini ve henüz ARCH kategorisine alınamayacağını belirtir. ~ARCH paketleri genellikle buglardan arındığında ve uzun süre bu şekilde devam edebildiğinde ARCH sınırına alınır.

Sisteminiz varsayılan olarak ARCH paketlerini kullanacaktır. Eğer sınırda yaşamayı seviyor, kırık paketleri kullanmayı kafaya takmıyorsanız ve bugs.gentoo.org, adresine bug raporu göndermekten hoşlanıyorsanız~ARCH seçeneğini kullanabilirsiniz. Eğer~ARCHkullanan bir sisteme geçmek istiyorsanız, ACCEPT_KEYWORDS değişkenini /etc/make.conf dosyasından değiştirin (tekrar: x86 temelli sistem için ~x86, vb.).

Şunu not alın; ARCH 'dan ~ARCHbiçimine dönmek abes olmaktan uzak.

Eğer sisteminizi şimdi güncellemek istiyorsanız, farkedeceğiniz üzere bir çok paket güncellenecek!

Maskelenmiş Paketler

Bir paket yüklemek istediğiniz zaman aşağıdaki gibi bir mesajla karşılaşabilirsiniz:

Kod Listeleme 4.1: Maskelenmiş paketler hakkında mesaj

Calculating dependencies   
!!! all ebuilds that could satisfy <your package> have been masked.

Bir paket iki sebepten dolayı maskelenir:

  1. Siz ARCH kullanıyorken paket ~ARCH biçimi olabilir.
  2. Paket açıkca sabit-maskeleme biçiminde olabilir.

Eğer paket birinci sebepten dolayı maskelenmişse ve siz bunu gerçekten kurmak istiyorsanız (neden ARCH sınıfında olmayışının sebebini bilerek), geçici olarak ~ARCH biçimini kullanabilirsiniz:

Kod Listeleme 4.2: Geçici olarak ~ARCH paketlerini kabul etmek

# ACCEPT_KEYWORDS="~x86" emerge gnumeric

Bir paket /usr/portage/profiles/package.mask dosyasının içinde listelendiyse sabit maskelenmiştir. Eğer bu dosyayı okursanız breaberinde sabit maskelenmesinin sebebinide okuyabilirsiniz. Tüm bunlara rağmen paketi yüklemek istiyorsanız (sürekli "sisteminizi kırar", "diğer paketleri kırar", "ciddi olarak test edilmesi gerekli" diyerek başınızı ağrıtmamıza rağmen), /etc/portage/package.unmask dosyası oluşturun ve paketin ismini bu dosyaya listeleyin (aynı şekilde /usr/portage/profile/package.mask içindede yapın).

Portage şemasını güncellediğinizde /usr/portage/package.mask dosyasını değiştirmeyin. Eğer bir dosyayı sabit maskelemek isterseniz /etc/portage/package.mask dosyası oluşturun ve paketin ismini içine listeleyin (aynı işlemi tersi içinde yapabilirsiniz).

Bloklanmış Paketler

Eğer ekranda aşağıdaki hatayı görürdüğünüz bir durumla karşılaştınız:

Kod Listeleme 4.3: Blocking package

[blocks B     ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0) 

Bu verilen örnekte, bonobo-activation paketi libbonobo paketinin yüklenmesini blokluyor. Bu durumdan kurtulmak için, bonono-activation paketini kaldırıp devam edin:

Kod Listeleme 4.4: Bloklama durumundan kurtulmak

# emerge unmerge bonobo-activation

3. Portage Özellikleri

3.a. DistCC

DistCC Nedir?

distcc birden fazla birbirine uyumlu olmak zorunda olmayan bilgisayarların, ağ üzerinden derlemeyi dağıtan yazılımdır. Distcc istemcisi gereken tüm bilgileri ulaşabildiği DistCC-sunucularına yollar (distccd'nin çalıştığı makinalar) ve böylece kaynak kodların istemciler tarafından derlenmesini sağlar. Sonuçta bu yöntemle zaman kazanırız.

DistCC hakkında daha ayrıntılı bilgiye Gentoo Distcc Documentation adresinden ulaşabilrisiniz.

DistCC Kurmak

DistCC'nin beraberinde gelen monitörün vasıtasıyla bilgisayarın derlemek için gönderdiği işlemlerden haberdar olabilirsiniz. Eğer Gnome kullanıyorsanız USE- değişkenlerinde 'gnome' eklemelisiniz, Gnome kullanmıyorsanız ve DistCC'nin monitörünü kullanmak istiyorsanız 'USE- değişkenine 'gtk' seçeneğini eklemelisiniz. Tüm yazılımların Gentoo'nun Portage'i tarafından sunulduğundan DistCC'nin kurumuda dolaysıyla çok basit.

Not: Bu bölümden itibaren artık binary paketlerin nasıl kurulduğunu bildiğinizi var sayarak, --usepkg seçeneğini Gentoo elkitabının geri kalan bölümlerinde anlatmıyacağız.

Kod Listeleme 1.1: Distcc kurulumu

# emerge distcc

Portage Desteğini Aktifleştirmek

Kurumu basit olduğuna göre geri kalanıda kolay olmalı :-) Hemen distcc'nin Portage desteğini açalım o halde.

İlk önce /etc/make.conf dosyamızı bir editörle açıp FEATURES değişkenine distcc anahtar kelimesini ekliyelim. Sonra MAKEOPTS değişkenine -jX seçeneğini eklemeliyiz, X burda distccd'yi sunuma açık tutan makinaların işlemci sayılarının bir fazlasıdır ( ve ilaveten yazılımın yükleneceği makinanın işlemcisi):

Kod Listeleme 1.2: Possible MAKEOPTS setting in /etc/make.conf

# distcc istemcisini iki adet tek işlemcili makinada çalıştığını farz edelim (sunucu makinayı saymadan):
MAKEOPTS="-j4"

Tekrardan /etc/make.conf dosyası içinde PORTAGE_TMPDIR satırının başındaki '#' işaretini kaldırarark, dosyamıza aşağıdaki satırı eklemelisiniz .

Kod Listeleme 1.3: Add an extra, distcc-specific variable to /etc/make.conf

# PORTAGE_TMPDIR - değişkeninin önndeki # işaretini kaldırmayı unutmayınız
DISTCC_DIR=${PORTAGE_TMPDIR}/portage/.distcc

Şimdi distcc-config yazıyoruz ve enter yapıp mevcut DistCC sunucularının listesini görebilirsiniz. Basit bir örnek olarak ulaşabildiğiniz DistCC sunucuların 192.168.1.102 (yazılımın kurulacağı makina), 192.168.1.103 ve 192.168.1.104 (uzaktaki sunucular) olduğunu var sayalım:

Kod Listeleme 1.4: DistCC'nin ulaşabildiği 3 adet DistCC sunucusu

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Elbetteki DistCC demonunu (distccd ) çalıştırmayı unutmuyoruz:

Kod Listeleme 1.5: DistCC demonunu çalıştırmak

# /etc/init.d/distccd start

Hayırlı olsun, sisteminiz artık derleme işlemini dağıtabilecek. Daha derin bilgi almak için Gentoo DistCC Rehberini okuyun: Gentoo DistCC Documentation.

3.b. ccache

ccache Nedir?

ccache hızlı bir derleyici arabirimidir. Bir yazılımı derlerken ara sonuçlar cache edilir, bu yazılıma re-derleme yaptığınızda 5 ve 10 katı arasında bir derleme hızına ulaşabilirsiniz.

Eğer ccache programının beraberinde getirdiği avantaj ve dezavantajları merak ediyorsanız, ccache anasayfasını ziyaret edin: ccache web sayfası.

ccache Kurmak

Gentoo linux'nuza ccache programını kurmak çok basit; sadece bir emerge ccache komutu yeterli.:)

Kod Listeleme 2.1: ccache kurulumu

# emerge ccache

Portage Desteğini Aktifleştirmek

İlk önce /etc/make.conf dosyasını bir editörle açıp FEATURES değişkenine ccache anahtar kelimesini eklemelisiniz:

Kod Listeleme 2.2: /etc/make.conf dosyasından FEATURES değişkenini düzenlemek

FEATURES="ccache"

Sonra CCACHE_SIZE değişkenini cache yapması için ccache yazılımına vermek istediğiniz sabit disk hacmini eklemelisiniz (Eğer CCACHE_SIZE değişkeni yoksa /etc/make.conf dosyasında bunu eklemek zorundasınız):

Kod Listeleme 2.3: CCACHE_SIZE değişkeninin /etc/make.conf dosyasından düzenlenmesi

CCACHE_SIZE="2G"

Bu işlemden itibaren Portage derleme işleminde ccache yazılımını kullanacaktır, ve her mümkün olduğunda derleme işlemini hızlandıracaktır. Ccache'in çalıştığına emin olmak için, ccache -s seçeneğiyle beraber çalıştırın. Böylece ccache yazılımının istatiklerine bakabilirsiniz:

Kod Listeleme 2.4: ccache istatistiklerine bakmak

# ccache -s

3.c. Binary Paketleri

Binary Paketlerini Oluşturmak

Önceki bölümlerde binary paketlerle nasıl çalışacağınızı anlatmıştık. Peki kendimiz nasıl binary paketleri oluşturabiliriz?

Eğer binary paketini oluşturmak istediğiniz yazılım makinanıza yüklüyse, quickpkg komutuyla yüklü dosyalardan bir Tarball oluşturabilirsiniz. Bu yöntem yedekleme ilemleri için çok faydalı bir yöntemdir (Oluşan dosyalar /usr/portage/packages/ALL dizini altında kaydolur).

Kod Listeleme 3.1: quickpkg kullanmak

# quickpkg gnumeric

Eğer gnumeric yazılımı makinanızda yüklü değilse bunu hemen emerge edebilirsiniz. Yüklerken aynı zamanda binary paketide oluşturabilirsiniz. emerge --buildpkg komutu (kısaltılması -b kullanılabilir) çalıştırmak yeterli olacaktır:

Kod Listeleme 3.2: Gnumeric programını yüklemek ve aynı işlem içinde binary paketini oluşturmak

# emerge --buildpkg gnumeric

Portage'in bunu devamlı olarak yapmasını dilerseniz, /etc/make.conf dosyasında bulunan FEATURES değişkenine buildpkg anahtarsözcüğünü eklemeniz gerekir.

Kod Listeleme 3.3: Binary paketlerin otomatik olarak oluşturulması

FEATURES="buildpkg"

Yazılımın sadece biner paketini oluşturmak ve sisteme yüklemek için emerge ederken --buildpkgonly seçeneğini kullanmalısınız (kısa yazılımı -B ).

Kod Listeleme 3.4: Gnumeric yazılımının sadece biner paketlerini oluşturmak

# emerge --buildpkgonly gnumeric

3.d. Güvenlik İle İlgili Özellikler

Sandbox

Portage paketleri yüklediğinde ve oluşturduğunda Live sisteminizi korumak için bir sandbox kullanır. Bunun anlamı bir paketin kurulumunun tamamıyle sonuna kadar sistemdeki hiçbir dosyaya sandbox dışında erişemesi. Böylece Portage'in hangi dosyanın hangi paketten alındığını yada hangi paket tarafından değiştirildiğini bilmesi mümkün olur.

Bir paketin derlenmesi bittiğinde, portage tarafından ilk önce Sandbox'da ön-kurulum yapılır. Bu işlem esnasında hangi dosyanın nereye taşındığı not alınır. Sonraki aşamada bu dosyalar Sandbox tarafından Live-sisteminize taşınır.

User Ayrıcalıkları

Portage kullanıcı tarafından paket oluşturulmasını destekliyor (daha doğrusu kullanıcı "portage" ve grub "portage"). Böylece paket oluşumundaki güvenlik artmış oluyor. Kullanıcı ayrıcalıklarını sandbox'lu yada sandbox'suz kullanmakta özgürsünüz. Genelde ama kullanıcı ayrıcalıkları ve Sandbox beraber kullanılır.

Sandbox İle Kullanıcı Ayrıcalıklarını Etkinleşirmek

Öntanımlı olarak portage tarafından sandbox kullanır. Eğer userpriv kullanmak isterseniz bunu FEATURES değişkenine eklemelisiniz. Dikkat edilmesi gereken bir olay, userpriv özelliğini aktif ettikten sonra sandbox'un deaktif hale geçmesi. Tabi bu olay usersandbox'u aktif ederseniz gerçekleşmez:

Kod Listeleme 4.1: Userpriv ve usersandbox'u etkinleştirmek

FEATURES="userpriv usersandbox"

Uyarı: sandbox'u katiyen FEATURES değişkeninden çıkarmayınız.

Sıkı Kontrol

Portage'e tehlikeli şartlara karşı sıkı önlem alması söylenebilir (örn. Eksik yada hatalı manifest - dosyaları için). Bu sıkı kontrolü açmak için FEATURES değişkenine strict seçeneğini ekleyin:

Kod Listeleme 4.2: Sıkı kontrolü açmak

FEATURES="strict"

Akıllı Dosya Sistemi Hakları

Portage'e otomatik olarak potansiyel tehlikeli dosya haklarını değiştirmesi söylenebilir. Bu işlem sırasında "grub(group)" ve "diğer(other)" okunabilir bit'lerin setuid dosyaları ve "diğer(other)" okunabilir bit'lerin setgid dosyaları kurum öncesi aşamada silinir. Akıllı dosya sistemi haklarını kullanmak için FEATURES değişkenine sfperms seçeneğini eklemek gerekir:

Kod Listeleme 4.3: Akıllı dosya sistemi haklarını kullanmak

FEATURES="sfperms"

3.e. Başka Özellikler

Portage Yardım

FEATURES değişkenine ekliyebileceğiniz daha çok anahtar kelimesi var. Genelde bir çoğu yapılandırıcılar tarafından kullanılmakta. Bu özellikler hakkında (yada Portage hakkında genel) bilgi edinmek isterseniz make.conf klavuz sayfasını okumayı ihmal etmeyin.

Kod Listeleme 5.1: Portage hakkında daha fazla bilgi

# man make.conf

4. Portage Davranışlarının Kontrolu

4.a. Ayar Dosyalarının Korunması

Korumak?

Portage'a "korunan dosyalar" konsepti eklenmiştir. Bunun anlamı , bir yazılımı güncellediğinizde belirli dosyaların yeni sürümlerini hemen eskisinin üstüne yazmak yerine kullanıcıyı yeni bir sürümün olduğuna dair uyarmasıdır. Bu , ayar dosyaları için ( /etc içinde duranlar) tabii ki çok kullanışlıdır. .

Bu dosyaların üstüne yazılmak yerine , yerine orjinal dosyanın adı gelecek şekilde ._cfg0000_<name> adında dosyalar. Bundan sonra dosyaların arasındaki farkları düzeltmek kullanıcıya kalmış olur. Ayrıca işlemi kolaylaştırmak için etc-update komutu da kullanılabilir. etc-update üstünde daha sonra duracağız.

CONFIG_PROTECT Tanımlaması

Portage , dosya tabanlı değil de klasör tabanlı bir koruma sunar. CONFIG_PROTECT , tüm korunan dosyaların listesini verir. Listeki dizinlerdeki tüm alt-dizinlerde aynı zamanda korunur. CONFIG_PROTECT , /etc/make.globals içinde tanımlanmıştır ama değiştirmek isterseniz , /etc/make.conf içinde tanımlama yapmanız gerekir( tutarlı olmak için tüm portage ayarlamalarında /etc/make.conf kullanılır).

Kod Listeleme 1.1: CONFIG_PROTECT ayarı örneği

CONFIG_PROTECT="/etc /usr/share/config /usr/kde/3.1/share/config"

Sadece belirli bir dizini koruyup alt dizinlerini korumak istemiyorsanız , bu dizinleri CONFIG_PROTECT_MASK değişkeninde belirtebilirsiniz. Bu değişken de aynı şekilde /etc/make.globals içinde tanımlanmış ama değişiklik yapabilmek için /etc/make.conf dosyasında tanımlanması gerekli :

Kod Listeleme 1.2: CONFIG_PROTECT_MASK ayarı örneği

CONFIG_PROTECT_MASK="/etc/init.d"

Ayar dosyalarının korunması hakkında daha çok bilgi , emerge'in online yardımında bulunabilir:

Kod Listeleme 1.3: Dosya Koruması Hakkında Bilgi Alım örneği

# emerge --help config

etc-update

etc-update aracı ,._cfg0000_<name> dosyalarının birleştirmesinde yardı eder.Etkileşimli bir birleştirme işlemi sunmasının yanında önemsiz değişiklikleri de otomatik yapar.

etc-update 'i çalıştırmak oldukça basit bir iş:

Kod Listeleme 1.4: etc-update kullanımı

# etc-update

Önemsiz değişiklikler yapıldıktan sonra , güncellenmeyi bekleyen korunan dosyaların bir listesiyle ve en altta da geçerli seçeneklerle karşılaşacaksınız:

Kod Listeleme 1.5: etc-update options

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'): 

Eğer -1 girerseniz, etc-update hiçbir değişiklik yapmadan doğrudan çıkar. -3 veya -5 seçimlerinde ise, listelenmiş bütün ayar dosyalarının üstüne yenileri yazılır. O yüzden otomatik olarak güncellenmemesini istediğiniz ayar dosyalarını seçmek çok önemli. Bu iş te , ilgili ayar dosyasının sol tarafındaki numarasını girmekten ibaret.

Örnek olarak biz /etc/pear.conf dosyasını seçtik:

Kod Listeleme 1.6: Belirli bir ayar dosyasını güncellemek

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

Artık iki dosyanın arasındaki farkları görebilirsiniz. Eğer güncellenmiş ayar dosyasının sorunsuz olarak çalışacağından eminseniz 1 seçin. Eğer güncellenmiş dosyanın gereksiz veya herhangi yeni, kullanışlı bilgi sağladığını düşünmüyosanız 2 seçin. Eğer şu anki ayar dosyasını etkileşimli olarak güncellemek isterseniz 3 seçin.

Etkileşimli birleştirmeyi çok detaylandırmaya gerek yok. Tam olması için , dosyaları etkileşimli olarak birleştirirken gerekli olan tüm komutları listeleyeceğiz. İki satır (orjinal dosya , teklif edilen dosya) ve aşağıdaki komutları girebileceğiniz bir komut satırı ile karşılaşacaksınız:

Kod Listeleme 1.7: Commands available for the interactive merging

ed:     Edit then use both versions, each decorated with a header.
eb:     Edit then use both versions.
el:     Edit then use the left version.
er:     Edit then use the right version.
e:      Edit a new version.
l:      Use the left version.
r:      Use the right version.
s:      Silently include common lines.
v:      Verbosely include common lines.
q:      Quit.

Önemli dosyaların güncellenmesini bitirdikten sonra artık diğer tüm dosyaları otomatik olarak güncelleyebilirsiniz. Eğer etc-update güncellenebilecek başka bir dosya bulamazsa , çıkar.

4.b. Ağ Ayarları

Yansılar

Gentoo hızlanarak popüler hale geldikçe , yansıları kullanmakta önem kazanıyor. Portage , yansılar için üç değişken kullanır : bir tane rsync yansıları için (Portage Ağacınızı senkronize etmek için), bir tane distfiles için (Kaynak kodu için), ve bir tanede önceden hazırlanmış paketler için.

Varolan tüm distfiles yansılarGentoo mirrors page adresnde bulunabilir.Sisteminizdeki yansı işlemlerini kolaylaştırmak için mirrorselect komutunuda kullanabilirsiniz. Ama önce değişkenleri bir görelim...

Kullanmak istediğiniz syncs aslında SYNC değişkeninin içinde tutulur. Örneğin rsync://rsync.namerica.gentoo.org/gentoo-portage adresini kullanmak için bunu /etc/make.conf içinde tanımlamamız gereklidir:

Kod Listeleme 2.1: /etc/make.conf için SYNC'i tanımlamak

SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage
      rsync://rsync.samerica.gentoo.org/gentoo-portage"

GENTOO_MIRRORS değişkeninde , kullanmak isteyebileceğiniz distfiles yansıları tutulur. Örneğin ftp://ibiblio.org/pub/Linux/distributions/gentoo adresini ilk seçenek ve http://www.gtlib.cc.gatech.edu/pub/gentoo adresini ikinci seçenek olarak kullanmak isterseniz bunu /etc/make.conf içinde tanımlamanız gerekir :

Kod Listeleme 2.2: /etc/make.conf içinde GENTOO_MIRRORS'ı tanımlamak

GENTOO_MIRRORS="ftp://ibiblio.org/pub/Linux/distributions/gentoo
                http://www.gtlib.cc.gatech.edu/pub/gentoo"

PORTAGE_BINHOST eğişkeninde , kullanmak isteyebileceğiniz önceden derlenmiş paketler tutulur. Örneğin , ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp, adresini kullanmak isterseniz bunu/etc/make.conf dosyasında tanımlamanız gereklidir:

Kod Listeleme 2.3: etc/make.conf içinde PORTAGE_BINHOST'u tanımlamak

PORTAGE_BINHOST="ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp"

Mirrorselect

mirrorselect kullanmak istiyorsanız önce kurmalısınız (tabii daha önce kurmadıysanız).

Kod Listeleme 2.4: mirrorselect kurulması

# emerge mirrorselect

Artık mirrorselect yansıları otomatik olarak seçmesi veya sizin bir listeden elle seçmeniz gibi iki seçeneğiniz mevcut. Mirrorselect'in nasıl kullanılacağı hakkında bilgi için , komut satırından mirrorselect'i çalıştırın - kısa bir bakış sunar.

Kod Listeleme 2.5: mirrorselect çalıştırmak

# mirrorselect

İndirmek (fetching)

Portage'ın arşivleri hangi programla indireceğini FETCHCOMMAND ve RESUMECOMMAND ayarlarında belirtebilirsiniz. /etc/make.conf ve /etc/make.globals dosyaların birkaç örnek mevcut. Portage'da varsayılan olarak wget kullanılır :

Kod Listeleme 2.6: Varsayılan FETCHCOMMAND & RESUMECOMMAND

FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"

${DISTDIR} değişkeni , indirilen dosyaların saklanacağı dizin adıyla değiştirilirken (/usr/portage/distfiles), ${URI} değişkeni Portage'ın indirmesi gerekn dosyanın adresi ile değiştirilir.

Portage, varsayılan olarak wget kullandığı için http_proxy ve ftp_proxy (küçkharf ile yazıldığına dikkat edin)tanımlanarak vekil sunucu (proxy) kullanılabilir. Bu işi /etc/make.conf dosyasının içindende yapabilrisiniz fakat http_proxy ve ftp_proxy değişkenleri başka programlar tarafından da kullanılılabiliyor. Bu yüzden /etc/make.conf yerine geneş bir yol kullanmanızı tavsiye ederiz. Sistem çapında değişkenleri nasıl tanımlayabileceğinizi öğrenmek için Ortam Değişkenleri bölümünü okuyun.

"rsync" Ayarlamak

rsync , emerge sync tarafından Portage Ağacını güncellemek için kullanılır. Portage tarafından kullanılan ve Rsync'in çalışmasını değiştiren üç tane değişken var : RSYNC_EXCLUDEFROM, RSYNC_RETRIES ve RSYNC_TIMEOUT.

Ebuild'lerin portage tarafından otomatik olarak güncelleştirilip kaldırılmasını "engellemenin" bir yolu RSYNC_EXCLUDEFROM değişkenidir. rsync belirli dosyaları dışarıda bırakmak için kullandığı dosyalardan birine yazılabilir ve varsayılan olarak /etc/portage/rsync_excludes dosyasındadır.Dikkatli olunmadığında bağımlılıkları bozabilecek bir yol olduğundan kullanılması tavsiye *edilmez*. Tavsiye edilen yol olan PORTDIR_OVERLAY değişkeninden daha sonra bahsedeceğiz. Daha çok bilgi için lütfen rsync man sayfasını okuyun.

Kod Listeleme 2.7: RSYNC_EXCLUDEFORM değişkeni

RSYNC_EXCLUDEFROM="/etc/portage/rsync_excludes"

"rsync" başarılı olamadığında , varolan diğer sunucuya geçmeden önce birkaç kere deneme yapar. Bu sayı RSYNC_RETRIES tanımlıdır ve varsayılan olarak3'tür:

Kod Listeleme 2.8: RSYNC_RETRIES="3"

RSYNC_RETRIES="3"

Eğer (çok) yavaş bir rsync sunucusu kullanıyorsanız, rsync ver akışı durursa zaman aşımı (time-out) verebilir. Zaman aşımını bekleme süresi RSYNC_TIMEOUT değişkeninde tanımlıdır ve varsayılan olarak 180 değeri atanmıştır:

Kod Listeleme 2.9: RSYNC_TIMEOUT değişkeni

RSYNC_TIMEOUT="180"

4.c. Dizin Yolları

Giriş

Değişik işlemler için kullanılan dizinler ve Portage'ın ihtiyacı olduğu dosyalarda dahil olmak üzere Portage hakkındaki herşey ayarlanabilir. Varsayılan yolları (/etc/make.globals dosyasında tanımlandığı üzere) değiştirmek için /etc/make.conf dosyasında - başka nerede olabilir ki? :) - doğru değişkenleri tanımlamalısınız.

Uyarı: Eğer herhangi bir değişkeni değiştiriyorsanız yazdığınız yolun sonuna *kesinlikle* / eklemeyin!

Portage Ağacı

Portage Ağacının yolu PORTDIR değişkeninde tanımlıdır. Varsayılan olarak /usr/portage yolu tanımlanmıştır:

Kod Listeleme 3.1: PORTDIR değişkeni

PORTDIR="/usr/portage"

Yerel bir Portage ağacını , "resmi" sürüme yakın tutmak istiyorsanız PORTDIR_OVERLAY değişkenini tanımlamalısınız. Bu değişkende listelenen dizin(ler) , emerge sync olayından etkilenmezler : buralardaki ebuildler güncellenmez veya kaldırılmazlar ama Portage Ağacına dahildir.

Kod Listeleme 3.2: PORTDIR_OVERLAY değişkeni

PORTDIR_OVERLAY="/usr/local/portage"

Distfiles

İndirilen kaynak kodlarının (distfiles denen) yolları DISTDIR değişkeninde tanımlıdır. Varsayılan olarak ${PORTDIR}/distfiles yolunu gösterir :

Kod Listeleme 3.3: DISTDIR değişkeni

DISTDIR="${PORTDIR}/distfiles"

Paketler ve RPM'ler

Önceden derlenmiş paketlerin yolları ise PKGDIR değişkeninde tanımlıdır. Varsayılan olarak ${PORTDIR}/packages olarak belirlenmiştir:

Kod Listeleme 3.4: PKGDIR değişkeni

PKGDIR="${PORTDIR}/packages"

RPMlerin (evet , bazı paketler RPM olarak mevcut) yolları ise RPMDIR değişkeni sorumludur. Varsayılan olarak ${PORTDIR}/rpm belirtilmiştir:

Kod Listeleme 3.5: RPMDIR değişkeni

RPMDIR="${PORTDIR}/rpm"

Gecici Portage Dosyaları

Portage , ebuildleri oluşturmak için geçici bir dizin kullanır. Bu dizinin yolu PORTAGE_TMPDIR değişkeninde tanımlıdır ve varsayılan olarak /var/tmp yoludur:

Kod Listeleme 3.6: PORTAGE_TMPDIRdeğişkeni

PORTAGE_TMPDIR="/var/tmp"

Portage varsayılan olarak , PORTAGE_TMPDIR içinde bir portage dizini oluşturur. Bu ise BUILD_PREFIX değişkeninde tanımlıdır:

Kod Listeleme 3.7: BUILD_PREFIX değişkeni

BUILD_PREFIX="${PORTAGE_TMPDIR}/portage"

Bu yolu değiştirmeye karar verirseniz , geçici dizini yeterli disk alanına sahip bir yere koyduğunuzdan emin olun : büyük yazılım paketlerini derlerken dizin , 2GB+ olabiliyor.

Kayıt Tutma (Logging)

PORT_LOGDIR özel bir değişken olmakla birlikte varsayılan olarak tanımlı değildir. Eğer tanımlarsanız Portage , her ebuild için verilen dizinde bir kayıt dosyası oluşturur :

Kod Listeleme 3.8: PORT_LOGDIR değişkeni

PORT_LOGDIR="/var/log/portage"

4.d. Diğer Portage Ayarları

Caziplik Değeri

Portage , caziplik değerine (Önceliğe benzer bir değer) derlemeyi destekliyor. Eğer Portage'ın paketleri daha yüksek caziplik-değerinde derlemesini (derleme sırasında sistemin ulaşılbilirliğini arttırır fakat derleme süresini uzatır) istiyorsanız PORTAGE_NICENESS değişkenini pozitif bir sayı olarak tanımlayın :

Kod Listeleme 4.1: PORTAGE_NICENESS değişkeni

PORTAGE_NICENESS="3"

SLOT'lanmış Paketler ve Otomatik Temizlik

Bazı durumlarda bir paketin(kütüphaneler dahil olmak üzere) birden çok sürümünün sistemde varolmasını isteyebilirsiniz. Portage bunu , ebuildlerdeki SLOT değişkeni ile destekler. Bir kullanıcı olarak SLOT'lamanın nasıl çalıştığını bilmek zorunda değilsiniz ama bunun desteklendiğini bilmeniz önemli.

Eğer bir paketin daha yeni bir sürümünü kuruyorsanız , Portage bu paket için tanımlı olan SLOT değerine bakar. Eğer bu değer her iki pakette (eski ve yeni) farklıysa , eski pakete dokunulmaz.

Bununla birlikte SLOT değişkeni aynıysa (genellikle olan durum) , varsayılan olarak eski paket kaldırılır. Bu kaldırma işleminin kullanıcı tarafından kesilebilir bir hale getirilmesi için Portage , belli bir sayıdan geriye doğru sayar. Bu değer CLEAN_DELAY değişkeninde tanımlıdır ve varsayılan olarak 5 saniyedir:

Kod Listeleme 4.2: CLEAN_DELAY değişkeni

CLEAN_DELAY="5"

Eğer Portage'nin otomatik olarak eski sürümleri silmesini İSTEMİYORSANIZ AUTOCLEAN değişkenine no değerini atayın:

Kod Listeleme 4.3: AUTOCLEAN değişkeni

AUTOCLEAN="no"

Derlemeyle İlgili Değişkenler

Buraya kadar birçok değişken gördük ama daha bitmedi. Gentoo kuranlar , derleyicinin paketleri derleyip optimize etmesi için kullanılan CHOST, CFLAGS ve CXXFLAGS değişkenlerini bilir.

Bu değişkenler hakkında daha çok bilgi gcc bilgi sayrafından veya GCC Online Manuals sayfasında online olara bulunabilir.

Kod Listeleme 4.4: CHOST,CFLAGS ve CXXFLAGS bilgilerini almak

# info gcc
(Select "Invoking gcc")
(Select "Optimize options")

Eğer DEBUGBUILD tanımlıysa Portage , debug işini kolaylaştırmak için yapılan tüm binary kütüphanelerin gösterilmesini gerçekleştirmez. Bu sisteminizi yavaşlatıp , dosya boyutunu büyütür.

Kod Listeleme 4.5: DEBUGBUILD değişkeni

# Do not set this to "false"; instead remove the line. Portage does not
# check the value, it just checks if the variable is defined.
DEBUGBUILD="true"

MAKEOPTS değişkeni make tarafından bir paketin derlenmesini kolaylaştırmak için kullanılır. Genellikle make birkaç derlemeyi aynı anda yapmasını söylemek için ayarlıdır (özellikle çok işlemcili bir makine veya distcc kullanıyorsanız).

"make" üç tane derlemeyi aynı anda yapmasını sağlamak için MAKEOPTS değişkenini -j3ayarlayın:

Kod Listeleme 4.6: MAKEOPTS değişkeni

MAKEOPTS="-j3"

ROOT değişkeni /etc/make.conf yerine ortam değişkeni olarak tanımlanmalıdır. Portage bu değişkeni , bir paketin nereye kurulacağını öğrenmek için kontrol eder. Tabiiki varsayılan olarak / dir. Örnek olarak , gnumeric yazılımının çalışan sistem yerine nasıl /mnt/gentoo altına kurulacağını gösteriyoruz:

Kod Listeleme 4.7: ROOT değişkeni

# ROOT="/mnt/gentoo" emerge gnumeric

Çıktı Biçimlendirmesi

Varsayılan olarak Portage , çıktısını okunabilirliğini arttımak için renklendirir. Bunu istemiyorsanız NOCOLOR değişkenini true yapın:

Kod Listeleme 4.8: NOCOLOR değişkeni

NOCOLOR="true"

4.e. Kaynaklar

Man Sayfaları

Eğer tüm değişkenleri çabucak görebileceğiniz bir yer gerekiyorsa , lütfen make.conf man page sayfalarına göz atmayı unutmayın

Kod Listeleme 5.1: Make.conf man dosyasına göz atmak

# man make.conf

Örnekler

/etc/make.conf dosyasında sizinde ilginç bulabileceğiniz birçok örnek mevcut. Bununla birlikte birçok kişi/etc/make.conf dosyalarını güncellemedikleri için bu dosyaya yapılan değişiklikleri göremiyorlar. /etc/make.conf dosyasının son halini Online ViewCVS Repository depomuzda bulabilirsiniz.

5. İnit Betikleri (initscripts)

5.a. Çalışma Seviyeleri(run levels)

Sisteminizi Önyükleme

Sisteminizi önyüklediğinizde, birçok kayan yazıyı farkedersiniz. Eğer dikkatlice takip ederseniz, bu yazıların sisteminizi her açtığınızda aynı olduğunu görürsünüz. Bu işlemler dizisinin tamamına açılış dizisi denir ve (az ya da çok) statik olarak belirtilir.

Önce, açılış yöneticisi, ayar dosyasında belirttiğiniz kerneli hafızaya yükler, sonra da işlemciye kerneli çalıştırmasını söyler. Kernel yüklenip çalıştırıldığında, kernele özgü yapı ve görevleri başlatır ve init sürecini çalıştırır.

Bu süreç, daha sonra (/etc/fstab içinde tanımlı) bütün dosya sistemlerinin bağlanıp kullanıma hazır olduğundan emin olur. Sonra da /etc/init.d içinde bulunan, sisteminizin başarılı bir şekilde açılması için gerekli servisleri başlatacak çeşitli betikleri çalıştırır.

Son olarak, bütün betikler çalıştırıldığında, init süreci, agetty adındaki özel süreci bağlayarak terminalleri (genellikle ALT-F1, ALT-F2, ... altındaki sanal konsolları) aktifleştirir. Bu süreç daha sonra login'i çalıştırarak terminallere bağlanabileceğinizden emin olur.

Açılış Betikleri (Init Scripts)

Buradainit , /etc/init.d ,çindeki betikleri rastgele çalıştırmaz. Hatta /etc/init.d içindeki her betiği değil, sadece çalıştırması söylenenleri çalıştırır. Hangi betikleri çalıştırması gerektiğine /etc/runlevels içine bakarak karar verir.

Önce init , /etc/runlevels/boot içinde sembolik bağlantısı olan /etc/init.d betiklerini çalıştırır. Genellikle, betiklere alfabetik sırada başlar, ama bazı betikler bağımlılık bilgisi içerir ve çalışmadan önce başka hangi betiklerin çalıştırılması gerektiğini sisteme söyler.

/etc/runlevels/boot içinde referansı bulunan her betik çalıştırıldıktan sonra init, /etc/runlevels/default içinde sembolik bağlantısı olan betikleri çalıştırır. Tekrar, hangi betiğin önce çalışacağına, düzgün bir başlangıç süreci sağlamak için içerisinde bağımlılık bilgisi içermediği sürece alfabetik sırayı kullanarak karar verir.

Init Nasıl Çalışır

Elbette init bunların hepsini kendisi düşünmez. Hangi işlemlerin yapılacağını belirten bir konfigürasyon dosyasına ihtiyaç duyar. Bu konfigürasyon dosyası /etc/inittab'dir.

Eğer size biraz önce açıkladığımız açılış dizisini hatırlarsanız, init'in ilk işi dosya sistemlerini bağlamaktır. Bu, /etc/inittab içindeki şu satır ile belirtilmiştir:

Kod Listeleme 1.1: /etc/inittab içindeki sistem başlangıcı satırı

si::sysinit:/sbin/rc sysinit

Bu satır init'e, sistemi başlatmak için /sbin/rc sysinit komutunu çalıştırması gerektiğini söyler. /sbin/rc betiği, başlangıç işlemlerini halleder, bu yüzden init'in çok iş yapmadığını -- sistem başlangıç işlemlerinin yapılması işini başka süreçlere aktarır.

İkinci olarak init, /etc/runlevels/boot içinde sembolik bağlantısı buşunan bütün betikleri çalıştırır. Bu, aşağıdaki satır ile tanımlanmıştır:

Kod Listeleme 1.2: Sistem başlangıcı, devamı

rc::bootwait:/sbin/rc boot

Yine rc betiği, gerekli işlemleri gerçekleştirir. Dikkat ederseniz, rc'ye verilen parametre (boot), /etc/runlevels altındaki altdizin ile aynıdır.

Şimdi init, hangi çalışma seviyesinin kullanılacağını görmek için konfigürasyon dosyasını kontrol eder. Buna karar vermek için, /etc/inittab'deki aşağıdaki satırı okur:

Kod Listeleme 1.3: initdefault satırı

id:3:initdefault:

Bu durumda (Gentoo kullanıcılarının çoğunun kullanacağı) çalışma seviyesi (runlevel) 3'tür. Bu bilgiyi kullanarak init, 3 numaralı çalışma seviyesi için neyi çalıştırması gerektiğini kontrol eder:

Kod Listeleme 1.4: Çalışma seviyeleri tanımlamaları

l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot

TSeviye 3'ü tanımlayan satır, servisleri çalıştırmak için tekrar rc betiğini (default argümanını ile) kullanır. Tekrar, rc'nin argümanının /etc/runlevels içindeki altdizin ile aynı olduğuna dikkat edin.

rc bittiğinde, init hangi sanal konsolları aktifleştirmesi ve her konsolda hangi komutları çalıştırması gerektiğine karar verir:

Kod Listeleme 1.5: Sanal konsol tanımlaması

c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Çalışma Seviyesi Nedir?

Init'in hangi çalışma seviyesini aktifleştireceğine karar vermesi için bir numaralandırma yöntemi kullandığını gördünüz. Bir çalışma seviyesi, sisteminizin hangi durumda çalıştığıdır ve bir çalışma seviyesine girdiğinizde çalıştırılması gereken betik topluluğunu (çalışma seviyesi betikleri ya da init betikleri) içerir.

Gentoo'da, yedi çalışma seviyesi tanımlanmıştır: üç dahili çalışma seviyesi ve dört kullanıcı tanımlı çalışma seviyesi. Dahili çalışma seviyeleri sysinit, shutdown ve reboot'tur ve isimlerinin ima ettiği işleri yaparlar: sistemi başlat, sistemi kapat, sistemi yeniden başlat.

Kullanıcı tanımlı çalışma seviyeleri de /etc/runlevels içinde altdizini bulunan boot, default, nonetwork ve single'dır. boot çalışma seviyesi, diğer tüm çalışma seviyelerinin kullandığı, sisteme gereken tüm servisleri çalıştırır. Geri kalan üç çalışma seviyesi de, çalıştırdıkları servislere göre farklılık gösterirler: default, günlük yapılan işler için kullanılır; nonetwork, ağ bağlantısı gerekmediğinde kullanılır; single ise sistemi onarmak istediğinizde kullanılır.

Init Betikleri ile Çalışma

rc sürecinin başlattığı betiklere init betikleri denir. /etc/init.d içindeki her betik start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme veya broken argümanları ile çalıştırılabilir.

Bir servisi (ve bağlı tüm servisleri) başlatmak, durdurmak ya da yeniden başlatmak için, start, stop ve restart kullanılır:

Kod Listeleme 1.6: Postfix'i başlatma

# /etc/init.d/postfix start

Not: Sadece belirtilen servise ihtiyaç duyan servisler durdurulur yada yeniden başlatılır. Diğer bağımlı servislere (servisi kullanan ama ihtiyaç duymayanlara) dokunulmaz.

Eğer bir servisi durdurmak istiyorsanız, ama ona bağlı servisleri durdurmak istemiyorsanız, pause argümanını kullanabilirsiniz:

Kod Listeleme 1.7: Postfix'i durdurma ve bağlı servisleri çalışır durumda bırakma

# /etc/init.d/postfix pause

Eğer bir servisin durumunu öğrenmek istiyorsanız (başlamış, durmuş, bekletilmiş), status argümanını kullanabilirsiniz:

Kod Listeleme 1.8: Postfix'in durum bilgisi

# /etc/init.d/postfix status

Eğer durum bilgisi size servisin çalıştığını gösteriyorsa, ancak öyle olmadığını biliyorsanız, servisin durum bilgisini zap argümanı ile "durdurulmuş" konuma sıfırlayabilirsiniz:

Kod Listeleme 1.9: Postfix'in durum bilgisini sıfırlama

# /etc/init.d/postfix zap

Servisin hangi bağımlılıklara sahip olduğunu öğrenmek için iuse ve ineed argümanlarını kullanabilirsiniz. ineed ile servisin çalışması için hangi servislerin bulunması gerektiğini görebilirsiniz. Diğer taraftan, iuse ile servis tarafından kullanılabilen, ancak çalışması için bulunması zorunlu olmayan servislerin listesini görebilirsiniz.

Kod Listeleme 1.10: Postfix'in ihtiyaç duyduğu servislerin listesini isteme

# /etc/init.d/postfix ineed

Benzer olarak, servise ihtiyaç duyan servislerin (needsme) ve servisi kullanabilen servislerin (usesme) listesini öğrenebilirsiniz:

Kod Listeleme 1.11: Postfix'e ihtiyaç duyan servislerin listesini isteme

# /etc/init.d/postfix needsme

Son olarak, servis için gerekli olan kayıp servislerin listesini de öğrenebilirsiniz:

Kod Listeleme 1.12: Postfix'in ihtiyaç duyduğu kayıp servislerin listesini isteme

# /etc/init.d/postfix broken

5.b. rc-update ile Çalışma

rc-update nedir?

Gentoo'nun init sistemi hangi servislerin önce çalıştırılması gerektiğine karar veren bir bağımlılık ağacı kullanır. Bu can sıkıcı iş yüzünden kullanıcılarımızın bunu el ile yapmalarını istemiyorduk, çalışma seviyeleri ve init betiklerinin yönetimini kolaylaştırmak için bazı araçlar hazırladık.

rc-update sayesinde, bir çalışma seviyesine init betiği ekleyip çıkarabilirsiniz. Sonra rc-update aracı otomatik olarak depscan.sh betiğinden bağımlılık ağacını oluşturmasını ister.

Servis Ekleme ve Çıkarma

Daha önce, Gentoo kurulumu sırasında init betiklerini "default" çalışma seviyesine eklediniz. O zamanda, "default"un ne için olduğu hakkında bilginiz yoktu, ama şimdi olmalı. rc-update betiği bir argümana ihtiyaç duyar: add (eklemek için), del (silmek için) veya show (göstermek için).

Init betiği eklemek ya da çıkarmak için, rc-updatekomutuna add veya del argümanlarını verin, ardından init betiğini ve çalışma seviyesini yazın. Mesela:

Kod Listeleme 2.1: default çalışma seviyesinden Postfix'i çıkarma

# rc-update del postfix default

rc-update show komutu size bütün init betiklerini ve hangi çalışma seviyesinde çalıştıklarını gösterir:

Kod Listeleme 2.2: Init betiği bilgisini alma

# rc-update show

5.c. Servisleri Ayarlama

Fazladan Ayarlamaya Olan İhtiyaç Neden?

Init betikleri oldukça karmaşık olabilir. Bu yüzden kullanıcıların init betiklerini doğrudan düzenlemesi çekici olmayabilir, ayrıca betikleri hata eğilimli hale getirebilir. Bununla beraber, herhangi bir servis ayarlamasını yapabilmek önemlidir. Mesela bir servisin kendisine daha fazla opsiyon eklemek isteyebilirsiniz.

Bu konfigürasyonu init betiğinin dışından yapmak için ikinici bir sebep, konfigürasyon değişikliklerinizin yapılmamış olmasından korkmadan güncelleme yapabilmektir.

/etc/conf.d Dizini

Gentoo, bir servisi konfigüre etmek için kolay bir yol sunar: konfigüre edilebilen her init betiği /etc/conf.d içinde bir dosyaya sahiptir. Mesela, apache2 init betiği (/etc/init.d/apache2), Apache 2 sunucusu başlatılırken verilecek opsiyonları içeren /etc/conf.d/apache2 içinde bir konfigürasyon dosyasına sahiptir:

Kod Listeleme 3.1: /etc/conf.d/apache2 içinde tanımlanmış değişken

APACHE2_OPTS="-D PHP4"

Böyle bir konfigürasyon dosyası değişkenleri ve yalnız olan değişkenleri (tıpkı /etc/make.conf gibi) içerir, servisleri konfigüre etmeyi çok kolay hale getirir. Ayrıca (yorumlar ile) değişkenler hakkında daha fazla bilgi vermeyi de sağlar.

5.d. Init Betikleri Yazma

Yazmak zorunda mıyım?

Hayır. Gentoo, sunulan servisler için kullanıma hazır init betikleri sunduğundan, init betikleri yazmak çoğu zaman gerekli değildir. Ancak, Portage kullanmadan bir servis kurduğunuzda, muhtemelen kendi init betiğinizi yaratmanız gerekebilir.

Açık şekilde Gentoo için yazılmamışsa, bir servis ile sunulan init betiğini kullanmayın: Gentoo'nun init betikleri diğer dağıtımların kullandığı init betikleri ile uyumlu değildir!

Düzen (Layout)

Bir init betiğinin temel yapısı aşağıda gösterilmiştir:

Kod Listeleme 4.1: Bir init betiğinin temel yapısı

#!/sbin/runscript

depend() {
  (Dependency information)
}

start() {
  (Commands necessary to start the service)
}

stop() {
  (Commands necessary to stop the service)
}

restart() {
  (Commands necessary to restart the service)
}

Her init betiğinde start() fonksiyonunun tanımlı olması gerekir. Diğerleri ihtiyaca göre değişebilir.

Bağımlılıklar

Tanımlayabileceğiniz iki bağımlılık vardır: use ve need. Daha önce belirttiğimiz gibi, need bağımlılığı use bağımlılığından daha katıdır. Bu bağımlılık tipini takip ederek, bağımlı olduğunuz servise, ya da sanal bağımlılığa girersiniz.

Sanal bağımlılık, bir servisin sağladığı, ancak yalnızca o servis tarafından sağlanmayan bir bağımlılıktır. Sizin init betiğiniz sistem kayıt edicisine bağlı olabilir, ancak pek çok sistem kayıt edicisi (metalogd, syslog-ng, sysklodg, ...) vardır. Her birine tek tek ihtiyaç duymayacağınız (need) için (hiçbir mantıklı sistemde bütün bu sistem kayıt edicilerin hepsi yüklü ve çalışır durumda değildir), biz bütün bu servislerin sanal bağımlılık sağladığından (provide) emin olduk.

Postfix servisine ait bağımlılık bilgisine bakalım:

Kod Listeleme 4.2: Postfix için bağımlılık bilgisi

depend() {
  need net
  use logger dns
  provide mta
}

Gördüğünüz gibi, postfix servisi:

Sıralamayı Kontrol Etme

Birçok durumda, bir servise ihtiyaç duymazsınız ama servisinizin, bu servis sisteminizde varsa, ondan önce (before) ya da sonra (after) çalışması gerekebilir (şarta dikkat edin - bu artık bağımlılık değildir), ve aynı çalışma seviyesinde çalışır (şarta dikkat edin - sadece aynı çalışma seviyesindeki servisler birbirine bağlanabilir). Bu bilgiyi before ve after ayarları ile sağlayabilirsiniz.

Örnek olarak Portmap servisinin ayarlarına bakalım:

Kod Listeleme 4.3: Portmap servisinin depend() fonksiyonu

depend() {
  need net
  before inetd
  before xinetd
}

Ayrıca "*" işaretini kullanarak çalışma seviyesindeki tüm servisleri temsil edebilirsiniz, ancak bu tavsiye edilmez.

Kod Listeleme 4.4: Bir init betiğini çalışma seviyesinde ilk çalıştırma

depend() {
  before *
}

Standart Fonksiyonlar

depend() işlevselliğinden sonra, bir de start() fonksiyonunu tanımlamalısınız. Bu, servisinizi başlatmak için gerekli tüm komutları içerir. ebegin ve eend fonksiyonlarını kullanarak kullanıcıya ne olup bittiği konusunda bilgilendirmek tavsiye edilir:

Kod Listeleme 4.5: Örnek start() fonksiyonu

start() {
  ebegin "Starting my_service"
  start-stop-daemon --start --quiet --exec /path/to/my_service
  eend $?
}

Eğer start() fonksiyonu ile ilgili daha fazla örnek görmek istiyorsanız, lütfen /etc/init.d dizininizdeki init betiklerinin kaynak kodlarını okuyun. Daha fazla bilgiye ihtiyaç duyarsanız, start-stop-daemon için mükemmel bir klavuz sayfası (man sayfası) bulunmaktadır:

Kod Listeleme 4.6: start-stop-daemon hakkındaki man sayfasını okuma

# man start-stop-daemon

Tanımlayabileceğiniz diğer fonksiyonlar şunlardır: stop() ve restart(). Bu fonksiyonları tanımlamaya zorlanmamaktasınız! Bizim init sistemimiz bu fonksiyonları kendisi dolduracak kadar zekidir, tabi start-stop-daemon kullanırsanız.

Özel Seçenekler Ekleme

Eğer kendi init betiklerinizin, daha önce karşılaştığımız seçeneklerden daha fazlasını desteklemesini istiyorsanız, istediğiniz seçeneği opts değişkenine eklemeli, ve aynı isimde bir fonksiyon yaramalısınız. Örneğin, restartdelay adında bir seçenek eklemek için:

Kod Listeleme 4.7: restartdelay seçeneğini ekleme

opts="${opts} restartdelay"

restartdelay() {
  stop()
  sleep 3    # Başlatmadan önce 3 saniye bekle
  start()
}

Servis Ayar Değişkenleri

/etc/conf.d içinde bir konfigürasyon dosyası kullanmak için yapmanız gereken ek birşey yoktur. Init betiğiniz çalıştırıldığında, aşağıdaki dosyalar otomatik olarak okunur (örneğin kullanılabilir değişkenler):

Ayrıca, eğer init betiğiniz sanal bir bağımlılık ( net gibi), ağlıyorsa, ilişkilendirilen bağımlılığa ait konfigürasyon da (/etc/conf.d/net gibi) okunur.

5.e. Çalışma Seviyesi Davranışını Değiştirme

Bundan Kim Yararlanabilir?

Birçok dizüstü bilgisayar kullanıcısı bu durumu bilir: evdeyken net.eth0 'ı çalıştırmanız gerekir, ancak yoldayken (mevcut bir ağ olmadığında)net.eth0 'ı çalıştırmanız gerekmez. Gentoo ile, çalışma seviyesi davranışını isteğinize göre değiştirebilirsiniz.

Örneğin, başka init betiklerinin bulunduğu ikinci bir "default" çalışma seviyesi yaratabilirsiniz. Açılış anında hangisini çalıştıracağınızı seçebilirsiniz.

SOFTLEVEL Kullanma

Herşeyden önce, ikinci "default" çalışma seviyeniz için bir dizin yaratın. Örnek olarak offline çalışma seviyesi yaratalım:

Kod Listeleme 5.1: Çalışma seviyesi dizini yaratma

# mkdir /etc/runlevels/offline

Gerekli init betiklerini yeni yaratılan çalışma seviyesine ekleyin. Mesela, mevcut default çalışma seviyenizin net.eth0'ı içermeyen bir kopyasını yaratmak istiyorsanız:

Kod Listeleme 5.2: Gerekli init betiklerini ekleme

# ls /etc/runlevels/default
acpid  domainname  local  net.eth0  netmount  postfix  syslog-ng  vcron
# rc-update add acpid offline
# rc-update add domainname offline
# rc-update add local offline
# rc-update add syslog-ng offline
# rc-update add vixie-cron offline

Şimdi açılış yöneticinizin ayarlarını değiştirerek, offline çalışma seviyesi için bir kayıt ekleyin. Örneğin /boot/grub/grub.conf dosyasının içine:

Kod Listeleme 5.3: offline çalışma seviyesi için bir kayıt ekleme

title Gentoo Linux Offline Usage
  root (hd0,0)
  kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

İşte yaptınız. Eğer sisteminizi açarken yeni eklediğiniz kaydı seçerseniz, default çalışma seviyesi yerine offline çalışma seviyesi kullanılır.

BOOTLEVEL Kullanma

bootlevel kullanmak softlevel kullanmaya çok benzer. ek fark, ikinci "default" çalışma seviyesi tanımlamak yerine ikinci "boot" çalışma seviyesi tanımlamanızdır.

6. Ortam Değişkenleri

6.a. Ortam Değişkenleri

Ortam Değişkenleri Nedir?

Ortam değişkenleri , bir veya daha çok uygulamanın kullandığı bilgiyi saklayan isimlendirilmiş nesnelerdir. Birçok kullanıcı (özellikle Linux'a yeni olanlar) bunu garip ve kullanışsız bulabilir. Fakat bu yanlış : ortam değişkenleri yardımıyla bir veya daha çok uygulamanın ayarı çok kolay değiştirilebilir.

Bazı Önemli Değişkenler

Aşağıdaki tabloda Linuxta kullanılan birçok değişkenin ismi ve ne işe yaradıkları yazıyor. Örnek değerler tablodan sonra veriliyor.

Değişken Açıklama
PATH Sistemin çalıştırılabilir dosyalar için bakacağı yerlerin listesi , iki nokta üstüste ile ayrılmış şekilde burada saklanır. Eğer bir komut verirseniz (mesela ls, rc-update veya emerge) ve bu komut listelenmiş dizinlerin hiçbirinde mevcut değilse , sistem bunu çalıştırmaz. (/bin/ls gibi tam yolu yazmadığınız sürece)
ROOTPATH Bu değişken de PATH gibidir fakat sadece root olan kullanıcı bir komut verdiğinde bakılacak dizinleri içerir.
LDPATH Bu değişken dinamik linker'in bir kütüphaneyi bulmak için bakacağı dizinlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar.
MANPATH Man komutunun man dosyaları için bakacağı yerlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar.
INFODIR Info komutunun info dosyaları için bakacağı yerlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar.
PAGER Bu değişkende dosya içeriklerinin gösterilmesi için kullanılacak programların (less ve more gibi) yerleri saklanır.
EDITOR Dosya içeriklerinin değiştirilmesi için kullanılacak programların (nano ve vi gibi) yerleri bu değişkende saklanır.
KDEDIRS KDE'ye ait şeylerin olduğu dizinlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar.
CLASSPATH ava Class(sınıf)larının olduğu dizinlerin listesini iki nokta üstüste ile ayrılmış biçimde içerir.
CONFIG_PROTECT Portage ile güncelleme yapılırken korunması gereken dizinlerin adreslerini "boşluk-ters kesme" işaretleriyle ayrılmış biçimde saklar.
CONFIG_PROTECT_MASK Portagela güncelleme yapılırken korunması gerekmeyen dizinlerin adreslerini "boşluk-ters kesme" işaretleriyle ayrılmış biçimde saklar.

Aşağıda , tüm bu değişkenler için örnek tanımlamaları bulabilirsiniz:

Kod Listeleme 1.1: Örnek Tanımlamar

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf

6.b. Değişkenleri Global olarak tanımlamak

/etc/env.d dizini

Değişkenlerin tanımlarının bir merkezde toplanması için Gentoo , /etc/env.d dizinini yarattı. Bu dizinde 00basic, 05gcc vb. gibi isimlerinde belirtilen uygulama için gerekli olan değişkenleri taşıyan dosyaları bulabilirsiniz. Örneğin gcc 'yi kurduğunuzda ; ismi 05gcc olan ve aşağıdaki değişkenleri taşıyan bir dosya , ebuild tarafından yaratılır:

Kod Listeleme 2.1: /etc/conf.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

Diğer dağıtımlar sizden /etc/profile veya başka yerlerdeki ortam değişkeni tanımlarını değiştirmenizi isterler. Fakat Gentoo , ortam değişkenlerini taşıyan birçok dosya ile uğraşılmasını engelleyerek , hem bu değişkenlerin bakımını hemde yönetimini sizin (ve Portage) için çok kolaylaştırıyor.

Örneğin gcc güncellendiğinde , hiçbir kullanıcı müdahalesine gerek kalmadan /etc/env.d/05gcc dosyasıda güncelleniyor. Bu sadece Portage'a değil ama bir kullanıcı olarak size de yarar sağlıyor. Bazen bir değişkeni sistem çapında ayarlamanız istenebilir. Mesela http_proxy değişkenini ele alalım. /etc/profile ile uğraşmaktansa artık sadece bir dosya (/etc/env.d/99local) yaratıp tanımlamaları onun içine girebilirsiniz :

Kod Listeleme 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

Tüm değişkenler için aynı dosyayı kullanarak , kendi tanımladıklarınıza kolayca bakabilirsiniz.

env-update Betiği (Script)

/etc/env.d dizinindeki bazı dosyalar PATH değişkenini belirler. env-update çalıştırıldığında ortam değişkenlerini güncellemeden önce , bazı tanımalamarı eklemek suretiyle varolan değişkenleri ellemeden kendininkileri eklemeyi , paketler (veya kullanıcılar) için daha kolay hale gertiriyor. env-update scripti , değerleri /etc/env.d deki dosyaların alfabetik sıralamasına göre ekler. İşte bu yüzden , /etc/env.d deki birçok dosyanın adı bir rakamla başlar.

Kod Listeleme 2.3: env-update 'in güncelleme sırası

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

env-update çalıştırıldığında , tüm ortam değişkenleri oluşturulup /etc/profile.env (/etc/profile tarafındanda kullanılan) dosyasına konulur. Ayrıca LDPATH değişkenindeki bilgiler okunup /etc/ld.so.conf dosyasının oluşturulmasında kullanılır.Bundan sonra , dinamik linker tarafından kullanılan /etc/ld.so.cache dosyasının oluşturulması için ldconfig çalıştırılır.

Eğer env-update komutunun etkilerini çalıştırdıktan hemen sonra görmek istiyorsanız , ortamı güncellemek için aşağıdaki komutu kullanın. Gentoo'yu kendileri kuran kullanıcılar bu komutu hatırlayacaklardır :

Kod Listeleme 2.4: Ortam değişkenlerini güncellemek

# env-update && source /etc/profile

6.c. Değişkenleri Yerel Olarak Tanımlamak

Kullanıcıya Özel Değişkenler

Bir değişkeni her zaman global olarak tanımlamak istemeyebilirsiniz. Örneğin , /home/kullanici/bin dizinini PATH'e ekleyip sistemdeki diğer kullanıcıların PATH değişkenlerinde bunun olmasını istemiyor olabilirsiniz. Bir değişkeni yerel olarak tanımlamak istiyorsanız ~/.bashrc veya ~/.bash_profile dosyalarını kullanmalısınız( ~ işareti /home/kullanıcı_ismi dizinine eşittir) :

Kod Listeleme 3.1: Yerel kullanım için PATH değişkenini ~/.bashrc de genişletmek

PATH="${PATH}:/home/kullanıcı_ismi/bin"

Kullanıcı ile tekrar giriş yaptığınızda PATH değişkeni güncellenmiş olur.

Oturuma Özel Değişkenler

Bazen çok daha sıkı tanımlamalar istenebilir. Birkaç dakikalığına ihtiyacınız olan binaryleri ~/.bashrc dosyasını değiştirmeden veya gerçek binaryleri kullanmadan , geçici bir dizinden çalıştırmak isteyebilirsiniz.

Bu durumda export komutuyla , sadece geçerli oturumdaki PATH değişkenini tanımlayabilirsiniz. Çıkış yapmadığınız sürece , geçici PATH değişkeni geçerliliğini sürdürür.

Kod Listeleme 3.2: Oturuma özel bir ortam değişkeni tanımlamak

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"