Trkçe Gentoo Linux/MIPS Elkitabı
İçerik:
-
Gentoo Kurulumu
Bu bölümde sisteminize nasıl Gentoo Linux kurabileceğinizi öğreneceksiniz.
-
Gentoo Linux Kurulumu Hakkında
Gentoo ortamına yabancı olan kullanıcılar belkide aslında Gentoo Linux'un esnek yapısını bilmiyorlar. Bu bölümde bu esnek yapı ile tanışacaksınız.
-
Endoğru Kurulum Ortamını Seçmek
Gentoo Linux çeşitli yöntemler ile kurulabilir. Bu bölümde nasıl Gentoo LiveCDs ile kurulum yapabileceğiniz anlatılmaktadır.
-
Ağ Ayarları
Eğer Gentoo'nuzu internet üzerinden kurmak istiyorsanız, o zaman ağ ayarlarınızı yapmak zorundasınız.Bu bölümde ağ ayarları anlatılmaktadır.
-
Sabit Diskin Hazırlanması
Gentoo Linux kurabilmeniz için diskinizde gerekli bölünmeleri yapmanız gereklidir. Bu bölümde kuracağınız Gentoo Linux için diskinizi nasıl ayarlayabileceğiniz anlatılmaktadır.
-
Gentoo Kurulum Dosyalarının Kurulması
Gentoo kurulumu Stage-dosyaları olarak tanınan dosyaların yardımı ile gerçekleşir. Bu bölümde Stage dosyalarını nasıl açacağınızı ve Portage nasıl ayarlayabileceğinizi anlatacağız.
-
Gentoo Temel Sisteminin Kurulması
Hangi Stage'yi seçtiğinizden bağımsız olarak, kurulumda temel bir sisteme sahipsiniz. Bu bölümde temel sistemin kurulumunu anlatacağız.
-
Kernel Ayarları
Linux çekirdeği bütün Linux sürümlerinin temel taşını oluşturur. Bu bölümde kernelinizi nasıl ayarlayabileceğinizi bulabilirsiniz.
-
Sisteminizin Ayarlanması
Önemli ayar dosyalarını düzenlemeniz gereklidir. Bu bölümde bu ayar dosyalarına genel bir bakış ve dosyalar hakkında kısa bilgiler ve nasıl çalışmanız gerekliliği hakkında bilgi alacaksınız.
-
Önyükleyici Ayarlanması
Gerçekte MIPS için bir önyükleyiciye ihtiyacınız yok. Ancak MIPS PROM kernel yerine kullanılıyor.Bu bölümde Linux kernelinizi PROM opsiyonu olarak nasıl kurabileceğiniz anlatılmaktadır.
-
Gerekli Sistem Araçlarının Kurulması
Daha öncede söylediğimiz gibi; Gentoo da 'seçim' söz konusudur. Bu bölümde önemli bazı program ve araçların seçimi ve kurulumu hakkında kısa bilgiler vereceğiz.
-
Gentoo Kurulumunu Bitirmek
Bitirmeye nerdeyse az kaldı. Sisteminize bir veya birden fazla kullanıcı ekleyip, kurulumu terk edeceğiz ve yeni kurulmuş Gentoo Linux'unuzu kullanabileceksiniz.
-
Kurulum bitti, ya sonra ?
Artık bir Gentoo sisteminiz var. 'Şimdi ne yapabilirim?' sorusuna cevap arayacağız.
-
Gentoo Altında Çalışma
Gentoo altında çalışırken nasıl yazılım kurabilirsiniz, değişkenleri kendi isteğinize göre nasıl değiştirebilirsiniz, portage davranışlarının özelliklerini nasıl değiştirebilir, gibi konuları bu bölümde bulabilirsiniz.
-
USE flags
USE-flags gentoo'nun en büyük özelliklerinden bir tanesidir. Bu bölümde 'USE Flags' kullanımı ve sisteminize nasıl uyumlu şekilde ayarlayabileceğinizi okuyabilirsiniz.
-
Portage ve Yazılımlar
Portage'nin en büyük özelliği sisteminizdeki kullanılacak olan yazılımların denetimini yapmasıdır. Bu bülümde paket bilgilerini nasıl alabileceğiniz, paketlerinizi nasıl güncelleyebileceğiniz, paket ekleme ve paket silme işlemlerinin nasıl yapıldığını öğreneceksiniz.
-
Portage Özellikleri
Bu bölümde Gentoo Portage'sinin çeşitli kullanım özelliklerini bulabilirsiniz.
-
Portage Davranışlarının Kontrolu
Portage'leri kendi ihtiyaçlarınıza ve isteklerinize göre düzenleyebilirsiniz.Bu bölümde dosyalarınızı nasıl koruyabileceğiniz vb. konular anlatılmaktadır.
-
İnit Betikleri (initscripts)
Gentoo özel initscript formatı kullanır. Bunlar diğer yeni özelliklerin yanısıra, olası bağımlılıklarda kendi karar verebilen ve sanal initscript'leridir. Bu bölümde bu skriptler ile nasıl çalışabileceğiniz anlatılmaktadır.
-
Ortam Değişkenleri
Sisteminizdeki ortam değişkenlerinizi Gentoo ile çok basit olarak düzenleyebilir veya değiştirebilirsiniz. Bu bölümde bu değişkenler ve bunlar ile nasıl işlem yapabileceğinizi öğrenebilirsiniz.
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:
-
1. Adımdan sonra, çalışan bir ortamda bulunup Gentoo kurulumuna hazır olacaksınız.
-
2. Adımdan sonra, Gentoo kurmak için internet bağlantınız hazır olacak (duruma göre bu isteğe bağlı olabilir).
-
3. Adımdan sonra, Sabit-Diskiniz Gentoo kurulumuna ev sahipliği yapmak için hazır olacak.
-
4. Adımdan sonra, kurulum ortamınız hazır olacak ve chroot komutu ile yeni ortama girişe hazır olacaksınız.
-
5. Adımdan sonra, Gentoo kurulumu için gerekli kod paketleri yüklenmiş olacak.
-
6. Adımdan sonra, Linux çekirdeğinizi derlemiş olacaksınız.
-
7. Adımdan sonra, Gentoo sistem yapılandırma dosyalarının çoğunu yazmış olacaksınız.
-
8. Adımdan sonra, tercih ettiğiniz açılış yükleyicisi yüklenmiş ve ayarlanmış olacak.
-
9. Adımdan sonra, gerekli sistem araçları (listeden seçebileceğiniz araçlar) yüklenmiş olacak.
-
10. Adımdan sonra, Gentoo sisteminize giriş yapmış olacaksınız.
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:
-
x86 mimarisi (x86, i686, pentium3, pentium4, athlon-xp)
ve Gentoo
Hardened
-
amd64 mimarisi (amd64)
-
sparc mimarisi (sparc64)
-
ppc mimarisi (ppc, G3, G4)
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. Hardware Requirements
Introduction
Before we start, we first list what hardware requirements you need to
successfully install Gentoo on your box.
Hardware Requirements
| CPU (Big Endian port) |
MIPS3, MIPS4, MIPS5 or MIPS64-class CPU |
| CPU (Little Endian port) |
MIPS4, MIPS5 or MIPS64-class CPU |
| Memory |
128 MB |
| Diskspace |
3.0 GB (excluding swap space) |
| Swap space |
At least 256 MB |
You should also check the MIPS
Hardware Requirements document available from our website.
2.b. Installation Notes
A note about Processor Architectures
On many architectures, the processor has gone through several generations, each
newer generation builds on the foundation of the previous one. MIPS is no
exception. There are several generations of CPU covered under the MIPS
architecture. In order to choose your netboot image stage tarball and
CFLAGS appropriately, you need to be aware of which family your system's
CPU belongs in. These families are referred to as the Instruction
Set Architecture.
| MIPS ISA |
32/64-bit |
CPUs Covered |
| MIPS 1 |
32-bit |
R2000,
R3000
|
| MIPS 2 |
32-bit |
R6000
|
| MIPS 3 |
64-bit |
R4000,
R4400,
R4600,
R4700
|
| MIPS 4 |
64-bit |
R5000,
RM5000,
RM7000
R8000,
R9000,
R10000,
R12000,
R14000,
R16000
|
| MIPS 5 |
64-bit |
None As Yet
|
| MIPS32 |
32-bit |
AMD Alchemy series, 4kc, 4km, many others... There are a few revisions in
the MIPS32 ISA.
|
| MIPS64 |
64-bit |
Broadcom SiByte SB1, 5kc ... etc... There are a few revisions in the
MIPS64 ISA.
|
Not:
The MIPS5 ISA level was designed by Silicon Graphics back in 1994, but
never actually got used in a real life CPU. It lives on as part of the
MIPS64 ISA.
|
Not:
The MIPS32 and MIPS64 ISAs are a common source of confusion. The
MIPS64 ISA level is actually a superset of the MIPS5 ISA, so it
includes all instructions from MIPS5 and earlier ISAs. MIPS32 is
the 32-bit subset of MIPS64, it exists because most applications only
require 32-bit processing.
|
Also, another important concept to grasp is the concept of endianness.
Endianness refers to the way that a CPU reads words from main memory. A word
can be read as either big endian (most significant byte first), or
little endian (least significant byte first). Intel x86 machines are
generally Little endian, whilst Apple and Sparc machines are Big Endian. On
MIPS, they can be either. To separate them apart, we append el to the
architecture name to denote little endian.
| Architecture |
32/64-bit |
Endianness |
Machines covered |
| mips |
32-bit |
Big Endian |
Silicon Graphics |
| mipsel |
32-bit |
Little Endian |
Cobalt Servers |
| mips64 |
64-bit |
Big Endian |
Silicon Graphics |
| mips64el |
64-bit |
Little Endian |
Cobalt Servers |
For those willing to learn more about ISAs, the following websites may be of
assistance.
The Stage3 Tarball
A stage3 tarball is an archive containing a minimal Gentoo environment,
suitable to continue the Gentoo installation using the instructions in this
manual. Previously, the Gentoo Handbook described the installation using one of
three stage tarballs. While Gentoo still offers stage1 and stage2 tarballs,
the official installation method uses the stage3 tarball. If you are interested
in performing a Gentoo installation using a stage1 or stage2 tarball, please
read the Gentoo FAQ on How do I Install
Gentoo Using a Stage1 or Stage2 Tarball?
2.c. Netbooting Overview
In this section, we'll cover what you need in order to successfully network
boot a Silicon Graphics workstation or Cobalt Server appliance. This is just a
brief guide, it is not intended to be thorough, for more information, it is
recommended that you read the Diskless
HOWTO.
What You Need: Depending on the machine, there is a certain amount of hardware
that you'll need in order to successfully netboot and install Linux.
-
In General:
- DHCP/BOAMD Alchemy series, 4kc, 4km, many others... There are a few revisions in
the MIPS32 ISA.OTP server (ISC DHCPd recommended)
- Patience -- and lots of it
-
For Silicon Graphics workstations:
- TFTP server (tftp-hpa recommended)
-
If you want/need to use serial console:
-
MiniDIN8 --> RS-232 serial cable (only needed for IP22 and IP28
systems)
- Null-modem cable
- VT100 or ANSI compatible terminal capable of 9600 baud
-
For Cobalt Servers (NOT the original Qube):
- NFS server
- Null-modem cable
- VT100 or ANSI compatible terminal capable of 115200 baud
Not:
SGI machines use a MiniDIN 8 connector for the serial ports. Apparently Apple
modem cables work just fine as serial cables, but with Apple machines being
equipped with USB & internal modems, these are getting harder to find. One
wiring diagram is available from the Linux/MIPS Wiki, and
most electronics stores should stock the plugs required.
|
Not:
For the terminal, this could be a real VT100/ANSI terminal, or it could be a PC
running terminal emulation software (such as HyperTerminal, Minicom, seyon,
Telex, xc, screen -- whatever your preference). It doesn't matter what platform
this machine runs -- just so long as it has one RS-232 serial port you can use,
and appropriate software.
|
Not:
Note that this guide does NOT cover the original Qube. The original Qube server
appliance lacks a serial port in its default configuration, and therefore it is
not possible to install Gentoo onto it without the aid of a screwdriver and a
surrogate machine to do the installation. The following site has a guide for
installing Gentoo on these machines.
http://www.metzner.org/projects/qube/
|
Setting up TFTP and DHCP -- a brief guide
Okay, so you've got your bits and pieces together, now to set everything up. As
mentioned earlier -- this is not a complete guide, this is a bare-bones config
that will just get things rolling. You can either use this when starting a
setup from scratch, or use the suggestions to amend your existing setup to
support netbooting.
It is worth noting that the servers used need not be running Gentoo Linux, you
could quite reasonably use FreeBSD or any Unix-like platform. However, this
guide will assume you are running Gentoo Linux. You also may run TFTP/NFS on a
separate machine to the DHCP server if desired.
Uyarı:
The Gentoo/MIPS Team cannot help you with setting up other operating systems as
netboot servers. If you choose a different OS, it is assumed you know what
you're doing.
|
First Step -- configuring DHCP. In order for the ISC DHCP daemon to respond to
BOOTP requests (as required by the SGI & Cobalt BOOTROM) you need to first
enable dynamic BOOTP on the address range in use; then set up an entry for each
client with pointers to the boot image.
Kod Listeleme 3.1: Installing ISCs DHCP |
# emerge dhcp
|
Once installed you need to create the /etc/dhcp/dhcpd.conf. Here's
a bare-bones config to get you started.
Kod Listeleme 3.2: Bare Bones dhcpd.conf |
ddns-update-style none;
subnet 192.168.10.0 netmask 255.255.255.0 {
pool {
range dynamic-bootp 192.168.10.1 192.168.10.254;
}
option domain-name-servers 203.1.72.96, 202.47.56.17;
option routers 192.168.10.1;
authoritative;
allow bootp;
}
|
With that setup, one can then add any number of clients within the subnet
clause. We will cover what you need to put in later in this guide.
Next Step -- Setting up TFTP server. It is recommended that you use
tftp-hpa as it is the only TFTP daemon known to work correctly. Proceed
by installing it as shown below.
Kod Listeleme 3.3: Installing tftp-hpa |
# emerge net-ftp/tftp-hpa
|
This will create /tftproot for you to store the netboot images.
You may move this elsewhere if you wish. For the purposes of this guide, it is
assumed that you have left it in the default location.
2.d. Netbooting on SGI Workstations
Downloading a Netboot image
Depending on the system you're installing for, there are several possible
images available for download. These are all labelled according to the system
type and CPU they are compiled for. The machine types are as follows:
| Codename |
Machines |
| IP22 |
Indy, *Indigo 2, Challenge S |
| IP26 |
*Indigo 2 Power |
| IP27 |
Origin 200, Origin 2000 |
| IP28 |
*Indigo 2 Impact |
| IP30 |
Octane |
| IP32 |
O2 |
Not:
* It is a common mistake to mix up the IRIS Indigo (IP12 w/ R3000 CPU or IP20
w/ R4000 CPU, neither of which run Linux), the Indigo 2 (IP22, which runs Linux
fine), the R8000-based Indigo 2 Power (which doesn't run Linux at all) and the
R10000-based Indigo 2 Impact (IP28, which is highly experimental). Please bear
in mind that these are different machines.
|
Also in the filename, r4k refers to R4000-series processors, r5k for R5000, rm5k
for the RM5200 and r10k for R10000. You will find the images available on the
Gentoo mirrors.
DHCP Configuration for an SGI Client
Once you have downloaded the file, place the decompressed image file in your
/tftproot directory. (Use bzip2 -d to decompress) Then edit
your /etc/dhcp/dhcpd.conf and add the entry for your SGI client.
Kod Listeleme 4.1: dhcpd.conf snippet for SGI Workstation |
subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
host sgi {
hardware ethernet 08:00:69:08:db:77;
next-server 192.168.10.1;
fixed-address 192.168.10.3;
filename "/gentoo-r4k.img";
}
}
|
Kernel Options
We're almost done, but there's a couple of little tweaks still to be done. Pull
up a console with root privileges, and enter the following commands.
Kod Listeleme 4.2: Some fixes to SGI machines to have TFTP work properly |
# echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
# echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range
|
This should be sufficient to allow the Linux server to play nice with SGI's
PROM.
Start Your Daemons...
At this point, you should be ready to start the daemons. Enter the following:
Kod Listeleme 4.3: Starting the DHCP and TFTP daemons |
# /etc/init.d/dhcp start
# /etc/init.d/in.tftpd start
|
If nothing went wrong in that last step you should be all set to power on the
workstation and proceed with the guide. If the DHCP server isn't firing up for
whatever reason, try running 'dhcpd' on the command line and see what it tells
you -- if all is well, it should just fork into the background, otherwise
you'll see 'exiting.' just below its complaint.
An easy way to verify if the tftp daemon is running is to type the following
command -- if you see something like the output mentioned below -- everything
is fine.
Kod Listeleme 4.4: Checking TFTPd is running |
# netstat -al | grep ^udp
udp 0 0 *:bootpc *:*
udp 0 0 *:631 *:*
udp 0 0 *:xdmcp *:*
udp 0 0 *:tftp *:*
|
Netbooting the SGI machine
Okay, everything is set, DHCP is running as is TFTP. Now it is time to fire up
the SGI machine. Power the unit on -- when you see "Running power-on
diagnostics" on the screen, either click "Stop For Maintenance" or press
ESCAPE. You'll be presented with a menu like the following. Enter the commands
as shown below.
Kod Listeleme 4.5: SGI PROM Maintenance Menu |
Running power-on diagnostics
System Maintenance Menu
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.
>> bootp(): root=/dev/ram0
|
From this point, the machine should start downloading the image, then, roughly
20 seconds later, start booting Linux. If all is well, you should be dropped at
the Busybox ash shell as shown below, where you can move on to Configuring Your Network.
Kod Listeleme 4.6: When things are going right... |
init started: BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary
Gentoo Linux; http://www.gentoo.org/
Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL
Gentoo/MIPS Netboot for Silicon Graphics Machines
Build Date: April 26th, 2004
* To configure networking, do the following:
* For Static IP:
* /bin/net-setup <IP Address> <Gateway Address> [telnet]
* For Dynamic IP:
* /bin/net-setup dhcp [telnet]
* If you would like a telnetd daemon loaded as well, pass "telnet"
* As the final argument to /bin/net-setup.
Please press Enter to activate this console.
|
Troubleshooting.
If the machine is being stubborn and refusing to download its image, it can be
one of two things, (1) you've made a blunder somewhere, or (2) it needs a
little gentle persuasion. (No, put that sledge hammer down!) Here's a list of
things you can check:
-
dhcpd is giving the SGI Machine an IP Address. You should see some
messages about a BOOTP request in the system logs. tcpdump is also
useful here.
-
Permissions are set properly in your tftp folder (typically
/tftproot -- should be world readable)
-
Check system logs to see what the tftp server is reporting (errors perhaps)
If you've checked everything on the server, and you're getting timeouts, etc on
the SGI machine, try typing this into the console.
Kod Listeleme 4.7: Coaxing the SGI PROM to work |
>> resetenv
>> unsetenv netaddr
>> unsetenv dlserver
>> init
>> bootp(): root=/dev/ram0
|
2.e. Alternative Method: Gentoo/MIPS SGI LiveCD
Overview
On Silicon Graphics machines, it is possible to boot from a CD in order to
install operating systems. (This is how one installs IRIX for instance)
Recently, images for such bootable CDs to install Gentoo have been made
possible. These CDs are designed to work in the same way.
At the moment the Gentoo/MIPS Live CD will only work on the SGI Indy, Indigo 2
and O2 workstations equipped with R4000 and R5000-series CPUs, however other
platforms may be possible in future.
You can find the Live CD images for download on your favourite Gentoo Mirror
under the experimental/mips/livecd directory.
Uyarı:
These CDs are highly experimental at this time. They may or may not work at this
time. You can report success or failures either on Bugzilla, this forum thread
or in the #gentoo-mips IRC channel. We
would love to hear from you.
|
Burning a Live CD
An important thing to note, the SGI PROM does not understand the ISO9660
format, nor does it know anything about the El Torito boot standard. These CD
images are constructed as a SGI disklabel with the boot image in the volume
header like a hard drive. Therefore, care must be taken when burning the CD
image.
Below is an example command that assumes 24x burning speed on an IDE burner. If
you have a SCSI burner for instance, you may want to adjust the dev
statement as appropriate. Likewise with the speed option - if you strike
troubles, you might want to try dropping the speed.
Kod Listeleme 5.1: Burning using cdrecord |
# bzip2 -d mips-livecd-prototype-rc2-20041027.img.bz2
# cdrecord -vv -pad speed=24 dev=ATAPI:0,0,0 -tao mips-livecd-prototype-rc2-20041027.img
|
Not:
It may be possible to burn these CDs under Windows, assuming your burning
program just blindly burns the image as is. However, no one has succeeded in
making a working CD this way to date.
|
Not:
If you don't know what to put as your dev argument, run cdrecord
-scanbus as root - this will tell you where your burner is located.
|
2.f. Netbooting on Cobalt Servers
Overview of the netboot procedure
Unlike the SGI machines, Cobalt servers use NFS to transfer their kernel for
booting. You boot the machine by holding down the left & right arrow
buttons whilst powering the unit on. The machine will then attempt to obtain an
IP number via BOOTP, mount the /nfsroot directory from the server
via NFS, then try to download and boot the file
vmlinux_raq-2800.gz (depending on the model) which it assumes to
be a standard ELF binary.
Downloading a Netboot image
Inside
http://dev.gentoo.org/~redhatter/mips/cobalt/netboots/
you'll find the necessary boot images for getting a Cobalt up and running. The
files you need will have the name
nfsroot-KERNEL-COLO-DATE-cobalt.tar -- select the most recent one
and unpack it to / as shown below:
Kod Listeleme 6.1: Unpacking the nfsroot image |
# tar -C / -xvf nfsroot-2.6.13.4-1.19-20051122-cobalt.tar
|
NFS Server configuration
Since this machine uses NFS to download its image, you need to export
/nfsroot on your server. If you have not already done so, you'll
need to install the net-fs/nfs-utils package.
Kod Listeleme 6.2: Installing nfs-utils |
# emerge net-fs/nfs-utils
|
Once that is done, place the following in your /etc/exports file.
You may set tighter restrictions if you wish.
Kod Listeleme 6.3: Exporting the /nfsroot directory |
/nfsroot *(ro,sync)
|
Now, once that is done, you may start the NFS server:
Kod Listeleme 6.4: Starting the NFS server |
# /etc/init.d/nfs start
|
If the NFS server was already running at the time, you can tell it to take
another look at its exports file using exportfs.
Kod Listeleme 6.5: Exporting a new filesystem |
# exportfs -av
|
DHCP Configuration for a Cobalt machine
Now, the DHCP side of things is relatively straightforward. Add the following
to your /etc/dhcp/dhcpd.conf file.
Kod Listeleme 6.6: dhcpd.conf snippet for Cobalt server |
subnet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx {
host qube {
option root-path "/nfsroot";
hardware ethernet 00:10:e0:00:86:3d;
next-server 192.168.10.1;
fixed-address 192.168.10.2;
filename "default.colo";
}
}
|
Start Your Daemons...
At this point, you should be ready to start the daemons. Enter the following:
Kod Listeleme 6.7: Starting the DHCP and NFS daemons |
# /etc/init.d/dhcp start
# /etc/init.d/nfs start
|
If nothing went wrong in that last step you should be all set to power on the
workstation and proceed with the guide. If the DHCP server isn't firing up for
whatever reason, try running 'dhcpd' on the command line and see what it tells
you -- if all is well, it should just fork into the background, otherwise
you'll see 'exiting.' just below its complaint.
Netbooting the Cobalt machine
Okay, everything is set, DHCP is running as is NFS. Now it is time to fire up
the Cobalt machine. Hook up your null modem cable, and set the serial terminal
to use 115200 baud, 8 bits, no parity, 1 stop bit, VT100 emulation. Once that
is done, hold down the left & right arrow buttons whilst powering the unit
on.
If all is well, the back panel should display "Net Booting", you should see
some network activity, closely followed by CoLo kicking in. On the rear panel,
scroll down the menu until you see "Network (NFS)" then press ENTER. You should
notice the machine starts booting on the serial console.
Kod Listeleme 6.8: Booting the kernel |
elf: 80080000 <-- 00001000 6586368t + 192624t
elf: entry 80328040
net: interface down
CPU revision is: 000028a0
FPU revision is: 000028a0
Primary instruction cache 32kB, physically tagged, 2-way, linesize 32 bytes.
Primary data cache 32kB 2-way, linesize 32 bytes.
Linux version 2.4.26-mipscvs-20040415 (root@khazad-dum) (gcc version 3.3.3...
Determined physical RAM map:
memory: 08000000 @ 00000000 (usable)
Initial ramdisk at: 0x80392000 (3366912 bytes)
On node 0 totalpages: 32768
zone(0): 32768 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,115200 root=/dev/ram0
Calibrating delay loop... 249.85 BogoMIPS
Memory: 122512k/131072k available (2708k kernel code, 8560k reserved, 3424k dat)
|
If all is well, you should be dropped at the Busybox ash shell as shown
below, where you can go onto Configuring Your
Network.
Kod Listeleme 6.9: When things are going right... |
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 280k freed
init started: BusyBox v1.00-pre10 (2004.04.27-02:55+0000) multi-call binary
Gentoo Linux; http://www.gentoo.org/
Copyright 2001-2004 Gentoo Technologies, Inc.; Distributed under the GPL
Gentoo/MIPS Netboot for Cobalt Microserver Machines
Build Date: April 26th, 2004
* To configure networking, do the following:
* For Static IP:
* /bin/net-setup <IP Address> <Gateway Address> [telnet]
* For Dynamic IP:
* /bin/net-setup dhcp [telnet]
* If you would like a telnetd daemon loaded as well, pass "telnet"
* As the final argument to /bin/net-setup.
Please press Enter to activate this console.
|
Troubleshooting.
If the machine is being stubborn and refusing to download its image, it can be
one of two things, (1) you've made a blunder somewhere, or (2) it needs a
little gentle persuasion. (No, put that sledge hammer down!) Here's a list of
things you can check:
-
dhcpd is giving the Cobalt Machine an IP Address. You should see some
messages about a BOOTP request in the system logs. tcpdump is also
useful here.
-
Permissions are set properly in your /nfsroot folder. (should
be world readable)
-
Make sure the NFS server is running and exporting the /nfsroot
directory. Check this using exportfs -v on the server.
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 |
# export http_proxy="http://proxy.gentoo.org:8080"
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
# 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ı |
# 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 |
# iwconfig eth0 essid GentooNode
#iwconfig eth0 key 1234123412341234abcd
# 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. Introduction to Block Devices
Block Devices
We'll take a good look at disk-oriented aspects of Gentoo Linux
and Linux in general, including Linux filesystems, partitions and block devices.
Then, once you're familiar with the ins and outs of disks and filesystems,
you'll be guided through the process of setting up partitions and filesystems
for your Gentoo Linux installation.
To begin, we'll introduce block devices. The most famous block device is
probably the one that represents the first drive in a Linux system, namely
/dev/sda. SCSI and Serial ATA drives are both labeled
/dev/sd*; even IDE drives are labeled /dev/sd* with
the new libata framework in the kernel. If you're using the old device
framework, then your first IDE drive is /dev/hda.
The block devices above represent an abstract interface to the disk. User
programs can use these block devices to interact with your disk without worrying
about whether your drives are IDE, SCSI or something else. The program can
simply address the storage on the disk as a bunch of contiguous,
randomly-accessible 512-byte blocks.
Partitions
Although it is theoretically possible to use a full disk to house your Linux
system, this is almost never done in practice. Instead, full disk block devices
are split up in smaller, more manageable block devices. These are called
partitions.
4.b. Designing a Partitioning Scheme
How Many and How Big?
The number of partitions is highly dependent on your environment. For instance,
if you have lots of users, you will most likely want to have your
/home separate as it increases security and makes backups easier.
If you are installing Gentoo to perform as a mailserver, your /var
should be separate as all mails are stored inside /var. A good
choice of filesystem will then maximise your performance. Gameservers will have
a separate /opt as most gaming servers are installed there. The
reason is similar for /home: security and backups. You will
definitely want to keep /usr big: not only will it contain the
majority of applications, the Portage tree alone takes around 500 Mbyte
excluding the various sources that are stored in it.
As you can see, it very much depends on what you want to achieve. Separate
partitions or volumes have the following advantages:
-
You can choose the best performing filesystem for each partition or volume
-
Your entire system cannot run out of free space if one defunct tool is
continuously writing files to a partition or volume
-
If necessary, file system checks are reduced in time, as multiple checks can
be done in parallel (although this advantage is more with multiple disks than
it is with multiple partitions)
-
Security can be enhanced by mounting some partitions or volumes read-only,
nosuid (setuid bits are ignored), noexec (executable bits are ignored) etc.
However, multiple partitions have one big disadvantage: if not configured
properly, you might result in having a system with lots of free space on one
partition and none on another. There is also a 15-partition limit for SCSI and
SATA.
4.c. Using fdisk on MIPS to Partition your Disk
SGI Machines: Creating an SGI Disk Label
All disks in an SGI System require an SGI Disk Label, which serves a
similar function as Sun & MS-DOS disklabels -- It stores information about
the disk partitions. Creating a new SGI Disk Label will create two special
partitions on the disk:
-
SGI Volume Header (9th partition): This partition is important. It
is where the bootloader will reside, and in some cases, it will also
contain the kernel images.
-
SGI Volume (11th partition): This partition is similar in purpose to
the Sun Disklabel's third partition of "Whole Disk". This partition spans
the entire disk, and should be left untouched. It serves no special purpose
other than to assist the PROM in some undocumented fashion (or it is used
by IRIX in some way).
Uyarı:
The SGI Volume Header must begin at cylinder 0. Failure to do so means
you won't be able to boot from the disk.
|
The following is an example excerpt from an fdisk session. Read and
tailor it to your needs...
Kod Listeleme 3.1: Creating an SGI Disklabel |
# fdisk /dev/sda
Command (m for help): x
Expert command (m for help): m
Command action
b move beginning of data in a partition
c change number of cylinders
d print the raw data in the partition table
e list extended partitions
f fix partition order
g create an IRIX (SGI) partition table
h change number of heads
m print this menu
p print the partition table
q quit without saving changes
r return to main menu
s change number of sectors/track
v verify the partition table
w write table to disk and exit
Expert command (m for help): g
Building a new SGI disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content will be irrecoverably lost.
Expert command (m for help): r
Command (m for help): p
Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 17482 cylinders
Units = cylinders of 2048 * 512 bytes
----- partitions -----
Pt# Device Info Start End Sectors Id System
9: /dev/sda1 0 4 10240 0 SGI volhdr
11: /dev/sda2 0 17481 35803136 6 SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
Command (m for help):
|
Not:
If your disk already has an existing SGI Disklabel, then fdisk will not allow
the creation of a new label. There are two ways around this. One is to create a
Sun or MS-DOS disklabel, write the changes to disk, and restart fdisk. The
second is to overwrite the partition table with null data via the following
command: dd if=/dev/zero of=/dev/sda bs=512 count=1.
|
Getting the SGI Volume Header to just the right size
Önemli:
This step is often needed, due to a bug in fdisk. For some reason, the
volume header isn't created correctly, the end result being it starts and ends
on cylinder 0. This prevents multiple partitions from being created. To get
around this issue... read on.
|
Now that an SGI Disklabel is created, partitions may now be defined. In the
above example, there are already two partitions defined for you. These are the
special partitions mentioned above and should not normally be altered. However,
for installing Gentoo, we'll need to load a bootloader, and possibly multiple
kernel images (depending on system type) directly into the volume header. The
volume header itself can hold up to eight images of any size, with each
image allowed eight-character names.
The process of making the volume header larger isn't exactly straight-forward;
there's a bit of a trick to it. One cannot simply delete and re-add the volume
header due to odd fdisk behavior. In the example provided below, we'll create a
50MB Volume header in conjunction with a 50MB /boot partition. The actual
layout of your disk may vary, but this is for illustrative purposes only.
Kod Listeleme 3.2: Resizing the SGI Volume Header correctly |
Command (m for help): n
Partition number (1-16): 1
First cylinder (5-8682, default 5): 51
Last cylinder (51-8682, default 8682): 101
Command (m for help): d
Partition number (1-16): 9
Command (m for help): n
Partition number (1-16): 9
First cylinder (0-50, default 0): 0
Last cylinder (0-50, default 50): 50
|
If you're unsure how to use fdisk have a look down further at the
instructions for partitioning on Cobalts. The concepts are exactly the same --
just remember to leave the volume header and whole disk partitions alone.
Once this is done, you are safe to create the rest of your partitions as you
see fit. After all your partitions are laid out, make sure you set the
partition ID of your swap partition to 82, which is Linux Swap. By
default, it will be 83, Linux Native.
Now that your partitions are created, you can continue with Creating Filesystems.
Cobalt Machines: Partitioning your drive
On Cobalt machines, the BOOTROM expects to see a MS-DOS MBR, so partitioning
the drive is relatively straightforward -- in fact, it's done the same way as
you'd do for an Intel x86 machine. However there are some things you
need to bear in mind.
-
Cobalt firmware will expect /dev/sda1 to be a Linux partition
formatted EXT2 Revision 0. EXT2 Revision 1 partitions will NOT
WORK! (The Cobalt BOOTROM only understands EXT2r0)
-
The above said partition must contain a gzipped ELF image,
vmlinux.gz in the root of that partition, which it loads as
the kernel
For that reason, I recommend creating a ~20MB /boot partition
formatted EXT2r0 upon which you can install CoLo & your kernels. This
allows you to run a modern filesystem (EXT3 or ReiserFS) for your root
filesystem.
I will assume you have created /dev/sda1 to mount later as a
/boot partition. If you wish to make this /, you'll
need to keep the PROM's expectations in mind.
So, continuing on... To create the partitions you type fdisk /dev/sda at
the prompt. The main commands you need to know are these:
-
o: Wipe out old partition table, starting with an empty MS-DOS
partition table
-
n: New Partition
-
t: Change Partition Type
- Use type 82 for Linux Swap, 83 for Linux FS
-
d: Delete a partition
-
p: Display (print) Partition Table
-
q: Quit -- leaving old partition table as is.
-
w: Quit -- writing partition table in the process.
Kod Listeleme 3.3: Partitioning the disk |
# fdisk /dev/sda
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19870, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 40 20128+ 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (41-19870, default 41):
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870):
Using default value 19870
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (41-19870, default 41):<Press ENTER>
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): +500M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (17294-19870, default 17294): <Press ENTER>
Using default value 17294
Last cylinder or +size or +sizeM or +sizeK (1011-19870, default 19870): <Press ENTER>
Using default value 19870
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks ID System
/dev/sda1 1 21 10552+ 83 Linux
/dev/sda2 22 19870 10003896 5 Extended
/dev/sda5 22 1037 512032+ 83 Linux
/dev/sda6 1038 5101 2048224+ 83 Linux
/dev/sda7 5102 9165 2048224+ 83 Linux
/dev/sda8 9166 13229 2048224+ 83 Linux
/dev/sda9 13230 17293 2048224+ 83 Linux
/dev/sda10 17294 19870 1298776+ 83 Linux
Command (m for help): t
Partition number (1-10): 10
Hex code (type L to list codes): 82
Changed system type of partition 10 to 82 (Linux swap)
Command (m for help): p
Disk /dev/sda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks ID System
/dev/sda1 1 21 10552+ 83 Linux
/dev/sda2 22 19870 10003896 5 Extended
/dev/sda5 22 1037 512032+ 83 Linux
/dev/sda6 1038 5101 2048224+ 83 Linux
/dev/sda7 5102 9165 2048224+ 83 Linux
/dev/sda8 9166 13229 2048224+ 83 Linux
/dev/sda9 13230 17293 2048224+ 83 Linux
/dev/sda10 17294 19870 1298776+ 82 Linux Swap
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#
|
And that's all there is to it. You should now be right to proceed onto the next
stage: Creating Filesystems.
4.d. Creating Filesystems
Introduction
Now that your partitions are created, it is time to place a filesystem on them.
If you don't care about what filesystem to choose and are happy with what we
use as default in this handbook, continue with Applying a Filesystem to a Partition. Otherwise
read on to learn about the available filesystems...
Filesystems
The Linux kernel supports various filesystems. We'll explain ext2, ext3,
ReiserFS, XFS and JFS as these are the most commonly used filesystems on Linux
systems.
ext2 is the tried and true Linux filesystem but doesn't have metadata
journaling, which means that routine ext2 filesystem checks at startup time can
be quite time-consuming. There is now quite a selection of newer-generation
journaled filesystems that can be checked for consistency very quickly and are
thus generally preferred over their non-journaled counterparts. Journaled
filesystems prevent long delays when you boot your system and your filesystem
happens to be in an inconsistent state. If you intend to install Gentoo on a
very small disk (less than 4GB), then you'll need to tell ext2 to reserve enough
inodes when you create the filesystem by running mke2fs -T small
/dev/<device>.
ext3 is the journaled version of the ext2 filesystem, providing metadata
journaling for fast recovery in addition to other enhanced journaling modes like
full data and ordered data journaling. It uses an HTree index that enables high
performance in almost all situations. In short, ext3 is a very good and
reliable filesystem. Ext3 is the recommended all-purpose all-platform
filesystem. If you intend to install Gentoo on a very small disk (less than
4GB), then you'll need to tell ext3 to reserve enough inodes when you create the
filesystem by running mke2fs -j -T small /dev/<device>.
JFS is IBM's high-performance journaling filesystem. JFS is a light,
fast and reliable B+tree-based filesystem with good performance in various
conditions.
ReiserFS is a B+tree-based journaled filesystem that has good overall
performance, especially when dealing with many tiny files at the cost of more
CPU cycles. ReiserFS appears to be less maintained than other filesystems.
XFS is a filesystem with metadata journaling which comes with a robust
feature-set and is optimized for scalability. XFS seems to be less forgiving to
various hardware problems.
Applying a Filesystem to a Partition
To create a filesystem on a partition or volume, there are tools available for
each possible filesystem:
| Filesystem |
Creation Command |
| ext2 |
mke2fs |
| ext3 |
mke2fs -j |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
For instance, to have the boot partition (/dev/sda1 in our
example) in ext2 and the root partition (/dev/sda3 in our example)
in ext3, you would use:
Kod Listeleme 4.1: Applying a filesystem on a partition |
# mke2fs /dev/sda1
# mke2fs -j /dev/sda3
|
Now create the filesystems on your newly created partitions (or logical
volumes).
Uyarı:
If you're installing on a Cobalt server, remember /dev/sda1 MUST
be of type EXT2 revision 0; Anything else (e.g. EXT2 revision 1, EXT3,
ReiserFS, XFS, JFS and others) WILL NOT WORK! You can format the
partition using the command: mke2fs -r 0 /dev/sda1.
|
Activating the Swap Partition
mkswap is the command that is used to create and initialize swap
partitions:
Kod Listeleme 4.2: Creating a Swap signature |
# mkswap /dev/sda2
|
To activate the swap partition, use swapon:
Kod Listeleme 4.3: Activating the swap partition |
# swapon /dev/sda2
|
Create and activate the swap with the commands mentioned above.
4.e. Mounting
Now that your partitions are initialized and are housing a filesystem, it is
time to mount those partitions. Use the mount command. Don't forget to
create the necessary mount directories for every partition you created. As an
example we mount the root and boot partition:
Kod Listeleme 5.1: Mounting partitions |
# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot
|
Not:
If you want your /tmp to reside on a separate partition, be sure
to change its permissions after mounting: chmod 1777 /mnt/gentoo/tmp.
This also holds for /var/tmp.
|
We will also have to mount the proc filesystem (a virtual interface with the
kernel) on /proc. But first we will need to place our files on the
partitions.
Continue with Installing the Gentoo Installation
Files.
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 |
# links2 http://www.gentoo.org/main/en/mirrors.xml
# 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}"
|
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ı |
# 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
# 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. Timezone
You first need to select your timezone so that your system knows where it is
located. Look for your timezone in /usr/share/zoneinfo, then copy
it to /etc/localtime. Please avoid the
/usr/share/zoneinfo/Etc/GMT* timezones as their names do not
indicate the expected zones. For instance, GMT-8 is in fact
GMT+8.
Kod Listeleme 1.1: Setting the timezone information |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/GMT /etc/localtime
|
7.b. Installing the Sources
Choosing a Kernel
The core around which all distributions are built is the Linux kernel. It is
the layer between the user programs and your system hardware. Gentoo provides
its users several possible kernel sources. A full listing with description is
available at the Gentoo Kernel
Guide.
MIPS-based systems have just the one kernel tree to choose from,
mips-sources. This patchset differs from the ones available for other
architectures, in that it has lots of patches specific to the MIPS
architecture.
Kod Listeleme 2.1: Merging kernel sources... |
# emerge mips-sources
|
Önemli:
On the Origin 200/2000, Indigo2 Impact (R10000), Octane/Octane2 and O2, a 64-bit
kernel is required to boot these systems. For these machines, you should
emerge kgcc64 to create a cross-compiler for building 64-bit kernels.
|
Kod Listeleme 2.2: Installing kgcc64... |
# emerge kgcc64
|
When you take a look in /usr/src you should see a symlink called
linux pointing to your kernel source. In this case, the installed
kernel source points to mips-sources-${kernel-version}. Your
version may be different, so keep this in mind.
Kod Listeleme 2.3: Viewing the kernel source symlink |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-${kernel-version}
|
Now it is time to configure and compile your kernel source.
7.c. Kernel Compilation & Installation
Introduction
Previously, we went through the manual configuration of how to set up the
kernel sources. This has become impractical with the number of systems we now
support. This section details various sources for sample kernel configurations.
Using sample configurations in the kernel source
Many of the systems supported have sample .configs hiding in amongst the kernel
source. Not all systems have configs distributed in this way. Those that do,
can be configured using the commands mentioned in the table below.
| System |
Configure command |
| Cobalt Servers |
make cobalt_defconfig |
| Indy, Indigo2 (R4k), Challenge S |
make ip22_defconfig |
| Origin 200/2000 |
make ip27_defconfig |
| Indigo2 Impact (R10k) |
make ip28_defconfig
|
| O2 |
make ip32_defconfig |
Using the running kernel config from the installation media
All of the Gentoo installation images provide a kernel config option as part of
the image itself, accessible as /proc/config.gz. This may be used
in many cases. It is best though if your kernel source matches closely, the
kernel that is currently running. To extract it, simply run it through
zcat as shown below.
Kod Listeleme 3.1: Extracting .config from /proc/config.gz |
# zcat /proc/config.gz > .config
|
Önemli:
This kernel config is set up for a netboot image. That is, it will expect to
find a root filesystem image somewhere nearby, either as a directory for
initramfs, or a loopback device for initrd. When you run make menuconfig
below, don't forget to go into General Setup and disable the options for
initramfs.
|
The Hardware Compatability Database
As an aid to users in finding working settings, a hardware compatability
database was set up. This database lists the support for various MIPS devices,
and allows users to contribute kernel configurations that are known to work.
The address for this site is
http://stuartl.longlandclan.hopto.org/gentoo/mips.
If you find this service useful, you're welcome to contribute your notes and
.config files so that others may benefit from your experience. It should be
noted however that there is no guarantee that any of the configuration files
downloaded from this site will work.
Customising the configuration for your needs
Once you have found a configuration, download it into your kernel source
directory, and rename it to .config. From there, you can run
make oldconfig to bring everything up to date, and allow you to
customise the configuration before compiling.
Kod Listeleme 3.2: Configuring the kernel |
# cd /usr/src/linux
# cp /path/to/example-config .config
# make oldconfig
# make menuconfig
|
Önemli:
In the Kernel Hacking section, there is an option named "Are You Using A Cross
Compiler?". This tells the kernel Makefiles to prepend "mips-linux-" (or
mipsel-linux ... etc) to gcc and as commands when
compiling the kernel. This should be turned off, even if cross-compiling.
Instead, if you do need to call a cross-compiler, specify the prefix using the
CROSS_COMPILE variable as shown in the next section.
|
Önemli:
There is a known issue with JFS and ALSA on Octane systems where the ALSA fails
to work. Given the experimental nature of JFS on MIPS, it is recommended that
people avoid using JFS for the time being.
|
Compiling and Installing
Now that your kernel is configured, it is time to compile and install it. Exit
the configuration and start the compilation process:
Not:
On 64-bit machines, you need to specify
CROSS_COMPILE=mips64-unknown-linux-gnu- (or mips64el-... if on a
little-endian system) to use the 64-bit compiler.
|
Kod Listeleme 3.3: Compiling the kernel |
# make vmlinux modules modules_install
# make vmlinux modules modules_install CROSS_COMPILE=mips64-unknown-linux-gnu-
# make vmlinux modules CROSS_COMPILE=mips64-unknown-linux-gnu-
# make modules_install INSTALL_MOD_PATH=/somewhere
|
Önemli:
When compiling a 64-bit kernel for the Indy, Indigo2 (R4k), Challenge S and O2,
use the vmlinux.32 target instead of vmlinux. Otherwise, your
machine will not be able to boot. This is to work around the PROM not
understanding the ELF64 format.
|
Kod Listeleme 3.4: Using the vmlinux.32 target |
# make vmlinux.32
|
When the kernel has finished compiling, copy the kernel image to
/boot.
Not:
On Cobalt servers, the bootloader will expect to see a compressed kernel image.
Remember to gzip -9 the file once it is in /boot.
|
Kod Listeleme 3.5: Installing the kernel |
# cp vmlinux /boot/kernel-${kernel-version}
# gzip -9v /boot/kernel-${kernel-version}
|
7.d. Kernel Modules
Configuring the Modules
You should list the modules you want automatically loaded in
/etc/modules.autoload.d/kernel-2.6. You can add extra options to
the modules too if you want.
To view all available modules, run the following find command. Don't
forget to substitute "<kernel version>" with the version of the kernel you
just compiled:
Kod Listeleme 4.1: Viewing all available modules |
# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less
|
For instance, to automatically load the 3c59x.ko module, edit the
kernel-2.6 file and enter the module name in it.
Kod Listeleme 4.2: Editing /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
|
Kod Listeleme 4.3: /etc/modules.autoload.d/kernel-2.6 |
3c59x
|
Continue the installation with Configuring your
System.
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.
-
İlk alan sabit disk bölümünü (partition) (aygıtın bulunduğu dizin) gösterir.
-
İkinci alan hangi bölüm bağlantı noktasını (moutpoint) gösterir.
-
Üçüncü alan dosya sistemini(filesystem) gösterir.
-
Dördüncü alan, bağlama komutu(mountoptions) ile kullanılan seçenekleri gösterir. Her dosya sistemi kendine has seçeneklere sahiptir.Bu seçenekleri daha sonra "man" sayfalarını kullanarak bakmanızı istiyoruz. Birden fazla bağlama seçenekleri birbirinden virgül "," karakteri ile ayrılır.
-
Beşinci alan dump için, dosya sistemi yedeklenerek sistemin dökümünün çıkarılmasının gerekip gerekilmediğini belirlemek için kullanılır.
-
Altıncı alan fsck tarafından sisteminiz düzgün bir şekilde kapatılmadığında hangi dosya sisteminin kontrol edilip edilmeyeceğini, edilecekse hangi sırada kontrol edeceğini belirtir. Eğer alan 1 ise bir "root" disk bölümünü belirtir, 0 değeri ise fsck komutunun dosya sistemini kontrol etmek zorunda olmadığını belirtir.(2 değerini de kullanabilirsiniz).
Ş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 |
iface_eth0="dhcp"
iface_eth0="192.168.0.2 broadcast 192.168.0.255 netmask 255.255.255.0"
gateway="eth0/192.168.0.1"
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. Silicon Graphics Machines -- Setting Up arcload
Which one?
On SGI machines, we use the arcload boot loader. In previous releases,
we also provided arcboot, however it has been officially declared
obsolete, in favour of arcload.
Not:
The SGI volume header filenames are limited to 8 characters, and there may be
no more than 16 files contained in a single volume header.
|
Installing arcload
arcload was written for machines that require 64-bit kernels, and
therefore can't use arcboot (which can't easily be compiled as a 64-bit
binary). It also works around peculiarities that arise when loading kernels
directly from the volume header. So, now you know what this is about, we can
proceed with the installation:
Kod Listeleme 1.1: Merging arcload and dvhtool |
# emerge arcload dvhtool
|
Once this has finished, you should find the arcload binary in
/usr/lib/arcload. Now, two files exist:
-
sashARCS: The 32-bit binary for Indy, Indigo2 (R4k), Challenge S and
O2 systems
-
sash64: The 64-bit binary for Octane/Octane2, Origin 200/2000 and
Indigo2 Impact systems
Use dvhtool to install the appropriate binary for your system into the
volume header:
Kod Listeleme 1.2: Placing arcload in the volume header |
# dvhtool --unix-to-vh /usr/lib/arcload/sashARCS sashARCS
# dvhtool --unix-to-vh /usr/lib/arcload/sash64 sash64
|
Not:
You don't have to use the name sashARCS or sash64, unless you are
installing to the volume header of a bootable CD. For normal boot from
hard-disk, you may name them something else if you wish.
|
Now just use dvhtool to verify they are in the volume header.
Kod Listeleme 1.3: Checking arcload is present in the volume header |
# dvhtool --print-volume-directory
----- directory entries -----
Entry #0, name "sash64", start 4, bytes 55859
#
|
Now, the arc.cf file has a C-like syntax. For the full detail on how one
configures it, see the arcload page on the Linux/MIPS
wiki. In short, you define a number of options, which you enable and
disable at boot time using the OSLoadFilename variable.
Kod Listeleme 1.4: An example arc.cf |
append "root=/dev/sda3";
append "ro";
append "console=ttyS0,9600";
ip28 {
working {
description "SGI Indigo2 Impact R10000\n\r";
image system "/working";
}
new {
description "SGI Indigo2 Impact R10000 - Testing Kernel\n\r";
image system "/new";
}
debug {
description "Debug console";
append "init=/bin/bash";
}
}
|
Starting with arcload-0.5, arc.cf and kernels may reside
either in the volume header, or on a partition. If you wish to utilise this
newer feature, you may instead place the files in your /boot
partition (or / if your boot partition is not separate).
arcload uses the filesystem driver code from the popular grub
bootloader, and thus supports the same range of filesystems.
Kod Listeleme 1.5: Placing arc.cf and kernel in the volume header |
# dvhtool --unix-to-vh arc.cf arc.cf
# dvhtool --unix-to-vh /usr/src/linux/vmlinux new
|
With this done, now all that's left is to set some options in the PROM. See the
section on Rebooting the System.
9.b. Cobalt MicroServers -- Setting Up CoLo
Installing CoLo
On Cobalt servers, these machines have a much less capable firmware installed
on chip. The Cobalt BOOTROM is primitive, by comparison to the SGI PROM, and
has a number of serious limitations.
-
There's a 675kB (approximate) limit on kernels. The current size of Linux
2.4 makes it nearly impossible to make a kernel this size. Linux 2.6 is
totally out of the question.
-
64-bit kernels are not supported by the stock firmware (although these are
highly experimental on Cobalt machines at this time)
-
The shell is basic at best
To overcome these limitations, an alternative firmware, called CoLo (Cobalt Loader) was
developed. This is a BOOTROM image that can either be flashed into the chip
inside the Cobalt server, or loaded from the existing firmware.
Not:
This guide will take you through setting up CoLo so that it is loaded by the
stock firmware. This is the only truly safe, and recommended way to set up
CoLo.
|
Uyarı:
You may, if you wish, flash it into the server, and totally replace the
original firmware -- however, you are entirely on your own in that endeavour.
Should anything go wrong, you will need to physically remove the BOOTROM and
reprogram it yourself with the stock firmware. If you are not sure how to do
this -- then DO NOT flash your machine. We take no responsibility for
whatever happens if you ignore this advice.
|
Okay, with the warnings over now, we'll get on with installing CoLo. First,
start by emerging the package.
Kod Listeleme 2.1: Emerging colo |
# emerge colo
|
With that installed (I hope you read those messages ;-) you should be able to
look inside the /usr/lib/colo directory to find two files,
colo-chain.elf: the "kernel" for the stock firmware to load, and
colo-rom-image.bin: a ROM image for flashing into the BOOTROM. We
start by mounting /boot and dumping a compressed copy of
colo-chain.elf in /boot where the system expects it.
Kod Listeleme 2.2: Putting CoLo in its place |
# gzip -9vc /usr/lib/colo/colo-chain.elf > /boot/vmlinux.gz
|
Configuring CoLo
Now, when the system first boots up, it'll load CoLo which will spit up a menu
on the back LCD. The first option (and default that is assumed after roughly 5
seconds) is to boot to the hard disk. The system would then attempt to mount
the first Linux partition it finds, and run the script
default.colo. The syntax is fully documented in the CoLo
documentation (have a peek at
/usr/share/doc/colo-X.YY/README.shell.gz -- where X.YY is the
version installed), and is very simple.
Not:
Just a tip: when installing kernels, I usually create two kernel images,
kernel.gz.working -- a known working kernel, and
kernel.gz.new -- a kernel that's just been compiled. You can
either use symlinks to point to the curent "new" and "working" kernels, or just
rename the kernel images.
|
Kod Listeleme 2.3: A basic default.colo |
mount sda1
load /kernel.gz.working
execute root=/dev/sda3 ro console=ttyS0,115200
|
Not:
CoLo will refuse to load a script that does not begin with the #:CoLo:#
line. Think of it as the equivalent of saying #!/bin/sh in shell
scripts.
|
It is also possible to ask a question, such as which kernel & configuration
you'd like to boot, with a default timeout. This configuration does exactly
this, asks the user which kernel they wish to use, and executes the chosen
image. vmlinux.gz.new and vmlinux.gz.working may be
actual kernel images, or just symlinks pointing to the kernel images on that
disk. The 50 argument to select specifies that it should proceed
with the first option ("Working") after 50/10 seconds.
Kod Listeleme 2.4: Menu-based configuration |
lcd "Mounting sda1"
mount sda1
select "Which Kernel?" 50 Working New
goto {menu-option}
var image-name vmlinux.gz.working
goto 3f
@var image-name vmlinux.gz.working
goto 2f
@var image-name vmlinux.gz.new
@lcd "Loading Linux" {image-name}
load /{image-name}
lcd "Booting..."
execute root=/dev/sda5 ro console=ttyS0,115200
boot
|
See the documentation in /usr/share/doc/colo-VERSION for more
details.
9.c. Setting up for Serial Console
Okay, the Linux installation as it stands now, would boot fine, but assumes
you're going to be logged in at a physical terminal. On Cobalt machines, this
is particularly bad -- there's no such thing as a physical terminal.
Not:
Those who do have the luxury of a supported video chipset may skip this section
if they wish.
|
First, pull up an editor and hack away at /etc/inittab. Further
down in the file, you'll see something like this:
Kod Listeleme 3.1: inittab Configuration |
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
ca:12345:ctrlaltdel:/sbin/shutdown -r now
|
First, uncomment the c0 line. By default, it's set to use a terminal
baud rate of 9600 bps. On Cobalt servers, you may want to change this to 115200
to match the baud rate decided by the BOOT ROM. This is how that section looks
on my machine. On a headless machine (e.g. Cobalt servers), I'll also recommend
commenting out the local terminal lines (c1 through to c6) as
these have a habit of misbehaving when they can't open /dev/ttyX.
Kod Listeleme 3.2: Example snippet from inittab |
c0:12345:respawn:/sbin/agetty 115200 ttyS0 vt102
|
Now, lastly... we have to tell the system, that the local serial port can be
trusted as a secure terminal. The file we need to poke at is
/etc/securetty. It contains a list of terminals that the system
trusts. We simply stick in two more lines, permitting the serial line to be
used for root logins.
Kod Listeleme 3.3: Enabling root logins on serial console |
# echo 'ttyS0' >> /etc/securetty
# echo 'tts/0' >> /etc/securetty
|
9.d. Rebooting the System
Exit the chrooted environment and unmount all mounted partitions. Then type in
that one magical command you have been waiting for: reboot.
Kod Listeleme 4.1: Exiting the chroot, unmounting all partitions and rebooting |
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot
|
Not:
Cobalt Users: The rest of this section covers the setting up of the SGI
PROM so that it boots arcload off disk and loads
Linux.
This is not applicable to the setup of Cobalt servers. In fact, all your work
is done -- there is no configuration needed for the first boot up, you can skip
to the next section: Finalising your Gentoo
Installation
|
9.e. Tweaking the SGI PROM
Setting generic PROM settings
Now that you've installed the bootloader, you're ready to reboot the machine.
Kod Listeleme 5.1: Rebooting |
# exit
# umount /mnt/gentoo/boot
# umount /mnt/gentoo
# reboot
|
When you are rebooted, go to the System Maintenance Menu and select
Enter Command Monitor (5) like you did when you netbooted the
machine.
Kod Listeleme 5.2: Configuring the PROM to Boot Gentoo |
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.
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv AutoLoad Yes
>> setenv TimeZone EST5EDT
>> setenv console d1
>> setenv dbaud 9600
|
Now, the next settings depend on how you are booting the system.
Settings for direct volume-header booting
This is covered here for completeness. It's recommended that users look into
installing arcload instead.
Not:
This only works on the Indy, Indigo2 (R4k) and Challenge S.
|
Kod Listeleme 5.3: PROM settings for booting off the volume header |
>> setenv OSLoadPartition <root device>
>> setenv OSLoader <kernel name>
>> setenv OSLoadFilename <kernel name>
>> setenv OSLoadOptions <kernel parameters>
|
If you wish to try a kernel without messing with kernel parameters, you may do
so using the boot -f PROM command:
Kod Listeleme 5.4: Booting without changing environment variables |
# boot -f new root=/dev/sda3 ro
|
Settings for arcload
arcload uses the OSLoadFilename option to specify which options
to set from arc.cf. The configuration file is essentially a
script, with the top-level blocks defining boot images for different systems,
and inside that, optional settings. Thus, setting
OSLoadFilename=mysys(serial) pulls in the settings for the mysys
block, then sets further options overridden in serial.
In the example file above, we have one system block defined, ip28 with
working, new and debug options available. We define our
PROM variables as so:
Kod Listeleme 5.5: PROM settings for using arcload |
>> setenv OSLoader sash64
>> setenv OSLoadFilename ip28(working)
|
Starting with arcload-0.5, files no longer need to be placed in the
volume header -- they may be placed in a partition instead. To tell
arcload where to look for its configuration file and kernels, one must
set the OSLoadPartition PROM variable. The exact value here will depend
on where your disk resides on the SCSI bus. Use the SystemPartition PROM
variable as a guide -- only the partition number should need to change.
Not:
Partitions are numbered starting at 0, not 1 as is the case in Linux.
|
Kod Listeleme 5.6: Telling arcload where to find arc.cf |
>> setenv OSLoadPartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv OSLoadPartition scsi(0)disk(1)rdisk(0)partition(0)[ext2]
|
All Done
Now you're ready to enjoy Gentoo! Boot in your Gentoo installation and finish
up with Finalizing your Gentoo
Installation.
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
# 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:
Re-enter password:
|
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.
>> setenv OSLoadPartition <root device>
>> setenv OSLoader <kernel name>
>> setenv OSLoadFilename <kernel name>
>> setenv OSLoadOptions <kernel parameters>
>> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv AutoLoad Yes
>> setenv TimeZone EST5EDT
>> 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:
|
Ş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
# 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
# export PKGDIR="/mnt/cdrom/packages"
# 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 sistem genelinde birçok paket tarafından kullanılır. Birçok insana göre USE-flag budur.
- yerel (local) USE-flag tek bir paket tarafından, pakete özel kararları yapmak için kullanılı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):
-
Öntanımlı ayarların bulunduğu dosya: /etc/make.profile/make.defaults
-
Eğer, /etc/make.profile/use.defaults dosyasındaki öpaketlerden biri kuruluyor ise, onun mirası olan USE değişkenleri.
-
Kullanıcının /etc/make.conf dosyasında belirttiği USE değişkeni.
-
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 ]
[ 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 ]
- - : Adds GNU Data Access (CORBA wrapper) support for gnumeric
- - : 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 ]
* 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 ]
* 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
*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
[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:
-
B (blocks) Solda listelenen paket sağda listelenen paketin yüklenmesini blokluyor(engelliyor).
-
N (new) Bu paket sizin sisteminizde yeni ve ilk defa kurulacak.
-
R (reemerge) Bu paket yeni değil fakat yeniden derlenmesi gerekli.
-
F (fetch) Bu paketin kaynağını elle indirmeniz gerekiyor (örnek olarak, lisans sorunları sebebiyle).
-
U (update) Bu paket sisteminizde mecvut fakat güncellenecek.
-
UD (downgrade) Bu paket sisteminizde mevcut fakat eski bir sürümle değiştirilecek.
-
U- (slot warning) Yüklediğiniz paket paket olarak listelenmekte ancak başka bir versiyonla birlikte çalışamaz, ama güncel olan yapabilir. Güncel olan yüklenecek ve eski olan kaldırılacak.
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:
-
!mtime : Bu dosya muthemelen siz ya da bir araç tarafından, yüklendikten sonra değiştirilmiş.
-
!empty : Listelenen dizin boş değil.
-
cfgpro : Bu dosya korumalı bir dizin içinde ve güvenlik için dokunulmayacak.
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
!!! <your package>
|
Bir paket iki sebepten dolayı maskelenir:
- Siz ARCH kullanıyorken paket ~ARCH biçimi olabilir.
- 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 |
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 |
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
|
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 |
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() {
}
start() {
}
stop() {
}
restart() {
}
|
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:
-
net bağımlılığına (sanal) ihtiyaç duyar (mesela, /etc/init.d/net.eth0 ile sağlanan))
-
logger bağımlılığını (sanal) kullanır (mesela/etc/init.d/syslog-ng ile sağlanan)
-
dns bağımlılığını (sanal) kullanır (mesela/etc/init.d/named ile sağlanan))
-
mta bağımlılığı (sanal) sağlar (tüm mail sunucular için ortak olan)
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
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):
- /etc/conf.d/<sizin init betiğiniz>
- /etc/conf.d/basic
- /etc/rc.conf
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"
|
Bu belgenin içeriği Creative Commons Attribution / Share Alike altında lisanslanmıştır
|