5. Linux Sistem Yönetimi
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.
5.1 Yetkili Kullanıcı ve Diğer Kullanıcılarla İlişkiler
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.5.2 Sistem Kuralları
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 zedeleyecekcrack, 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.
5.3 Kullanıcı İşlemleri
Aşağıda yeralan konularda, kullanıcı hesaplarının açılması ve kapatılması anlatılıyor.Kullanıcı Hesabı Açmak (adduser)
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. Kullanıcı Grubu
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,- Grup ismi
- Grup şifresi
- Grup numarası
- Gruba ait kullanıcılar
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
Kullanıcının Hesabının Silinmesi
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.5.4 Sistemin Yedeklenmesi
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.5.5 Sistemin Güncellenmesi
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.
5.6 Çekirdeğin Derlenmesi
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
Çekirdek Konfigürasyonu
/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.
Matematik işlemci emülasyonu (Kernel math emulation)
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.
Normal (MFM/RLL) disk ve IDE disk/cdrom desteği (Normal disk and IDE disk/cdrom support)
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.
Ağ desteği (Networking support)
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.
En fazla 16Mb hafıza (Limit memory to low 16Mb)
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.
System V IPC (System V IPC):
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.
İşlemci tipi (386, 486, Pentium, PPro):
Burada, çekirdeğinizi hangi tür makina için derliyorsanız, o makinanın tipini giriniz.
SCSI desteği (SCSI Support):
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ğ kartı desteği (Network Device Support):
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.
Dosya sistemleri (Filesystems):
Burada, aşağıdaki dosya sistemlerinden kullanmak istediklerinizi seçebilirsiniz.
· minix: Yeni dağıtımlar , artik tarih olmaya başlayan bu dosya sistemini desteklememekte. Bazı kurtarma disketleri yaratmak için daha yaygın, fakat daha az kararlı olan ext2 dosya sistemine tercih edilirler.
· Extended file system (ext): Bu da artık kullanımı olmayan bir dosya sistemi. Desteğini ekleyip eklememek size kalmış.
· Second extended file system (ext2): Linux'un kullandığı en önemli dosya sistemi. Alınması şart.
· xiafs: Artık kullanılmıyor.
· msdos: Sabit diskinizde DOS bölümü varsa, ya da DOS disketi kullanmak istiyorsanız, alın.
· umsdos: MS-DOS dosya sistemine bazı yenilikler (uzun dosya isimleri gibi) getirilerek oluşturulan bir teknoloji. MS-DOS desteği almadıysanız buna da gerek yok.
· proc: Bu aslında gerçek bir dosya sistemi değil, çekirdek görüntüsüdür. `y' cevabını vermezseniz ileride başınız çok ağrır.
· NFS: Linux makinaniz bir ağ üzerinde kurulu iken ağ üzerindeki diğer makinaların dosya sistemlerini kullanabilmenizi sağlar.
· ISO9660: CD-ROM sürücünüzü Linux altında kullanabilmek için 'y' cevabı verin.
· OS/2 HPFS: OS/2 dosya sistemlerini okuyabilmek için 'y' cevabı verin.
· System V: Bir UN*X sürümü olan System V makinalarının dosya sistemleri üzerinde çalışabilmeyi sağlar.
Karakter aygıtlar (Character devices):
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.
Ses kartı (Sound Card Support):
Linux'un ses kapasitesini "duyabilmek" için bu desteği ekleyin.
Çekirdek işlemleri (Kernel Hacking):
Ç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.Temizlik
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.Çekirdeğin Kurulması
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ındakiimage = /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 Yamanması (patch)
Ç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 {} ';'
Çıkabilecek Sorunlar
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.
Hiç yorum yok:
Yorum Gönder