Bir işletim sistemi, marka ve modeli ne olursa olsun bakım isteyen bir araçtır. Yapılacak küçük bir hata, veya hatayı gösteren bir işaretin gözardı edilmesi, zaten değerli olan zamanın boşa gitmesine neden olur. Linux da açık bir işletim sistemi olduğundan, sorumluluk sahibi sistem yöneticisi tarafından açık tutulduğu süre içinde verimli ve düzgün çalışması için gerekli özen gösterilmelidir. İnternet üzerinde üzerinde 500 kullanıcı olan , veya ftp.linux.org adresi gibi her hafta onbinlerce ziyaretçisi olup ağır sorumluluklar yüklenen Linux makinaları vardır. Bunların bir saat boyunca bile kapalı kalması, o anda bağlanmayı bekleyen pek çok kullanıcıyı mağdur durumda bırakacaktır.
Performansı etkileyen unsurların başında, önlemek pek de elinizde olmasa da elektrik kesintileri ve makinanın kapalı olduğu zamana denk gelen çekirdek değişimleridir. Bu tür donanımsal etkileri bir tarafa bırakırsak sistem yöneticisinin uyması gereken ve İnternet etikleri dediğimiz davranış kuralları vardır. Bu kurallara öncelikle sistem sorumlusu uymalı ve kullanıcıları da uymaya zorlamalıdır. Açık işletim sistemlerinin en büyük sorunlarından biri olan güvenlik konusuna sistem yöneticisi belirli günler zamanının bir bölümünü ayırmalıdır. Kullanıcılardan gelebilecek her türlü saldırı, sisteme onarılması çok zor olabilecek zararlar verebilir. Bunun için düzenli olarak dosyaları kontrol edin ve şüpheli durumlarda araştırma yapmaktan çekinmeyin. Bu konuda daha fazla bilgiyi Linux İşletim Sisteminde Güvenlik başlığı altında bulabilirsiniz.
Yukarıdaki tabloya bakarak işinizin zor olduğu kanısına kapılmayın, zira tüm bu denetleme mekanizmasını basitleştirebilirsiniz. Yapılacak tüm rutin işleri bir programa yazıp günün veya haftanın belirli saatlerinde bu programı çalıştırın ve olabilecek tüm hata mesajlarını bir dosyaya yazın. Bu dosyayı boş bir vakitte inceleyerek programın ne kadar düzgün çalıştığını gözlemleyebilirsiniz. Bunun yanında sistem yönetimini zevkli kılacak uygulama programları da vardır. Bu uygulama yazılımlarından bazıları o kadar gelişmiştir ki yapamadıkları tek iş yemek pişirmektir.
Yabancı kaynaklı yayınlardan Essential System Management (Frisch) ve Essential System Administration (O'Reilly) bu yönde tavsiye edilebilecek kitaplar. Piyasada bulunan Türkçe kitapların hiçbirisinde sistem yönetimine ciddi olarak değinilmediği için Türkçe yayın bulmak gayet zor.
Sistemin en büyük sorumlusu root şifresini bilen kullanıcıdır. Yukarıda da belirtildiği gibi bu şifrenin sorumluluğu büyüktür. Sistem yöneticisi, makinadaki kullanıcıların isteklerini ve şikayetlerini yönelttikleri tek merci durumundadır. Burada karşılıklı güven sözkonusudur, bunu da sistem görevlisi herkese hissettirmelidir. root kullanıcısının, başkalarından gözünüz gibi sakladığınız e-posta ve dosyaları sizden habersiz okuduğunu öğrenseydiniz tepkiniz ne olurdu ?
root kullanıcısının sahibinin haberi olmaksızın sistem kullanıcılarına ait dosyaların yerini ve izinlerini değiştirmesi de uygun değildir. Zorda kalsanız bile, başkalarına ait hiçbir dosyayı silmeyin veya içeriğini değiştirmeyin. Belki de sıkışık bir durumdan kurtulmanın başka bir yolu vardır ?
Temel olarak zaman zaman kullanıcıları bilgilendirmek hoş bir
davranış olarak karşılanır ve onların Linux'a olan ilgilerini
perçinleyebilir. Örneğin /etc/motd
ve /etc/issue
dosyalarına periyodik olarak çekirdek değişimlerini ve eklenen uygulama
programlarını haber
veren birkaç satır iliştirebilirsiniz. Sistemde açılan her kullanıcı
hesabına
Linux Çokça Sorulan Sorular (Linux ÇSS), çeşitli UNIX belgeleri
ve İnternet hakkında bilgilendirici dökümanlarının yeraldığı bir dizi
e-posta da yollanabilir. Bu konuda yaratıcılığınızı konuşturun.
Kullanıcı hesabı açmadan önce birkaç basit kuralı tanımlayıp
kullanıcılardan bunlara uymalarını istemelisiniz. En basitinden birkaç
kural, bir hesabın birden fazla kişi ile kullanılmaması, sistemin
güvenliğini zedeleyecek crack, cops, satan
gibi programların diğer
kullanıcıların zararına çalıştırılmaması ve sistem kaynaklarının
sorumsuzca tüketilmemesi olarak sayılabilir.
Siz, en iyisi yukarıda yeralan kuralları birkaç madde halinde yazın ve sistemdeki herkesin bu maddelere uyacağını taahhüt eden imzasını alın. Tatsız durumların çıkmaması için de önlem almayı ihmal etmeyin.
Aşağıda yeralan konularda, kullanıcı hesaplarının açılması ve kapatılması anlatılıyor.
Kullanıcı hesabı açmak iki yoldan yapılabilir. Birincisi, adduser
komutu yardımıyla, diğeri de bu komutun yaptığı işlemleri sırasıyla
elden yapmak. root olarak sisteme girin ve komutu çalıştırın :
# adduser Login name for new user (8 characters or less) []: mehmet User id for mehmet [ defaults to next available]: Initial group for mehmet [users]: Additional groups for mehmet []: mehmet's home directory [/home/mehmet]: mehmet's shell [/bin/bash]: mehmet's account expiry date (MM/DD/YY) []: OK, I'm about to make a new account. Here's what you entered so far: New login name: mehmet New UID: [İleri available] Initial group: users Additional groups: [none] Home directory: /home/mehmet Shell: /bin/bash Expiry date: [no expiration] This is it... if you want to bail out, hit Control-C. Otherwise, press ENTER to go ahead and make the account. Making new account... Changing the user information for mehmet Enter the new value, or press return for the default Full Name []: linux kullanicisi Room Number []: Work Phone []: Home Phone []: Other []: Changing password for mehmet Enter the new password (minimum of 6, maximum of 8 characters) Please use a combination of upper and lower case letters and numbers. New password: Bad password: too simple. Warning: weak password (enter it again to use it anyway). New password: Re-enter new password: Password changed. Done...
Kullanıcının isminin 3 karakterden az, 8 karakterden fazla olmamasına
özen gösterin. Sistem sizden kullanıcının gerçek ismini, ev dizinini,
(genellikle /home içinde olur), grubunu isteyecektir. adduser
komutu, eğer özel
olarak değiştirmek istemezseniz her kullanıcının grup numarasını GID =
Group ID) 100 olarak tanımlayacaktır. Bu gruba karşılık gelen isim (Group
Name) users dır. Kullanıcı kimliği (UID = User ID) ise genellikle 500'den sonra
gelen ve kullanılmayan ilk sayı olarak atanır.
Eğer UID olarak 0 girerseniz sistemde sizinle beraber bir süper-kullanıcı
daha yaratmış olursunuz :)
Sisteme girişte çalıştırılacak olan kabuk için seçimi ister kullanıcıya
bırakın, isterseniz öntanımlı olarak bash verin. Bash'in sistemdeki
tam patikasını (/bin/bash
) yazmalısınız. Bu alana sadece kabuk ismi
girmek şart değildir.
Yukarıda sistem bizi güçlü bir şifre seçmediğimiz için uyardı. Şifre olarak, herkesin kolayca tahmin edemeyeceği zorlukta, fakat kullanıcının bir yere yazmasını önleyici kolaylıkta bir kelime bulun. Kullanıcı, hesabının açılmasından hemen sonra sisteme girecekse ve şifresini değiştirecekse kısa ve kolay bir şifre yeterli olacaktır.
Her şeyin doğru olduğuna eminseniz, sorulan soruya "y" ile, değilseniz
"n" ile cevap verin. Hemen ardından /etc/skel
dizini altında yeralan
tüm dosyalar bu kullanıcının dizinine kopyalanacaktır. Buraya, her
kullanıcının ev dizinine önceden yüklenmesini istediğiniz sistem
dosyalarını yerleştirebilirsiniz. Bu andan itibaren yeni kullanıcı
sisteme girebilir.
Sisteme kullanıcı ekleme işlemini el yordamıyla yapmak isterseniz,
/etc/passwd
ve /etc/shadow
dosyalarına birer satır eklemelisiniz. /etc/passwd
'de aralarında birer ':' karakteri olmak kaydıyla sırayla hesap ismi, "x", grup kimliği, kullanıcı kimliği, kullanıcı isim ve soyadı, ev dizini ve kabuk programı yeralır. /etc/passwd
içine bu satırı ekleyin:
ozgur:x:100:502:Misafir Sanatci:/home/ozgur:/bin/bash
/etc/shadow
içine ise aşağıdaki satırı yerleştirin, tabi diğer satırlara dokunmadan.
ozgur::9990:0:99999:7::::
Bu satırda yeralan ikinci girdi mirkelam kullanıcısının şifresini
belirtiyor. /etc/shadow
dosyasına yazılacak olan şifreyi önce boş bırakıp, ardından passwd ozgur
komutuyla bir şifre atayın.
/etc/shadow
dosyasında kullanılabilecek parametreler için shadow(5)
man dosyasına göz gezdirin.
Ardından /home/ozgur
dizinini oluşturun. Dizinin grubunu da ayarlayın. Çok gerekli olmasa da gelen e-postalar için /var/spool/mail
dizininde bir dosya tanımlayın ve /etc/skel
içinde yeralan dosyaları kullanıcının
dizinine kopyalayın.
# mkdir /home/ozgur # chown -R ozgur.users /home/ozgur # touch /var/spool/mail/ozgur # chown ozgur.mail /var/spool/mail/ozgur
Yukarıda yazılan elle kullanıcı girme işlemi, shadow kullanan Linux makinaları için geçerlidir. Shadow için Güvenlik bölümüne göz atın.
Eğer Linux makinanız birkaç yoğun görev üstlenmişse (örneğin www veya ftp sunucusu olarak kullanılıyorsa) her bir işlem için birden fazla grup tanımlanabilir. users grubuna bağlı kalmadan wwwadm veya ftpadm gibi grup isimleri belirtebilir, bu grupları da bir veya birkaç kullanıcıya ait olacak şekilde değiştirebilirsiniz.
users grubunun dışında birden fazla grup tanımlanması, sistemin denetlenmesini bir miktar güçleştirse de sistem güvenliğini artırır. Bazı kullanıcıların birden fazla grubunun olmasıyla bu kullanıcılar rahatlıkla sistemde root kullanıcısının üstlenmesi gereken işleri yapabilirler.
Grup kimliğinin değiştirilmesi veya yeni grubun eklenmesi için /etc/group
dosyası kullanılır. Bu dosyaya grubun ismi, numarası, grup şifresi ve gruba ait kullanıcılar yazılır. Her kullanıcının en az bir grubu vardır.
/etc/group
dosyasının iki satırında yeralan parametreler,
root::0:root sys::3:root,bin,sys,adm
gibidir. Sırayla ":" karakteri ile ayrılmış her kolon,
şeklinde özetlenebilir. İlk sütun grup ismini belirtir. Grup ismi,
ls -l
komutunu işletince kullanıcı isminin hemen sağında görülen
kelimedir. Grup şifresi, gruba ait olmayan kullanıcıların dosyalarına
erişim sağlamak için kullanılır.
Grup şifresi nadiren kullanılır. Grup numarası, kullanıcının ait olduğu
grubun karşılığıdır. Son sütunda ise gruba ait kullanıcılar, her biri
birer virgülle ayrılmış olarak yazılır. Kullanıcı sisteme girdiği zaman
otomatik olarak /etc/passwd
dosyasında yeralan grup ismi aktif olur, bu
yüzden her kullanıcının ismi /etc/groups
dosyasına yazılmaz. Sistem ilk
kurulduğu anda birkaç grup halihazırda zaten vardır. Örneğin root grubunun
grup numarası 0'dır ve pekçok sistem dosyasının sahibidir, bin grubunun numarası is 2 olup /usr/bin
ve /bin
dizinlerindeki çoğu dosyanın
grubudur.
Hangi grubun (veya tanımlanmışsa grupların) içinde olduğunuzu öğrenmek
için groups
komutunu kullanabilirsiniz.
$ groups gorkem users
Bir kullanıcıya ait hesabı silmek için /etc/passwd
dosyasında bu
kullanıcıya ait olan satırdaki şifre kolonunun başına * işareti
koyun. Bir şifrelenmiş bir parolanın içinde * karakteri olamayacağından
bu kullanıcı bir daha sisteme giremez.
Hesabı tamamen silmek için, kullanıcının ev dizinini ve e-postalarını yedekledikten sonra sistemde kullanıcıya ait olan dosyaları (/tmp
altında) ve ev dizinini silin.
/etc/passwd
ve /etc/group
dosyasından kullanıcının isminin geçtiği satırları kaldırın.
Sistemde kullanıcıya ait olabilecek tüm dosyaları da silmeniz
gerekebilir. Bunun için find
kullanabilirsiniz.
$ find / -user gorkem -ls -exec rm {} \;
Bu komutu /etc/passwd
dosyasından kullanıcı ismine ait olan satırı
kaldırmadan önce yapmalısınız.
Makinanızın belirli aralıklarla yedeklenmesi, sistem güvenliğinin bir parçası sayılabilir. Donanımdan meydana gelen bir hata sonucu veya yanlışlıkla girilen bir komut, sistemi açılamaz hale getirebilir. Ancak yedekleme ile bu tür kullanıcı hatalarının önüne geçebilirsiniz. Yedekleme genellikle tüm sistem üzerinde yapılmaz. Sadece önemli sistem bilgilerini içeren dizinler yedekleme aşamasına girmelidir.
Yedekleme üniteleri olarak teyp, disket veya başka diskler kullanılabilir. Teypler, büyük miktarda yedekleme işlemleri için ön plana çıksa da birkaç dosyadan oluşan paketlerin korunması söz konusu olacaksa disketler daha pratiktir. İnternet üzerinde ise bağımsız bir makina, kendi rutin görevi dışında yerel ağda bulunan makinaların yedeklerini belirli gün ve saatlerde almak üzere programlanabilir.
Sistemde fazla miktarda kullanıcı varsa yedekleme işlemi ciddi bir düzene oturtulmalıdır. Sistemdeki hayati dosyalar örneğin her hafta, üzerinde kullanıcıların bulunmadığı akşam saatlerinde yedeklemeye sokulabilir.
Yedekleme için birkaç yol önerilebilir. Kullanışlı olması için yedeklemeyi yapan program, yedeklenen dosyalar arasındaki belirli bir dosyayı kolayca açabilmelidir. Bunun yanında, yedek bilginin de bozulması ihtimali vardır. Yedeğin içindeki tek baytın bozulması, bazı durumlarda tüm yedeğin çöp yığını haline gelmesine yol açabilir. Doğru yedekleme programının kullanılması bu anda önem kazanır.
Yedeklenecek olan dizinlerden en önemlileri, sistem konfigürasyon
dosyalarının yeraldığı /etc
, kullanıcı dizinlerinin yeraldığı /home,
bazı X Window dosyalarının bulunduğu /usr/X11/lib/X11 dizini altındaki
bazı dosya ve dizinler,
/usr
ve /usr/local
dizinde yeralan bazı dizin
ve dosyalar ile /root
dizinidir. Şart olmasa da yedekleme için yeriniz
bolsa /tmp
dizinini de koyabilirsiniz.
Elektronik postaları ( /var/spool/mail
) da unutmamak gerekir. Yoksa,
çok meşhur olan "e-meyılım cyber-space'de kayboldu" cümlesini sıkça
duymaya başlarsınız.
Aşağıdaki komut, /usr
ve /home
dizinlerini diskete yedekler.
$ tar cvMf /dev/fd0 /usr /home
tar
komutununa verilen M parametresi yardımıyla bir disket dolduğu
zaman başka bir diskete devam etmenizi sağlar. Dizinleri sıkıştırarak
atmak için z seçeneğini vermek yeterli olur. Sıkıştırarak yedekleme
disket ya da teyp'te yer kazandıracaktır, ancak hata olduğunda verilerin
kurtarılması daha zor olacaktır. Açmak için
$ tar xf /dev/fd0
komutu yeterlidir. Sıkıştırılarak diskete atılan yedekler için açarken de "z" kullanın. Disketleri sıra ile numaralandırmayı ihmal etmeyin, yoksa bir disketten fazla yer kaplayan arşivleri açamazdınız.
Linux'ta gerek SCSI, gerek floppy teyp desteği vardır. Özellikle çok
veri yedekleyecekseniz teypler kaçınılmaz olur. Teyplere yedek alırken
de yukarıdaki floppy orneklerindeki gibi tar
kullanabilirsiniz.
tar
'ın yanı sıra sıkça kullanılan yedekleme komutları arasında
dump ve restore
, cpio
ve dd
gösterilebilir. Linux'ta
ilk SCSI teyp sürücüye /dev/st0
, ikinciye /dev/st1
...
kullanarak, PC'lerde sıkça kullanılan ``floppy teyp''lere de
/dev/ftape
üzerinden erişebilirsiniz. Piyasada bulacağınız
ortalama floppy teyplerin kapasiteleri 120M, 4mm SCSI teyplerin 4G, 8mm
SCSI teyplerin ise 7G kadar olacaktır. Teybin kapasitesi kullandığınız
sürücünün yeteneğine ve teybinizin uzunluğuna göre değişir. Örnek olarak,
bütün sistemin tar kullanarak ilk SCSI teybe yedeklemek için,
# tar cvf /dev/st0 /
Bir TCP/IP ağınız varsa, ve birden fazla Linux ya da UNIX makinası
kullanıyorsanız, tek bir teyp sürücü ile bütün makinalarınızın, hatta
Windows makinalarınızın bile (Linux'un yardımıyla) yedeğini
alabilirsiniz. Bu iş için amanda gibi daha özelleşmiş ve yedekleme
işlemini otomatikleştiren bir program kullanabileceğiniz gibi, GNU
tar
'dan da yararlanabilirsiniz. Örneğin tar
ile, cclub.metu.edu.tr
makinasından, linux.org.tr makinasındaki floppy teybe yedek almak için,
cclub:~# tar cvf linux.org.tr:/dev/ftape /home
yukarıdaki komutun çalışması için linux.org.tr makinasının
root
'unun .rhosts
dosyasında cclub makinasının root
'una
izin verilmiş olması gerekir. Bu işlem güvenlik için sakıncalı
olduğundan, bu iş için özel bir kullanıcı açmak gibi bir yönteme
başvurulabilir. Örneğin linux.org.tr'da yedek
adlı bir kullanıcı
açtığımızı düşünelim. Bu durumda yukarıdaki komutu,
cclub:~# tar cvf yedek@linux.org.tr:/dev/ftape /home
şeklinde yazabiliriz.
Tekrar Linux yüklenecek olan makina üzerinde halihazırda Linux bulunmasının yararları olduğu gibi bazı sakıncaları vardır. İlk olarak yararlarına değinmek gerekirse, yapılacak aslında sadece işletim sisteminin bulunduğu bölümü değiştirmektir. Takas alanının ayrılması, kullanıcı alanının ayrılması gibi işlemler bu durumda önceden yapılmış oluyorlar. Ancak yeni işletim sisteminin yüklenmesinin bazı zararları da var.
Herşeyden önce çalıştığı bilinen bir işletim sistemi yenisi ile değiştiriliyor. Gerçekten bunu gerektirecek bir sebep olmadıkça bu tür güncellemelerden kaçınılması veya en aza indirilmesi gerekir. Yeni bir sistem, yeni bilinmeyenler ve az da olsa bile çalışmama riski getirecektir.
Eğer sistem üzerinde belirli hizmetler veriliyorsa o hizmetlere ilişkin verilerin bu güncelleme esnasında yok olmamasına dikkat edilmeli. Mesela makina bir web sunucu olarak kullanılıyorsa web dosyalarının bir şekilde yeni sisteme aktarılması gerekecektir .
Benzer bir şekilde makinaya ait tanımların (/etc
) ve standart dağıtım
dışında yüklenmiş paketlerin önceden yedeklenmesi gerekir. Yoksa herşeye
yeniden başlamak gerekebilir.
Güncelleme için iki yöntem akla gelebilir, doğrudan yeni sistemi eskisinin üzerine bindirmek veya eskisini silerek yeniden yüklemek. Slackware sürümü için en sağlıklısı eski sistemi silmektir. Çünkü değişik dağıtımlarda dosya dağılımı farklılıklar göstere bilmektedir. Bunun sonucunda bazı dosyalar birden fazla yerde gözükebilmektedirler. Bir diğer sakınca ise setup yazılımının bazen bu durumda şaşırabilmesi ve hata vermesi. Bazı ticari Linux sürümleri (Red-Hat, Debian, Caldera gibi) eski sürümü silmeye gerek bırakmadan sistemi güncelleme özelliğine sahipler.
Güncellemeniz gerekebilecek dizinler, /var/spool/mail
, kullanıcı
dizinleri (root dahil), /usr
altında gerekli dizinler,/var/adm/
ve
/etc
olarak sayılabilir. Bazen /etc
içinde yer alan
dosyaların yeri veya şekli değişmiş olabilir. Onun için en güvenlisi
teker teker dosyaları inceleyip kopyalamaktır. Belirli dosyaları yeni
sistemi kurduktan sonra hemen kopyalayabilirsiniz :
/etc/group /etc/printcap /etc/hosts ...
Daha önce shadow kullanmayan bir sistemden shadow sistemine geçiyorsanız,
/etc/passwd
ve /etc/shadow
dosyalarında gerekli değişiklikleri yapmadan yeni yerine kopyalamayın.
Ayrıca ne olur ne olmaz diye çalıştığını bildiğiniz bir çekirdeği de yedeğe almayı ihmal etmeyin.
Bu bölümde, çekirdeğin konfigürasyonu ve derlenmesi için gerekli bilgiler vardır. Çekirdek derleme uzun ve zahmetli bir işlemdir. Derleme aşamasını en kısa zamanda ve en uygun yoldan gerçekleştirmek gerekir. Derleme işlemi, kullanıcının önüne kafasını karıştıracak kadar çok seçenek sunar.
Nedir bu çekirdek? Genel anlamda çekirdek, yazılımın ve donanımın arasında bekleyerek iletişimi sağlayan bir arabirimdir. Çalışan tüm programların ve süreçlerin hafıza ile olan ilişkilerini düzenler. İşlemcinin gücünün tüm bu programlar arasında adil bir şekilde dağıtımını üzerine alır. Bu işlemleri kullanıcının haberi olmadan her an durmaksızın yapar.
Çekirdek kaynak dosyaları diskte hatırı sayılır bir alan tutar. Örneğin sürüm 2.0.20 yaklaşık 6Mb disk alanı kaplar. Açıldığı zaman ise toplam kapladığı alan 24 Mb olur. Derleme aşamasından sonra bu rakam 30 Mb'yi geçer. Her eklenen aygıt sürücü desteği bir miktar daha yer alır.
Kullandığınız sisteme göre çekirdeğin derlenme süresi değişkenlik gösterir. 12 Mb 486DX4/100 makinasında, 5 dosya sistemi desteği, ağ desteği ve ses kartı sürücüsü ile yaklaşık 30 dakika sürer. Aynı konfigürasyonu içeren çekirdeğin derlenmesi ise daha güçsüz bir makina olan 8Mb 386DX/40 altında 1.5 saati bulur. Derlerken gidip çayınızı için, biraz televizyon seyredin. Makinaniz 386 ise bir banyo alıp dışarı çıkın, alışveriş yapın. Çok ümitsiz bir durumdaysanız, yapılacak en iyi şey en yakın bilgisayar satıcısına uğrayarak yeni fiyatları sormak :-)
Çekirdek kaynak kodu , ODTÜ ftp arşivindeki adresinden veya tsx-11.mit.edu adresinin yansısını tutan herhangi bir adresten alınabilir. Bu dizin altındaki Linux sürümlerinin bir tanesini (v1.2, v2.0, v2.1 gibi) seçtikten sonra altındaki dosyayı alabilirsiniz. Dosyanın ismi linux-x.y.z.tar.gz yapısındadır.
Aşağıdaki örnekte ODTÜ ftp arşivinden 2.0.20 sürümünün alınışı gösterilmektedir:
$ ftp ftp.metu.edu.tr Connected to ephesus.cc.metu.edu.tr. 220- 220-Welcome to METU Ftp Site ! 220- 220-All logins and transfers are logged with your hostname. 220-If you do not agree with this policy, please cancel now. 220- 220 ephesus FTP server (Version wu-2.4(5) Wed Jan 10 18:06:56 EET 1996) ready. Name (ftp.metu.edu.tr:gorkem): ftp 331 Guest login ok, send your complete e-mail address as password. Password: 230-########################################################################## 230-## Welcome to the Middle East Technical University Ftp Archive ## 230-########################################################################## 230- 230- 230-Hello ftp@compclup.ceng.metu.edu.tr ! 230-You are the 19. anonymous user. 230-Maximum number of users allowed is 100. 230-Local Time is Tue Nov 5 12:19:41 1996. 230- 230-Mirrored sites are placed under the directory /pub 230-This archive is maintained by ftpload@ftp.metu.edu.tr 230-You can reach this archive via FSP at port 21. 230- 230-You can reach public directories via "cd dirname" 230-command independent of your current location; 230-e.g. "cd linux" instead of "cd /pub/linux" 230- 230 Guest login ok, access restrictions apply. ftp> cd /pub/linux/tsx/sources/system/ 250-Please read the file README 250- it was last modified on Mon Sep 16 11:36:00 1996 - 50 days ago 250 CWD command successful. ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 66 -rw-r--r-- 1 ftpload ftp-adm 36981 Sep 16 12:36 CREDITS drwxr-xr-x 3 ftpload ftp-adm 512 Oct 13 15:59 Historic -rw-r--r-- 1 ftpload ftp-adm 12056 Sep 16 12:36 README drwxr-xr-x 2 ftpload ftp-adm 512 Oct 14 11:47 SillySounds drwxr-xr-x 2 ftpload ftp-adm 512 Oct 13 18:17 testing drwxr-xr-x 2 ftpload ftp-adm 512 Oct 14 11:47 v1.0 drwxr-xr-x 2 ftpload ftp-adm 2048 Oct 31 21:55 v1.1 drwxr-xr-x 2 ftpload ftp-adm 1024 Jun 25 11:34 v1.2 drwxr-xr-x 2 ftpload ftp-adm 6656 Sep 27 04:24 v1.3 drwxr-xr-x 2 ftpload ftp-adm 1536 Nov 2 00:05 v2.0 drwxr-xr-x 2 ftpload ftp-adm 512 Nov 2 21:33 v2.1 226 Transfer complete. ftp> cd v2.0 250 CWD command successful. ftp> bin 200 Type set to I. ftp> dir linux* 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 141009 -rw-r--r-- 1 ftpload ftp-adm 5859566 Jul 3 11:22 linux-2.0.1.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5940281 Jul 27 06:39 linux-2.0.10.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5952403 Aug 5 03:01 linux-2.0.11.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5954278 Aug 9 12:53 linux-2.0.12.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5981780 Aug 16 06:19 linux-2.0.13.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5984960 Aug 20 11:52 linux-2.0.14.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5986368 Aug 25 06:20 linux-2.0.15.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5990228 Aug 31 14:03 linux-2.0.16.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5991606 Sep 2 06:37 linux-2.0.17.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5993351 Sep 5 10:38 linux-2.0.18.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5997342 Sep 11 10:21 linux-2.0.19.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5861789 Jul 5 12:09 linux-2.0.2.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5997693 Sep 13 08:53 linux-2.0.20.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5999162 Sep 20 09:51 linux-2.0.21.tar.gz -rw-r--r-- 1 ftpload ftp-adm 6009488 Oct 8 13:02 linux-2.0.22.tar.gz -rw-r--r-- 1 ftpload ftp-adm 6010694 Oct 18 08:20 linux-2.0.23.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5931967 Jul 6 07:53 linux-2.0.3.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5926911 Jul 8 08:48 linux-2.0.4.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5927899 Jul 10 08:23 linux-2.0.5.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5929807 Jul 12 07:22 linux-2.0.6.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5931378 Jul 15 07:38 linux-2.0.7.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5936467 Jul 20 02:52 linux-2.0.8.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5939510 Jul 26 04:09 linux-2.0.9.tar.gz -rw-r--r-- 1 ftpload ftp-adm 5843677 Jun 9 23:36 linux-2.0.tar.gz 226 Transfer complete. ftp> get linux-2.0.20.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-2.0.20.tar.gz (5997693 bytes). 226 Transfer complete. 5997693 bytes received in 136 secs (43 Kbytes/sec) ftp> quit 221 Goodbye.
Sisteme root olarak giriş yapın ve /usr/src
dizinine geçin. Linux'un
kurulması aşamasında çekirdekleri de kurmuş iseniz bu dizinde 'linux'
isminde ve eski çekirdeğin kaynak kodlarını kapsayan bir alt dizin
göreceksiniz. Genellikle her kullanıcının yaptığı, bu dizinin ismini o
an çalışan çekirdeğin sürümüne göre değiştirmektir. Çekirdek sürümünü
bulmak için ise uname -r
komutunu kullanabilirsiniz.
$ uname -r 2.0.23
Bu komuttan çekirdeğin 2.0.23 sürümü olduğunu anlayabiliriz.
Çekirdek kodunu içeren paketi açmadan önce /usr/src
dizinine
kopyalayın, ve açmadan önce bu dizinde 'linux' isimli bir dizinin
olmadığına emin olun. Şimdi /usr/src
içinde iken sıkıştırılmış
çekirdek kodunu 'tar' komutu yardımıyla açın.
# tar -zxf linux-x.y.z.tar.gz
Komutun işletimi bitince 'linux' dizini oluşur. İlk defa derleme işlemi yapacaksanız aşağıdaki komutları sırasıyla yazın.
# cd /usr/include # rm -rf asm linux scsi # ln -s /usr/src/linux/include/asm-i386 asm # ln -s /usr/src/linux/include/linux linux # ln -s /usr/src/linux/include/scsi scsi # cd /usr/src/linux # make mrproper
/usr/src/linux
dizini altinda iken make config
yazın. Bu
komut, bir konfigürasyon dosyası yaratmak amacıyla sorular sorar.
Karşınıza çıkan sorulara 'y' (evet) veya 'n' (hayır) ile cevap vermeniz gerekir. Bazı aygıt sürücülerde 'm' seçeneği de olabilir. Bunun anlamı, sistem o programı modül olarak derleyecek ve çekirdeğe dahil etmeyecek demektir. Kullanıcı derleme aşamasından sonra istediği zaman bu modülü çekirdeğe dahil edebilir, işini bitirdikten sonra da çıkarabilir.
2.0.x ve daha yukarı sürümlerde '?' tuşuna basmakla daha ayrıntılı bilgi alabilirsiniz. Aşağıda bazı konfigürasyon parametreleri verilmiştir.
Kullandığınız makinanın işlemcisi yardımcı matematik işlemcisine sahip değilse (486SX, 386SX veya daha düşük makinalar) bu seçeneğe evet cevabını vermelisiniz.
Hemen herkesin kullandığı PC sabit disklerinin standart olması sebebiyle bu seçenege 'y' cevabı verilebilir. Daha ileride SCSI sabit disk ve cdrom desteği de sorulacaktır. Ardından gelecek olan 'old disks-only' ve 'new IDE' sürücülerinden birini seçerken, aralarındaki farkın ilkinde tek arabirim üzerinden iki adet diski desteklemesi, diğerinde ise ikinci arabirim ile birlikte IDE/ATAPI cdrom'ları desteklemesidir.
Makinanız herhangi bir ağ üzerinde ise (İnternet gibi), veya İnternet'e bağlanmak için SLIP, PPP gibi programları kullanmak istiyorsanız bu bölüme 'y' cevabı vermelisiniz. Fakat, ağ üzerinde olmasanız bile her geçen gün yeni yeni uygulama programlarının ve paketlerin ağ desteğine ihtiyacı olduğunu düşünürsek (X Window gibi) bu bölüme 'y' cevabı vermeniz şart görünüyor.
Bazı hatalı 386 DMA denetleyicileri hafızanın 16Mb'tan yüksek bölümlerine ulaşamazlar. Çok nadir görülen bu durum makinanızda varsa bu seçeneği 'y' ile geçin.
IPC (Interprocess Communication) desteği verir. Bazı Perl programları ve oyunlar (DOOM gibi) bu seçenek olmadan çalışamazlar. Bu durumda ne yaptığınızı iyi bilmiyorsanız bu seçeneğe 'y' -evet- cevabı verin.
Burada, çekirdeğinizi hangi tür makina için derliyorsanız, o makinanın tipini giriniz.
SCSI aygıtlarınız var ise bu seçenek için 'evet' deyin. Daha sonra da karşınıza gelecek SCSI aygıtlar arasından size uygun olanları alın.
Ağa bağlanmak için bir kart kullanacaksanız veya SLIP, PPP bağlantıları, ya da paralel port üzerinden yapacağınız her türlü işlemler için bu seçeneği işaretleyin. Ardından ekrana gelen kart tiplerinden uygun olanlarını seçin.
Burada, aşağıdaki dosya sistemlerinden kullanmak istediklerinizi seçebilirsiniz.
Bu bölümde yazıcı, fare ve bazı teyp yedekleme sürücüleri gibi karakter aygıtları (iletişimini karakter karakter sağlayan aygıtlar) için sürücüleri ekleyebilirsiniz.
Linux'un ses kapasitesini "duyabilmek" için bu desteği ekleyin.
Çekirdekten doğan hataların bulunmasını kolaylaştıran bu seçenek, programcılara yönelik.
Tüm bu işlemlerin ardından make config
komutunun görevi bitmiş olur.
Fazla dosyaları temizlemek, gerekli olan dosyaların da yerinde olup olmadığını kontrol etmek için , sırasıyla
# make dep # make clean
yazın. Ardından tüm nesne dosyaları ve eski sürümden arta kalan dosyalar silinecektir. Bu adımı es geçmemelisiniz.
Temizlik işleminden sonra,
# make zImage , veya # make zdisk
yazın. Eğer bir kişisel bilgisayarda çalışıyorsanız, ilk seçenekte çekirdek derlenip /usr/src/linux/arch/i386/boot
dizini altına zImage
adıyla yerleştirilecektir. Buraya yerleştirilmeden önce yerden kazanmak için çekirdek sıkıştırılır. Diğer durumda ise yeni çekirdek sabit disk yerine A:
disket sürücüsüne yazılır. Disket üzerine yazmanın bir avantajı, kararlı olmayan ve sistemi açmayan çekirdek ile karşılaşılması halinde, sistemi sabit disk üzerindeki eski çekirdekten açabilme imkanı bırakmasıdır.
LILO, bilgisayarın açılışı anında çekirdek ile ilgili düzenlemeleri
okur, buna göre hangi çekirdekten açması gerektiğini anlar.
Konfigürasyon dosyası biraz karmaşık olmasına rağmen kullanım
aşamasında büyük yararlar sağlar. /etc/lilo.conf
dosyasının
içinde gerekli olan kurulum bilgileri vardır. Bu dosyanın bir bölüm
aşağıda görülüyor.
image = /vmlinuz label = linux root = /dev/hda1 other = /dev/hda1 label = dos table = /dev/hda
image =
ibaresi kurulu olan çekirdeğe işaret eder. Çoğu kullanıcı bu
kısma vmlinuz
yazar. label =
bölümünde hangi işletim sistemi veya
çekirdek sürümünun açılışta kullanılacağı yazılır. Hemen altındaki root
bölümünde ise label =
kısmında seçilen işletim sisteminin hiyerarşik
sırada en üst dizin yapısı yazılır. Eski çekirdeğin bir yedeğini alın
ve yeni derlediğiniz çekirdeği image =
satırında belirtilen yere
kopyalayın.
# cp zImage /vmlinuz
Şimdi LILO programını çalıştırın. Komut satırında lilo
yazmak
yeterlidir. `*' karakteri, çalıştırılacak ilk çekirdeği veya sistemi gösterir.
# lilo Added linux * Added dos
LILO ve konfigürasyonu hakkında , daha fazla bilgi LILO-NASIL çevirisinden alınabilir.
Yeni bir çekirdeği derledikten sonra LILO üzerinden ekleme yapmak ve
açılış anında kullanmak için
/etc/lilo.conf
dosyasındaki
image = /vmlinuz label = Linux root = /dev/hda1
satırlarının kopyasını çıkarın, image
, label
ve root
yerine
sırasıyla yeni derlenen çekirdeğin sabit disk üzerindeki yerini, ismini
ve Linux işletim sisteminizin kök dizinini yazın. Bunlara ek olarak,
açılış anında bekleme sağlamak ve seçim yapabilmek için konfigürasyon
dosyasının başına delay = xxx
ekleyebilirsiniz. xxx sayısı, gecikme
zamanı saniyenin onda biri olarak verilir. Bu sayede açılış anında
, örneğin shift tuşuna basılarak istenen çekirdeğin ismi (label =
satırında yazılan isim) seçilir ve çalıştırılır.
Çekirdeğin her yeni sürümüyle birlikte bir önceki sürümünun yaması da gelir. Yamayı uygulamak, tüm çekirdeğin tekrar derlenmesinden daha kolaydır. Örnek olarak, elinizde 2.0.10 çekirdeği var ve ftp adresinde 2.0.11 sürümü bekliyor. Halihazırdaki çekirdeği 2.0.11 sürümüne yükseltelim:
Yamayı önce /usr/src
dizinine kopyalayın. Bu dizin altında iken
# zcat patch-2.0.11.gz | patch -p0
veya eğer sıkıştırılmış değilse
# patch -p0 < patch-2.0.11
yazın. Bu komutun ardından satırlar ekrandan kaymaya başlayacak ve
yama işlemi tamamlanacaktır. Satırlar bazen o kadar hızlı kayar ki
neler yazdığını bile göremeyebilirsiniz. Yamanın başarılı bir şekilde
tamamlandığından emin olmak amacıyla, /usr/src/linux
dizini
altında .rej
uzantılı dosyalara bakın.
# find . -name '*.rej' -print
Komut, .rej
uzantılı dosyalar bulursa yama işlemi tamamlanamamış
demektir. Eğer yama işlemi tamamlanırsa, sırasıyla
# make clean # make config # make dep
komutlarını yazın. Bu komutlarla ilgili detaylı bilgi önceki konuda anlatılmıştır.
patch
komutunun alabildiği bazı seçenekler vardır. patch -s
komutu
oluşabilecek tüm hata mesajlarını ekrana yazar. Diğer yama seçenekleri
man patch
yazarak görülebilir.
Birkaç yamanın ardından, .orig uzantılı dosyalar etrafta dolaşmaya
başlar. Bu dosyalar gereksizdir, büyük yer kapladıkları için silinmeleri
gerekir. Aşağıdaki komut yardımıyla /usr/src/linux
dizini altında
.orig
uzantılı dosyaları silebilirsiniz.
# find /usr/src/linux -name '*.orig' -exec rm -f {} ';'
Eger rutin bir çekirdek güncellemesinden sonra yeni çekirdeğiniz gerçekten garip şeyler yapıyorsa, büyük ihtimalle yeni çekirdeğinizi derlemeden önce "make clean" komutunu kullanmayı unutmuşsunuzdur.
Eğer çekirdek çok fazla hafıza harcıyorsa, çok büyükse, veya yeni 786DX6/440 makinanızda bile derlenmesi sonsuza kadar sürüyorsa, büyük ihtimalle ayarlanmış bir çok gereksiz parça (aygıt sürücüleri, dosya sistemleri, vb.) vardır. Büyük çekirdeklerin en belirgin özelliği sürekli hafızadan diske ve diskten hafızaya takas yapmalarıdır.
Çekirdeğinizin ne kadar hafıza kullandığını makinanın toplam
hafızasından /proc/meminfo
dosyasındaki total mem
değerini çıkararak veya free
komutunun çıktısından
öğrenebilirsiniz. Ayrıca dmesg
komutunu kullanarak (veya çekirdek
kayıt dosyasına bakarak) da bu değere ulaşabilirsiniz.
Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data)
LILO'yu çalışıtırmayı unuttunuz, veya sistem hiç açılmıyorsa bu durumda yapacağınız en iyi şey disketten açılış yapmak ve daha sonra açılış yapabilen başka bir disket hazırlamaktır.
Eğer eski çekirdek 1.2.X ve daha düşükse ve bunu 2.0.x sürümüne
yükseltmek istiyorsanız, 2.0.x çekirdek kurulumunda getirilen bazı
değişiklikler sorun çıkartabilir.
/usr/src/linux/Documentation/Changes
dosyasında yapmanız gereken
değişklik listesi vardır. gcc
, libc
gibi birkaç paketi yeniden
kurmanız gerekebilir.
Aynı anda birkaç çekirdek kaynak kodunu sistemde bulundurmayı
düşünüyorsanız, izlenecek en güvenilir yol, her birine
/usr/src/linux-x.y.z
ismini vermektir (x.y.z
halihazırdaki çekirdek sürümünü gösterir). Ardından sembolik bir
bağlantı yardımıyla istediğiniz kaynak dizinini seçebilirsiniz, örneğin
# ln -sf linux-2.0.2 /usr/src/linux
komutu, linux-2.0.2
dizinini aktif hale getirir. Artık kaynak dosyalarının
bulunduğu yer linux-2.0.2
dizinidir.
Linux işletim sistemi çekirdeğinin boyu genellikle 400-600Kb arasındadır. Hantal çekirdeklerde bu sayı 800Kb'lara kadar çıkabilir. Çekirdeğin boyunun büyümesi, sistemin performansını olumsuz yönde etkiler. Özellikle bilgisiz kullanıcıların gerekli gereksiz tüm desteği çekirdeğe yüklemesi sıkça görülür. Bunun önüne geçmek de deneyim ister.
Linux'a özgü özelliklerden birisi modüllerdir (yüklenebilir çekirdek parçaları). Modüller sayesinde nadiren gerekli duyulan bir çekirdek parçası sadece gerektiği zaman çekirdeğe eklenir. Örneğin Java programlarını her zaman çalıştırmak istemiyorsanız, bu desteği modül olarak derleyip bir kenara koyarsınız. Ne zaman bir Java programı çalıştırılacaksa bu modül hafızaya yüklenecektir.
Bir modül, çekirdeğin derleme aşamasında `M' parametresiyle tanımlanır. Her desteğin modülü henüz geliştirilmemiş olmasına rağmen bu sayı gün geçtikçe artmaktadır. İlginizi çekebilecek modüller arasında disket desteği, yazıcı desteği, minix dosya sistemi desteği veya SCSI aygıt sürücü desteği sayılabilir.
Bir modülü derledikten sonra modüle ait dosya /lib/modules
dizini altında yeralır. Burada istenilen bir modül
# insmod modul-ismi
komutuyla çekirdeğe eklenir. Modülü hafızadan çıkarmak için
# rmmod modul-ismi
yazın. Hafızadaki modüllerin bir listesini görebilmek için de lsmod komutu kullanılabilir.
kerneld
komutu, arkaplanda çalışarak gerekli olan modülleri anında
yükler. Bu sayede çekirdeğe eklemek için insmod
komutuna gerek
kalmaz. Ayrıca belirli bir süre içinde kullanılmayan modülleri de
çekirdekten atar.
Linux işletim sistemi, benzerlerine nazaran çok büyük bir hızla genişliyor. Her an yeni bir program, yeni bir yazılım piyasaya çıkıyor ve bunları takip etmek de gittikçe zorlaşıyor. Bir ftp adresini kontrol ettikten iki gün sonra tekrar bakıyorsunuz ki üç-beş yeni yazılım gelivermiş.
Tabi ki her an her programı makinanıza indirip açmak zorunda değilsiniz. Buna ne zamanınız, ne de sabit diskiniz yeter (Linux'un sunsite arşivi 20GB'tan fazla yer kaplıyor!). Öyleyse tespih çeker gibi program indirmek veya varolan yazılımları güncellemek komik olur. Sadece gereken zamanda gereken dosyaları makinanıza kurmalı veya güncellemelisiniz.
Bu işlem çekirdek için de geçerlidir. Bazı çekirdek fanatikleri çekirdeği çıktığı anda makinalarına indirir ve derlerler. Linux'a çok önemli bir fonksiyon kazandırmayacaksa her an çekirdek derlemek hem zaman kaybı olur, hem de derleme esnasında sistemi yavaşlatarak diğer kullanıcıları kızdırır.
Kurmak istediğiniz ve ftp adresinden bulup getirilen dosya çok büyük
ihtimalle tar
ve gzip
ile arşivlenip sıkıştırılmıştır. Bu dosyanın sonu genellikle tar.gz
, tgz
veya tar.Z
ile biter. Dosya kaynak koduyla veya çalıştırılabilir program olarak dağıtılıyor olabilir . Her iki durumda da yapılacak işlemler birbirine benzer.
Öncelikle yazılımın açıldığı zaman hangi dizine kendini yerleştireceğine
bakmak gerekir. Bunu tar komutunun -t
seçeneği ile kontrol edin.
compress ve gzip ile sıkıştırılmış dosyalar için,
# tar -ztvf dosya.tar.gz
komutu kullanılabilir. Çok nadir durumlarda dosya, kendine ait bir dizin yaratmaz, onlarca programı ve konfigürasyon dosyasını bulunduğunuz dizine yazar. Karmaşıklık yaratan bu durumdan ancak arşivi ayrı bir dizin altında açmakla kurtulabilirsiniz.
Linux'çular yeni bir yazılımı denemek istediklerinde arşivi genellikle
/usr/src
veya /usr/local/src
dizini altına
kopyalarlar ve burada açarak biraz sonra anlatılacak konfigürasyon
işlemini uygularlar. Derleme gerektirmeyen bazı programların ise
doğrudan kök dizinde açılmaları gerekebilir. Bu programlar açıldıkları
anda çalışmaya hazırdırlar.
/usr/src
veya /usr/local/src
dizini altına dosyayı
açtıktan sonra bol miktarda dosya ve dizinle karşılaşabilirsiniz. Buna
en iyi örnek Linux çekirdeğidir. Burada yeralan bazı anahtar dosyalar
yazılımın kurulması için hayati önem arzeder.
Öncelikle README
, README.linux
ve varsa INSTALL
dosyalarının gözden geçirilmesi gerekir. Bunlar sırayla bir kullanıcı
olarak dosyaları nasıl kuracağınızı ayrıntılarıyla söyler. Kurma
aşamasında dikkat edilecek dosyalardan ilki Makefile
veya
makefile
dosyasıdır. Bu dosyanın içinde (nadiren) küçük birkaç
değişiklik yapmak gerekebilir. Diğer kontol edilmesi gereken dosya ise
varsa config.h
dosyasıdır. Bunu da sistem gereksinimize göre
değiştirmelisiniz.
Bazen başta derleyici olmak üzere sistemdeki yazılımı baştan aşağı kontrol
eden programlar olabilir (configure
gibi). Bunların da komut satırından
çalıştırılmaları gerekir.
Varsa Makefile
dosyasına göre yazılımı kurmak için make
komutunu
kullanın. make komutu kuruluma make all
, make install
gibi bazı
parametreler alabilir. make all
, halihazırda yeralan tüm yazılımları
kurarken make install
, bu yazılımı konfigürasyon dosyalarının gösterdiği
dizinlere yerleştirirler.
Çoğu büyük paketler, man dosyalarıyla birlikte gelirler. Bunları da diğer
man dosyalarının yanına (/usr/man
) koymak için ayrı bir
make install.man
türü komut kullanmak gerekebilir.
Her durumda, mutlaka README
dosyasını okuyun. Biraz sıkıcı gelse
de sizi zaman kaybından kurtaracaktır.
Slackware dağıtımını kullanıyorsanız, yüklenmiş yazılımları silmek için 2
yolunuz var. Birincisi, root olarak sisteme girip, istemediğiniz
programları tek tek komut satırından silebilirsiniz. Ama bu size
önerebileceğimiz bir yol değil ve çok fazla sakıncası var. Örneğin,
programı silip, ona olan bağlantıları unutabilirsiniz. Ya da tam tersi
olabilir. İkinci yol ve en geçerlisi, Slackware dağıtımı ile gelen
pkgtool programı kullanmanız. pkgtool
seçenekleri arasındaki
remove package işinize yarayacaktır.
Linux makinası açılırken onlarca dosyayı okur. Birkaç dakika içinde çekirdeği hafızaya yükler, belirli dizinlerin altındaki programları arkaplanda çalıştırır. Sistem uyanırken hatırı sayılır nicelikte konfigürasyon dosyası elden geçer. Açık bir işletim sistemini diğerlerinden ayıran bir özellik de kullanıcının büyük bir kolaylıkla bu konfigürasyon dosyalarını değiştirebilmesidir. Sistem açılış dosyalarında , özellikle ağ temelli dosyalarda değişiklik yapabilmek için TCP/IP konusunda basit temelleri anlayabilmiş olmanız gerekir.
Açılış dosyalarında, tek bir kullanıcı için veya sistemde hesabı olan herkese yönelik olarak değişiklik yapmak mümkündür. Pek çok kullanıcı bu açılış dosyalarıyla oynayarak Linux'u daha yakından öğrenme imkanına sahip olur.
İnternet servisi veren bir makina bu servisini daemon'lar aracılığıyla yapar. Bir daemon, her makina tarafından bilinen bir port numarasını açar ve dinlemeye koyulur. Eğer sorumlu olduğu port adresine istek gelirse bu isteğe cevap vererek servise başlar.
Bash kabuğunun anlatıldığı konu içinde sisteme girerken okunan dosyaları anlatmıştım. Sistemde yeralan önemli dizinler de dosya sistemi yapısı konusunda detaylı olarak belirtilmişti. Bu bölümde daemonlardan kısaca bahsedip açılış anında çalıştırılan programlara ve bunların konfigürasyon dosyalarına kısa bir giriş yapılacaktır.
/etc/inetd.conf
inetd, en ağır görevleri üstlenen ve en önemli İnternet servislerindendir. Bu program sistem açılırken arkaplanda çalışmaya bırakılır. inetd'nin görevi belirli portları dinleyerek bu portlara yapılan bağlantıları denetlemektir. Bir bağlantı yapıldığı anda inetd bu portla ilgilenecek olan programı çalıştırır. Örnek olarak Linux'a ftp isteği geldiği anda inetd, ftp isteğine cevap verecek olan wu.ftpd programını uyandırır ve geri kalanını bu programa bırakır.
inetd olmasaydı her standart port numarası için bu portu dinleyecek olan
bir program arkaplanda çalışıyor olacaktı. Bu da sisteme normalden daha
fazla yükün binmesi demektir. inetd'nin kullandığı konfigürasyon dosyası
/etc/inetd.conf
'tur. Bu dosyadan bir bölüm aşağıda yeralmaktadır :
# "kill -HUP <pid of inetd>". # The inetd will re-read this file whenever it gets that signal. # # <service_name> <sock_type> <proto> <flags> <user> <server_path> <args> # time stream tcp nowait root internal time dgram udp wait root internal ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd #nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd shell stream tcp nowait root /usr/sbin/tcpd in.rshd -L login stream tcp nowait root /usr/sbin/tcpd in.rlogind ntalk dgram udp wait root /usr/sbin/tcpd in.talkd pop3 stream tcp nowait root /usr/sbin/tcpd in.pop3d imap2 stream tcp nowait root /usr/sbin/tcpd imapd finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd -w systat stream tcp nowait nobody /usr/sbin/tcpd /bin/ps -auwwx netstat stream tcp nowait root /usr/sbin/tcpd /bin/netstat -a # End of inetd.conf.
/etc
altında bir konfigürasyon dosyasını değiştirmek isterseniz, o dosyayı okuyan ve arkaplanda çalışıyor durumda bulunan süreçleri bundan haberdar etmelisiniz. Çünkü bu dizindeki bazı dosyalar sadece açılışta okunur. inetd, yukarıdaki inetd.conf
dosyasını sistem açılırken okuyacaktır. Değişiklik yaptıktan sonra inetd'nin bu değişiklikten tekrar haberinin olması için bu sürecin PID
numarasını ps -aux
komutu ile bir kenara not edin ve şunları yazın.
# kill -HUP <PID-inetd>
PID-inetd yerine not ettiğiniz süreç numarasını girmelisiniz. Bu sayede inetd kendisine ait olan inetd.conf dosyasını tekrar okuyacak ve değişiklikler işleme konacaktır.
Her bilgisayar tarafından bilinen servislerin isimleri ve hangi portları (portları) kullandıkları /etc/services
dosyasında tutulur.
syslogd programı Linux'taki çeşitli olayların kayıtlarını tutar. Bunlar genellikle hata mesajları veya çekirdek mesajları gibi kayıtlardır. syslogd sistem açılırken arkaplanda işlemeye bırakılır.
/etc/syslog.conf
, syslogd programının konfigürasyonu için
kullanılır. Normal olarak sistem kayıtları /usr/adm/messages
dosyasının sonuna eklenir. Bu dosyanın yapısı biraz karışık olmasına
rağmen eğer sistem yöneticiyseniz syslogd sizin en büyük yardımcınız
olabilir.
Örnek bir syslog.conf
dosyası aşağıda yeralıyor.
*.info;*.notice /usr/adm/messages *.debug /usr/adm/debug *.warn /usr/adm/syslog *.emerg;*.alert;*.crit /dev/tty8 mail.* /dev/tty9 kern.* /dev/tty10
Bu dosyanın en solunda yeralan ve nokta ile ayrılmış olan iki kelimeden ilki, kaydı yapılan program grubudur. Bu kısma kern (çekirdek mesajları), mail (sendmail mesajları), login (sisteme giriş veya sistemden çıkış mesajları), auth, authpriv veya security (güvenlik mesajları), cron (cron mesajları), daemon (deamon'lardan gelen mesajlar),lpr (yazıcı mesajları), news (haber grubu mesajları), user (kullanıcı mesajları) veya uucp (uucp mesajları) yazılabilir. Noktanın sağındaki kelime ise kaydı yapılan program grubunun mesaj önem sırasını belirler. Bu kısımda önem sırasına göre debug, info, notice, warning, err, crit, alert ve emerg bulunur.
Dosyanın sağında yeralan kısımda ise bu mesajların hangi dosyaya yazılacağı vardır. Yukarıda verilen örnekte, syslogd'den gelen mesajlar sanal konsollardan kullanılmayanlara yönlendirilmiştir. Böylece sistem yöneticisi F8, F9 ve F10 tuşlarını kullanarak sistem kayıtlarına anında ulaşabilir.
Başka bir makinaya kayıt tutturmak da mümkündür. Uzak makinanın ismi syslog.conf
dosyasının sağ bölümüne yazılır. Böylece diğer makina yerel olarak sistem kayıtlarını tutacaktır.
mail.err @ordek.cclub.metu.edu.tr
Bazı kritik ve sistemin düzgün çalışmadığını haber verebilecek mesajların konsola yönlendirilmesinde fayda vardır.
kern.crit /dev/console
Sisteme bağlanmış olan kullanıcılar hakkında bilgiyi ise
/var/adm/wtmp
dosyası tutar. Bu dosya ASCII olmadığından doğrudan okunamaz, last
komutu
ile içeriği incelenebilir. Buna ek olarak çeşitli paketler
çalıştırılıyorsa onların yarattığı kayıt dosyaları da incelenmelidir.
Örneğin ftp çalışıyorsa /var/adm/xferlog
kimin ftp ile hangi dosyaları
aktardığını gösterir. Bu tür dosyalar içerisinde elde edilebilecek
ipuçları ile sistemin çalışma performansı artırılabilir, kendisini pek
belli etmeyen hatalar bulunabilir.
/etc/inittab
init
, sistemde ilk çalışan programdır. Neredeyse sistemin tüm
açılış yükünü elinde tutar. init sayesinde açılış anında hangi
programların çalışacağı belirlenir. Bu programları da
/etc/inittab
dosyasından öğrenir.
Burada /etc/inittab
dosyasından alınan birkaç örnek satır
yeralıyor. Her satırın sonunda çalıştırılacak olan dosyalar var.
# Default runlevel. id:3:initdefault: # System initialization (runs when system boots). si:S:sysinit:/etc/rc.d/rc.S # Script to run when going single user (runlevel 1). su:1S:wait:/etc/rc.d/rc.K # Script to run when going multi user. rc:23456:wait:/etc/rc.d/rc.M # What to do at the "Three Finger Salute". ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now # Runlevel 0 halts the system. l0:0:wait:/etc/rc.d/rc.0 # Runlevel 6 reboots the system. l6:6:wait:/etc/rc.d/rc.6 # What to do when power fails (shutdown to single user). pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING" # If power is back before shutdown, cancel the running shutdown. pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK" # If power comes back in single user mode, return to multi user mode. ps:S:powerokwait:/sbin/init 5 c1:1235:respawn:/sbin/agetty 38400 tty1 linux c2:1235:respawn:/sbin/agetty 38400 tty2 linux c3:1235:respawn:/sbin/agetty 38400 tty3 linux c4:1235:respawn:/sbin/agetty 38400 tty4 linux c5:1235:respawn:/sbin/agetty 38400 tty5 linux c6:12345:respawn:/sbin/agetty 38400 tty6 linux # Serial lines #s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100 #s2:12345:respawn:/sbin/agetty 19200 ttyS1 vt100 # Dialup lines #d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100 #d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100 x1:4:wait:/etc/rc.d/rc.4
Bir Linux makinasının birkaç tane çalışma düzeni vardır. Bunlardan
birkaçı 3 (çok kullanıcılı konum), 1 (tek kullanıcılı konum) ve 4 (X Window
konumu)'tür. Her konum, bir sayı veya bu sayılara karşılık gelen tek harften
oluşur. Bir konum altında çalışırken diğerine geçebilmek için init
veya
telinit
komutu kullanılır.
/etc/inittab
'da yeralan dosya isimleri değiştirilebilir
veya kullanıcının isteği doğrultusunda her çalışma modu için farklı
dosyalar çalıştırilabilir.
# init 1 Switching to runlevel 1 Sending all processes the TERM signal Waiting for processes to terminate........ Turning off quota.. Single user mode.
init
komutundan sonra açmak istediğiniz çalışma düzenine ait olan sayıyı yazabilirsiniz. Örneğin init 0 komutu sistemi kapatacaktır. Yukarıdaki komut çalıştıktan sonra /etc/inittab
dosyasında bu konuma ait olan /etc/rc.d/rc.K
dosyası çalıştırılır. Bu dosya çalıştıktan sonra dışarıdan yapılan bağlantılara izin verilmez.
/etc/inittab
dosyasında yapılacak her değişikliğin ardından
# init q
komutunu vererek init programının inittab dosyasını tekrar okuyup değişikliklerden haberdar olmmasını sağlamalısınız. O an sistemin hangi konumda çalıştığını bulabilmek için runlevel komutunu kullanın :
$ runlevel N 3
Sistem, yukarıdaki bilgilere göre 3 numaralı konumda (çok kullanıcılı konum) çalışıyor.
İşte sistemin kalbinin attığı yer. Ne yaparsanız yapın ama bu dosyaları gözünüz gibi koruyun. Sistem açılırken arkaplanda çalışmaya başlayan programlar burada yazılıdır. Tüm bu dosyalar Slackware dağıtımına özgüdür.
Bu dosya, 0 (halt) çalışma düzenine geçerken okunur. Sistemin shutdown veya halt komutları ile kapatılmak istenirse bu program çalıştırılır. Önce sistemdeki tüm süreçler öldürülür, ardından sistemin kapandığını belirten bazı satırları kayıt dosyalarına atar. Tüm dosya sistemlerini umount işleminden geçirdikten sonra da sistemi dondurur.
Bu dosya, init tarafından 1 numaralı çalışma düzenine (tek kullanıcılı konum) geçilirken çalıştırılır. Tüm süreçler öldürülür ve sistem sadece konsoldan giriş yapılacak şekilde tekrar açılır.
Bu dosya, bulduğu CDROM sürücüsünü /cdrom dizini altına mount yardımıyla ekler.
Çok kullanıcılı açılış anında çalıştırılan bu dosyaya istediğiniz programları ekleyebilirsiniz.
4 numaralı çalışma düzenine geçilirken bu dosya çağırılır. Tüm sanal konsollara vt100 terminalleri yerine grafik tabanlı bir program kullanılarak girilir.
init tarafından çok kullanıcılı konuma geçmek için kullanılır.
Sistem açılırken bu dosya mutlaka çalıştırılır. Takas alanı açılır, dosya sisteminde hata olması halinde bunu gidermeye çalışır. Bazı kontrollerden sonra kontrolü diğer rc programlarına bırakır.
Çekirdek, hafızaya yüklenip çalıştırıldıktan sonra kendisi ve sistemdeki donanım hakkındaki her türlü bilgiyi ekrana yazar. Her türlü bilginin içine hata mesajları da girer. Çekirdeğin hata verip vermemesi açılış anında ekrana bakmakla anlaşılabilir. Bu nedenle sistem açılırken gözünüzü monitörden ayırmamalısınız. Aşağıda bir çekirdeğin açılış kaydı yeralıyor :
Console: colour EGA+ 80x25, 1 virtual console (max 63) bios32_init : BIOS32 Service Directory structure at 0x000faf10 bios32_init : BIOS32 Service Directory entry at 0xfb390 pcibios_init : PCI BIOS revision 2.10 entry at 0xfb3c0 Calibrating delay loop.. ok - 30.22 BogoMips Serial driver version 4.11 with no serial options enabled tty00 at 0x03f8 (irq = 4) is a 16550A tty01 at 0x02f8 (irq = 3) is a 16550A lp1 at 0x0378, using polling driver ftape: allocated 3 buffers aligned at: 00210000 hda: QUANTUM ELS170A, 162MB w/32KB Cache, CHS=1011/15/22, MaxMult=8 ide0: primary interface on irq 14 Floppy drive(s): fd0 is 1.44M FDC 0 is a post-1991 82077 lance.c: PCI bios is present, checking for devices... Memory: 6612k/8192k available (760k kernel code, 384k reserved, 436k data) This processor honours the WP bit even when in supervisor mode. Good. Swansea University Computer Society NET3.019 Swansea University Computer Society TCP/IP for NET3.019 IP Protocols: ICMP, UDP, TCP PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS TCP compression code copyright 1989 Regents of the University of California PPP line discipline registered. SLIP: version 0.8.3-NET3.019-NEWTTY (4 channels) (6 bit encapsulation enabled) CSLIP: code copyright 1989 Regents of the University of California eth0: D-Link DE-600 pocket adapter: at I/O 0x378. Checking 386/387 coupling... Ok, fpu using exception 16 error reporting. Checking 'hlt' instruction... Ok. Linux version 1.2.13 (root@bigkitty) (gcc version 2.7.0) #1 Wed Aug 23 01:06:43 CDT 1995 Partition check: hda: multiple mode turned off hda: hda1 hda2 VFS: Mounted root (ext2 filesystem) readonly. Adding Swap: 8188k swap-space
Yukarıdaki mesajda swap alanı belirlenmesi, sabit diskin tanınması,
disketin tanınması, aygıt sürücülerinin, ethernet kartını tanıması ve
ekranın özelliklerinin yazılması gibi bilgiler vardır. Bu bilgilere
sistem açıldıktan sonra /var/adm/messages
dosyasıından da
erişilebilir.
Bu bölümde Linux'un kullandığı dosya sistemi hakkında bilgi verilecektir. Dosya sistemini oluşturan dizinler, kapsadıkları dosyalar ve bunların Linux işletim sistemindeki görevleri de kısaca belirtilecektir.
Bir işletim sisteminin dosya sisteminin performansı, hızı ve buna benzer çeşitli özellikleri sistemin verimli ve kararlı çalışması üzerinde doğrudan etkisi vardır. Linux dizin yapısının geliştirilmesinde FSSTND (file system standard) grubunun çalışmalarının payı çok büyük oldu. Programcılardan oluşan grup, standartların belirlenmesinde ve uygulama aşamasında Linux ile ilgilenenlere yardım etti. 1993 yılında Olaf Kirsh, Linux haber grubuna yazdığı bir e-postasında Linux dosya sistemi üzerindeki çalışmaların tamamlandığını haber verdi.
Linux dizin yapısında bazı dizinlerin işlevi birbiriyle aynıdır. Bu durum,
özellikle birbirini takip eden iki Linux sürümünde belirginleşir. Örnek
olarak bir dağıtımda /usr/bin
dizini altında yeralan dosya,
diğer sürümde /bin
altına yerleştirilebiyor.
Dosya sistemleri ve dizinler paylaşımlı olarak da kullanılabilir.
Birden fazla kişisel bilgisayarın bağlandığı ağda, disk alanından yer
kazanmak için bir makina sunucu (ana makina) olarak tayin edilir. Ağ
üzerindeki diğer makinalar da sunucu üzerindeki diski paylaşır. Buna
örnek olarak kullanıcı ev dizinlerinin yeraldığı /home
,
çalıştırılabilir dosyaların bulunduğu /usr
, e-posta ve haber
grubu bilgilerinin bulunduğu /var/spool/mail
ve
/var/spool/news
dizinleri verilebilir.
Kök dizini, kendisine bağlı diğer tüm dizinleri de içerdiğinden, Linux
dosya sisteminde önemli bir yere sahiptir. Linux açılırken önce kök
dizini /etc/fstab
dosyasına uygun şekilde bağlanır. Diğer dosya
sistemlerinin onarımı ve kontrolü için gerekli olan fsck
programları, bu
dizinde bulunmalıdır. Benzer şekilde yedekleme için gerekli olan tar, zip,
compress
gibi arşiv programlarına da kök dizin altından erişilebilmeli,
açılış esnasında hafızaya yüklenen çekirdek de kök dizininde yeralmalıdır.
Bir programı yerine koymadan önce bazı "dengelerin" gözönünde tutulmasında yarar vardır. Programlanan her yazılımı kök dizinine koyarsanız, bir süre sonra bu dosya sisteminin şiştiğini görürsünüz. Kök dizinini başlangıçta küçük (20-30Mb kadar) tutmak, geliştirilen programları daha önceden belirlenen başka bir dosya sistemi altına koymak akıllıca olur. Bu yol, ağ üzerinden genellikle paylaşımı mümkün olmayan kök dizininin her makinadaki sabit diskte mümkün olan en az yer işgal etmesini sağlar.
Sistemdeki önemli dizinlere göz atarsak,
Sistemin açılışı ve kontrolü için gerekli komutlar. Hem kullanıcıların, hem de sistem görevlisinin kullanabileceği dosyalar (kök dizinde ise fazla şişmemesi koşuluyla) buraya atılabilir. Sadece root kullanıcının ihtiyaç duyacağı init, getty, updatedb gibi programlar /sbin veya /usr/sbin'de durabilir. Bu dizinde bulunan dosyalara örnek olarak cat, chgrp, chown, date, dd, df, ln, mkdir, mount, ps, rm, sh, su, sync ve umount verilebilir.
G/Ç dosyaları. Linux çekirdeğinde desteklenen her aygıta ait dosya /dev dizini altında bulunur. Kurulum anında bu dosyalar yerine yerleştirilir, bu dosyaların silinmesi durumunda /dev/MAKEDEV ile tekrar yaratılabilirler.
Sistem konfigürasyon dosyaları. Bu dizinde çalıştırılabilir dosyalar bulunmamalıdır.
Kullanıcılara ayrılmış dizin. Başka şekilde ayarlanmamış ise, açılan her hesaba ait kullanıcı, burayı kullanır. Büyük sistemlerde, bu kısım alt parçalara ayrılabilir (/home/ftpadm , /home/ogrenci gibi)
Kütüphane dosyaları.
Geçici mount edilen dosya sistemleri. Sadece bu iş için kullanıldığından sistem görevlisine zaman kazandırır.
Süreç kontrollerini ve diğer sistem bilgilerini tutan dosya sistemi. Bu dosya sistemi aslında disk üzerinde yer kaplamaz, tüm dosyalar çekirdeğin bir uzantısı sayılabilir.
Sistem görevlisinin ev dizini. Mümkünse bu dizini sistemdeki diğer kullanıcıların görmeyeceği şekilde ayarlayın.
Hayati sistem komutları. Bir zamanlar bu dosyalar /etc dizini altında yeralıyorlardı. Sadece sistem görevlisinin ihtiyacı olan komutlar, /sbin veya /usr/sbin içinde bulunur.
Geçici dosyaların koyulduğu dizin. Belirli zaman aralıklarında temizlenmelidir.
Diğer önemli sistem dosyalarını tutar. Bu bölüm genelde en kalabalık dizindir, zira yeni kurulan tüm programlar buraya konulur.
Eğer sistem yöneticisi iseniz düzenli olarak dosya ve dizin yapısını
kontrol etmelisiniz. Örneğinn /tmp
dizini normal kullanıcıların
kullanımına açık olduğu için çok kısa bir sürede dolabilir. Burayı
periyodik olarak silmek için find komutu işe yarayabilir :
# find /tmp -atime +7 -exec rm -rf {} \;
Yukarıdaki komut, tmp
dizini altında yeralan tüm dosyaları kontrol
edecek ve 7 günden daha eski dosyaları silecektir. Benzer şekilde,
kullanıcıların dosyalarının yer aldığı /home
dizini de çok kısa bir
sürede dolmaya mahkumdur. Sistemde ne kadar büyük sabit disk olursa
olsun bir gün gelecek burası dolacaktır. Periyodik olarak buraya da
göz gezdirmek gerekir. Aşağıda yeralan kısa program, /home
dizininde
yeralan kullanıcı dizinlerideki disk kullanımını büyükten küçüğe doğru
disk
isimli dosyaya yollayacaktır. Bu dosyanın incelenmesiyle hangi
kullanıcıları "cezalandıracağınızı" görebilirsiniz :)
# du -skx /home/* | sort -rn > disk
du
(disk usage), sistem kullanıcılarının sıkça başvurduğu bir
komuttur. Kullanılabilecek parametreler için du(1) man sayfasına bakın.
UNIX, (ve dolayısıyla Linux) iki tip aygıt tanır. Bunlardan ilki karakter
aygıtları, başka bir deyişle veri alışverişini bayt bazında yapan
cihazlar, diğeri de blok aygıtları, yani veri alışverişini blok cinsinden
yapan cihazlardır. Karakter aygıtlarına örnek olarak seri bağlanan
cihazlar ve teypler, disk aygıtlarına örnek olarak da diskler verilebilir.
Bu cihazlardan bir bilgi yazılıp okunduğunda dosya sistemi altında bunları
tanımlayan dosyalar (/dev/*
) kullanılmış olur. Örnek olarak bir yazıcıya bilgi göndermek için,
$ cat dosya > /dev/lp1
komutunu kullanabilirsiniz. Dosya, yazıcının anlayabileceği bir yapıda olmalıdır (örneğin düz metin).
Her aygıt, bir dosya olarak dosya sisteminde kendine yer bulduğuna göre hangi aygıt dosyalarının bulunduğunu görmek mümkün olabilir.
$ ls -l /dev/cua0 crw-rw-rw- 1 root uucp 5, 64 Nov 30 1993 /dev/cua0
İlk kolondaki ilk karakter (c), bu dosyanın bir karakter aygıtına ait olduğunu belirtiyor. Normal dosyalar için buradaki karakter '-' olmalıydı. Benzer şekilde blok aygıtlar için ise 'b' kullanılr.
Aygıt sürücü desteği çekirdekte olmasa bile /dev
dizini altında genellikle tüm aygıt dosyaları bulunur. Bu demektir ki /dev/sda
dosyasına sahip olduğunuz halde bir SCSI sabit diski sistemde takılı olmayabilir. Tüm aygıt sürücülerinin bulunması, programların kurulumunu ve yeni donanımın eklenmesini kolaylaştırır.
Linux sanal terminallerinde bir tuşa basıldığı zaman bilgisayarın ekranda herhangi bir dildeki alfabeye ait harfi göstermesi kolayca sağlanabilir. Bunun yanında 12 fonksiyon tuşunun herbirine belirli bir dizisel değer atanabilir ve bu sayede bu tuşlara basıldığında bir komutun veya programın çalışması mümkün olur.
Aslında bunları yapabilmek için önümüzdeki iki temel sorunu aşmamız gerekiyor. Birincisi standart olmayan karakterlerin (örneğin Türkçe) ekranda görüntülenebilmesi, ikincisi de bilgisayara standart dışı bir klavye olduğunun belirtilmesidir.
Dünya üzerindeki belli başlı dillerin hepsi yıllar önce bir standart geliştirilmesi amacıyla sınıflandırıldı. Avrupa'da Slav dilleri hariç hemen tüm dillerin karakterleri ISO (Uluslararası Standartlar Organizasyonu) tarafından tek bir sınıfa yerleştirildi ve buna ISO8859-1 (latin 1) dendi. O vakit izlenen yanlış politikalar nedeniyle Türkçe bu sınıfa dahil edilmedi ve sadece Türkçe için ISO8859-9 (latin 5) isminde ayrı bir sınıf açıldı.
Türkçe yazabilme sorununu hemen her işletim sisteminde hissediyor olmalısınız. Linux altında Türkçe desteğini sağlamak için birkaç işlem yapılmalıdır. Bu işlemlerin başında Linux'a Türkçe destekli klavye ve font tanıtmak geliyor.
/usr/lib/kbd/keytables
dizini altında yeralan dosyalar, çeşitli ülke
dillerine ait klavye dağılımını içeriyor. Buradaki bilgileri kullanarak
klavye üzerinde yeralan tuşlara basılması halinde yazılı tuş dışında
bir karakterin ekranda gösterimi sağlanabilir.
Sistem açıldığı zaman -eğer kurulum aşamasında bir font beğenip
sürekli onu kullanmıyorsanız- defkeymap.map
dosyasında yeralan klavye
dağılımını kullanacaktır. Farklı bir klavye düzeni kullanmak için .map
dosyalarını yüzeysel olarak anlamanız gerekiyor. /usr/lib/kbd/keytables
dizini altındaki herhangi bir dosyada 300'den fazla satır ve üç ana
tanımlamayla karşılaşacaksınız. Birinci grup, "keycode", "alt", "control"
gibi bir satırla, ikinci grup "string" ile, üçüncü grup ise "compose"
kelimesiyle başlar.
Dosyanın yapısını daha iyi kavrayabilmek için üzerinde bir örnekle
açıklamaya çalışalım. Control-Alt-Del tuşlarına basılınca bilgisayar
kendini "reset"ler. Eğer yanlışlıkla bu üç tuşa basmışsanız, klavyeden
girilecek bir shutdown -c
komutunu yazmak ve sistemi kapanmaktan
kurtarmak için sadece 3-4 saniyeniz vardır. Fakat shutdown -c
komutunu
bir fonksiyon tuşuna bağlar ve bu tuşa basarsanız sistem eski haline
dönecektir. Örnek olarak Control-F1 tuşunu bu işe ayıralım.
Öncelikle /usr/lib/kbd/keytables
dosyasında yeralan defkeymap.map
dosyasındaki F1 fonksiyon tuşunun hangi tuş tanımına denk geldiğini
bulmalıyız. Dosyadaki F1 ile ilgili satırlar şunlardır :
keycode 59 = F1 F13 Console_13 control keycode 59 = F25 shift control keycode 59 = F37 alt keycode 59 = Console_1 control alt keycode 59 = Console_1
Linux, her satıra bir numara atar. Yukarıdaki satırda, F1 tuşunun numarasının 59 olduğu kolayca görülüyor. 59 numaralı tuşa basılınca, F1 ile tanımlanan dizi ekrana yazılacaktır. Benzer şekilde F1'e control ile birlikte basılması halinde ise F25 dizisini ekrana basar. Önceden tanımlanan değerlerden Console_1, 1 numaralı sanal konsolun ekranda gösterilmesini işaret eder. Tüm bu dizilerin içeriğini görebiliriz. Aynı dosyanın sonlarında şu satır yeralıyor :
string F1 = "\033[[A"
Bunun anlamı, F1'e basınca ESC[[A
dizisini ekrana gönder demektir.
sayısı, Escape tuşunun oktal (sekizli) sistemde gösterimidir.
Bu satırı veya F1'den itibaren seçeceğimiz bir fonksiyon tuşu ismini istediğimiz şekilde değiştirebiliriz. Yanlız dikkat etmemiz gereken bir husus, bu tuşun başka uygulamalar tarafından kullanılabiliyor olmasıdır. Örnek olarak F61 ve karşılık gelen dizi değeri dosyada yeralmıyor. Dosyaya küçük bir ekleme yapalım:
string F61 = "shutdown -c\n"
Dosyayı farklı bir isimde (örneğin bas.map
) kaydedip çıkın. Yeni klavye dağılımını denemek için
# loadkeys bas.map
komutunu kullanın. Artık yeni klavye standardı sisteme
yerleşmiştir. Sistemin çalıştığına emin olmak için Shift-Control-F1
tuşuna basın. shutdown -c
komutu işletilmelidir.
Artık Türkçe yazabilmeye geldik. Bunun için standart dışı klavyeden gelen bir Türkçe karakteri ekranda gösterebilmek amacıyla bir font dosyası oluşturmamız gerekecek. Linux altında bu dosyalar /usr/lib/kbd/consolefonts
dizini altında yeralıyor.
Linux'ta standart dışı bir font yüklemek için setfont
komutu
kullanılır. Türkçe fontları,
Linux Kullanıcıları Grubu ftp arşivinden temin edebilir veya iso09 ön adlı herhangi bir
fontu kullanabilirsiniz. Aşağıdaki komut, 8 piksel eni, 16 piksel boyu
olan Türkçe font yükleyecektir.
setfont tr8x16.map
Türkce klavye düzenlerini içeren dosyaları ftp ile yine aynı
adresten alabilirsiniz. Burada tr.map
ve trq.map
adlı iki dosya
bulacaksınız. Bunlardan tr.map
, normal klavye düzeninin yanında `alt'
tuşları ile "c, g, i, s, o, u" tuşlarına basıldığında karşılık gelen
özel Türkçe karakterler görüntülenir. trq.map
yaygın olarak kullanılmakta
olan Q-Türkçe klavye düzenini içerir.
Bash kabuğu altında Türkçe yazabilmek için aşağıdaki üç komutu .inputrc
dosyanıza eklemeniz gerekir.
set meta-flag on set output-meta on set convert-meta off
less
komutununu Türkçe karakterleri göstermesi için de aşağıdaki gibi
LESSCHARSET değişkenini latin5 yapmak gerekiyor.
LESSCHARSET=latin5
loadkeys
ve setfont
komutlarını sistem açılırken aktif olmaları için
bunları /etc/rc.d/rc.local
dosyasına yerleştirebilirsiniz. Fontu ve
klavye düzenini ayarladıktan sonra sistemde çıkın ve tekrar girin.
Artık Türkçe yazabilirsiniz.
crontab dosyası yardımıyla sistem üzerinde olmadığınız zamanlarda Linux'tan bazı belirli işleri yapmasını istemek mümkündür. Örneğin gereksiz trafik sıkışıklığı yaratamak için akşam geç saatlerde sistemi yedeklemek için evden İnternet'e bağlanmak yerine crontab ile bu işlemi otomatikleştirmek mümkün olur.
Bir crontab dosyasında toplam 6 alan bulunur. Bunlardan ilk beşi komutun ne zaman işleneceğini gösterirken son kısımda bu saatler içinde çalıştırılacak olan komutu gösterir. Zamanı belirten sütunlardan ilki dakikayı (0 ile 59 arası), ikincisi saati (0 ile 23 arası), üçüncüsü günü (1-31 arası), dördüncüsü ayı (1-12 arası), son kısım ise haftanın gününü (0 pazarı göstermek üzere 0-6 arası) verir. Yine crontab'ın güzel özelliklerinden birisi de bu alanların her birisinde zaman aralıklarını yazmaya izin vermesidir. Mesela haftanın üçüncü ve beşinci günleri arası, saat 4 ve 9 arası gibi. Eğer bir zaman alanına * girilirse, bunun anlamı "her zaman" olur. Örneğin saat yerine * konulması "her saat", ay yerine * konulması "her ay" anlamına gelecektir.
Önce aşağıda yeralan küçük bir crontab dosyası incelenecek, ardından crontab işlemine nasıl başlanılacağı kısaca anlatılacaktır.
40 06 * * * updatedb
Yukarıdaki örnekte birinci ve ikinci sayılar 06:40 saatini
gösteriyor. Diğer zaman kısımları * ile doldurulmuş olduklarından her
gün 06:40'ta updatedb
isimli program çalışacaktır.
Komut yerine kullanılacak olan program ismi parametre alabilir. Bu
örnekteki crontab dosyası pazartesi günleri saat 1'de, /tmp
dizinindeki
üç günden daha eski dosyaları siler.
0 1 * * mon find /tmp -atime 3 -exec rm -f {} \;
Bu örnekte kullanılan virgül, her ayın 9, 19 ve 29'unu gösterir. Aynı alanda birden fazla sayı kullanacaksanız arada boşluk bırakmamaya dikkat edin.
0 1 9,19,29 * * find /tmp -atime 3 -exec rm -rf {} \;
Ay isimlerinde ocak, şubat, mart, nisan, mayıs, haziran, temmuz,
ağustos, eylül, ekim, kasım, aralık için sırasıyla january, february,
march, april, may, june, july, august, september, october, november,
december kullanabilirsiniz. Benzer şekilde pazar, pazartesi, salı,
çarşamba, perşembe, cuma, cumartesi ve pazar yerine sunday, monday,
tuesday, wednesday, thursday, friday ve saturday kullanın. Aşağıdaki
crontab girdisi yardımıyla iki ayda bir çalıştırılan komutla önce teyp
başa alınıyor, ardından /home
dizini bu teybe yedekleniyor :
0 2 1 */2 * mt -f /dev/rft0 rewind; tar -cf /dev/rft0 /home
*/2 ile belirtilen zaman dilimini ikiye bölebilirsiniz. 2 yerine uygun herhangi bir tamsayı yazılabilir.
Bu girdileri bir crontab dosyasına nasıl yazacağız? Bunun için root kullanıcısı olarak girin ve aşağıdaki satırları yazın :
# crontab -e
Ekrana bilgisayar ilk kurulduğu anda ön tanımlı olarak girilen crontab satırları gelecektir. Buraya yukarıda belirtilen yapıda istediğiniz kadar crontab girdisi yapabilirsiniz. Eğer daha önceden VISUAL çevresel değişkenini uygun bir editöre ayarlamamışsanız, vi altında çalışmanız gerekecektir. Başka bir editörle çalışabilmek için bu değişkeni, editörün patikasını gösterecek şekilde değiştirin. İleride de kısaca bahsedilecek olan tin (haber grubu okuyucu yazılımı) de VISUAL değişkenine göre metin editörünün patikasını ayarlayacaktır.
# export VISUAL=/usr/bin/pico
Crontab dosyasının normal olarak işletilmesinden crond sorumludur. Sistem
açılırken /etc/rc.d
dizini içindeki dosyalardan bir tanesi crond
programını çalıştırır ve bu andan itibaren crontab -e
komutuyla
yarattığınız dosyadaki emirler zamanı geldikçe yerine getirilir.