6. Linux Genel

  1. Linux nasıl okunur?
  2. Linux'a nasıl başlarım?
  3. Linux hangi parçalardan oluşur? Red Hat, SuSE, KDE, GNOME birer Linux müdür?
  4. Tüm Linux sistemleri için çekirdek tek bir tane mi?
  5. Çekirdeğin güncellenmesi işlemi herhangi bir yolla elimize geçen metin dosyalarının derlenip uygun (gerekli) yerlere yerleştirilmesi şeklinde mi oluyor?
  6. Linux sistemler C ağırlıklı mıdır?
  7. Scripting denilen olay C "yazılımcık"larıyla mı oluyor?
  8. En son çekirdek sürümünü nereden elde edebilirim?
  9. SRPM nedir, diğer paketlerden ne farkı vardır?
  10. CVS nedir? Bazı sitelerin dosya indirme bölümlerinde "daily shots" gibi tabirler görüyorum. Ne demek?
  1. Linux nasıl okunur?

    Yanıtlayan: M. Umut Atasever

    Linus Torvalds'ın Linux'ü nasıl telaffuz ettiğini http://ftp.funet.fi/pub/Linux/PEOPLE/Linus/SillySounds/swedish.au dosyasından dinleyebilirsiniz.

  2. Linux'a nasıl başlarım?

    Yanıtlayan: Barış Şimşek

    Çeşitli konularda yardım almak için bu kitaplıktan, http://tlbp.org.tr/ ve http://www.linuxdoc.org/ sayfalarından yararlanabilirsiniz. Linux içinde bir komut hakkında bilgi almak için man komutunu kullanabilirsiniz. Örnek: # man ls

    Bunun haricinde Linux ile uğraşan diğer insanlarla haberleşerek başlayabilirsiniz. Linux.org.tr bünyesinde 'linux' eposta listeleri mevcuttur. Üye olmak için http://www.linux.org.tr/ adresini ziyaret ediniz.

  3. Linux hangi parçalardan oluşur? Red Hat, SuSE, KDE, GNOME birer Linux müdür?

    Yanıtlayan: Deniz Akkuş

    Linux işletim sistemi bir tanedir. Sistemin bir kaç yapıtaşı vardır:

    1. Çekirdek - kernel. Linux'u Linux yapan budur. Linux çekirdeğini çıkarıp içine başka bir çekirdek (örneğin BSD) koyarsanız BSD serisinden bir işletim sistemi elde etmiş olursunuz.

    2. Dosya sistemi vb gibi çekirdeğin etrafındaki parçalar. Bunlar esas olarak FSF'in eseridir (GNU) ve hemen hemen her Unix türevinde artık bunlar kullanılır.

    İşletim sistemi aslında bundan ibarettir. Üzerine gelen herşey uygulamadır. Bu noktadan itibaren elinizdeki makinaya tabiri caizse "can" üflenmiş olur.

    Bunun üzerine çeşitli seviyelerde uygulamalar gelebilir:

    • Hizmetler: Örneğin Apache (HTTP sunucusu), normal kullanıcılar için işletim sisteminin bir parçası olarak görünebilir fakat değildir. Herhangi bir uygulamadır, sistem tarafından sürekli çalışılır tutulduğu için "daemon", yani sistem hizmeti olarak adlandırılır. Özel bir kullanıcı yetkisi bile yoktur, düşük yetkili normal bir kullanıcıymış gibi çalışır.

      "Ağ ortamı" dendiğinde akla gelen şeylerden birisi olan bilgisayarların birbirlerinin diskini görebilmeleri, samba, nfs gibi sistem hizmetleri tarafından yapılır. Bunlar da işletim sisteminin "esas" parçası değildir aslında. İsterseniz birini kaldırır, diğerini kurarsınız. (Linux üzerindeyseniz sisteminizi yeniden de başlatmazsınız :-) )

      Sistem hizmetleri genelde kullanıcılar tarafından işletim sisteminin bütünleşik parçası zannedilir. Değildir. Sistem, bu hizmetler olmaksızın çalışır -- istediğiniz işlevselliği sağlamayabilir, fakat çalışır.

      Arayüzün birden çok olduğunu (daha doğrusu bir sürü olduğunu) sanıyorum. Çünkü bir sürü isim vs geçiyor ve benim anladığım çoğunun sadece arayüz olduğu.

    • Grafik arayüzleri: X: X, Linux dünyaya gelmeden önce yazılan bir grafik arayüzüdür. X kısaca ekranı idare eder. Yani bir pikselin ekranın neresine çizileceğini idare eden X'dir. En yalın hali ile bundan daha başka bir şey aslında pek yapmaz.

      X kutudan çıktığı hali ile ağlı ortamlarda çalışır, birden fazla ekranı idare edebilir. Bundan kastedilen şudur: Örneğin iki makina (A ve B) X çalıştırsın. A, B'nin ekranında gösterilmek üzere bir şey gönderebilir. B, buna izin verebilir veya reddedebilir. X aynı zamanda bir makinaya birden fazla ekran bağlanma meselesini de halledebilir.

      X, işletim sisteminin parçası değildir. Örneğin bir zamanlar Sun iş istasyonlarında X yoktu, kendi grafik sistemleri vardı. Eğer isterseniz, X haricinde bir grafiklenme sistemi çalıştırabilirsiniz. Bir kaç alternatifi vardır, fakat destek/uygulama vb söz konusu olunca X haricinde bir şeyi tercih etmekte zorlanırsınız.

      X'in üzerine gelen katmanlar: Yalın X çalıştırmak mümkündür. Uzun yıllar öyle yaptık. X'de bir pencere yöneticisi seçersiniz, çeşitli "düz X" çalıştıran uygulamaları çalıştırırsınız. Kendi ayarlarınızı yaparsınız, menü yoktur, vb.

      Sonra Motif ve CDE geldi, en son da KDE ve GNOME. Motif, yaygın olan pencere elemanlarını içeren bir kitaplık (pencerenin sağındaki, altındaki sürükleme çubukları, her pencerenin kapanmasına, küçülmesine yarayan tepedeki düğmeler vb) idi. Motif'in ikinci bir elemanı da standart hale getirilmiş bir "ortam" idi. Ortamdan kastedilen, standart pencere yöneticisi, kullanıcı sisteme girdiği zaman kendisine gösterilen standart masa üstü vb idi. Motif, X üzerine gelen bir katmandan ibarettir.

      Motif'den sonra CDE geldi. CDE de benzer bir katman idi.

      Çeşitli Unix satıcıları (Sun, HP, AIX vb) bir araya gelerek bunda birleşme kararı aldılar. Halen daha Sun, HP, AIX vb satın alırsanız karşınıza CDE çıkar.

      KDE: KDE de, tıpkı Motif, CDE vb gibi bir katmandır. KDE'de ek olarak, bir de uygulamalar vardır. Bunlar, KDE kitaplığını kullanarak yazılan, grafik arayüzlü uygulamalardır (kmail vb). Ama örneğin mozilla, bir KDE uygulaması değildir. Düz X çalıştıran (KDE kitaplığı olmayan) bir makinada Mozilla çalıştırabilirsiniz, ama KMail çalıştıramazsınız.

      GNOME: KDE gibi ama farklı bir tat/renk.

      Bu katmanları bir arada çalıştırabilirsiniz aslında. Örneğin KDE çalışan bir sistemde aynı zamanda GNOME'dan uygulamaları da çalıştırabilirsiniz. Veya bir daha sisteme girişinizde GNOME'u seçebilirsiniz. Tabii X'in üzerine gelen katmanları çalıştırabilmeniz için X çalıştırmanız gerekir.

      GNOME, KDE gibi arayüzlerin hepsi, X grafik arayüzünün tepesine oturan katmanlar. Birini tercih etmeniz diğerinden bir şeyler kullanmanızı, hatta bir diğerine geçivermenizi engellemez. Aynı makinayı birden fazla kişi paylaşıyorsa birisi GNOME, diğeri KDE çalıştırabilir. Siz, KDE çalıştırırken GNOME'dan sevdiğiniz uygulamaları kullanabilirsiniz vb.

      Uygulamalar: KDE ve GNOME'un içinde de uygulamalar vardır -- bunlar KDE ve Gnome bağımlısıdır. Bir de bağımsız uygulamalar vardır, örneğin Mozilla, OpenOffice vb. Bunlar da işletim sisteminin esas/asli parçası değildir. Kaldırıp yerine başka bir şey koyabilirsiniz, hangisini kuracağınıza siz karar verirsiniz.

      Linux (ve bütün Unix'ler) bu tarz katmanlardan oluşur. Her katmanda değişik kararlar verebilirsiniz.

      Meseleyi karıştıran olay, Microsoft'un bu katmanlar hakkında aldığı kararları kullanıcı veya sistem yöneticisine bırakmamasıdır. Dolayısıyla Microsoft sistemlerine alışık olanlar bu katmanları karmaşık bulurlar.

      Linux'un esnekliği ise bu katman tercihlerinin yapılabilmesinden kaynaklanır. Örneğin kol saatinde Linux çalıştıracaksanız (IBM), bu katmanların çoğunu çalıştırmazsınız/kurmazsınız. Bu katmanları devre dışı bırakmak veya birinin yerine diğerini tercih etmek için yapacağınız işlem basit ve tanımlıdır.

      Normal bir kullanıcının önündeki masaüstü Linux'unda bu değişik katmanların hepsi mevcuttur ve çalışır.

    Dağıtımların görevi, temel işletim sisteminin üzerine konulacak bu katmanlar için tutarlı tercihler yapmaktır. Dolayısıyla elinize bir Linux dağıtımı geldiği zaman, şimdi grafik arayüz için ne kullanayım demezsiniz, o tercih X lehine sizin için yapılmıştır. KDE/GNOME genelde hepsinde mevcuttur, orada hangisini (veya ikisini birden) istediğinize dair bir tercih yaparsınız. Sistem servislerinden ana servislerin hepsi vardır, kurayım mı, çalıştırayım mı tercihini yaparsınız.

  4. Tüm Linux sistemleri için çekirdek tek bir tane mi?

    Yanıtlayan: Deniz Akkuş

    Windows çekirdeği bildiğim kadarı ile hep aynı değil. Hatta Windows'un değişik sürümleri arasında tamamen farklı ve yeniden yazılmış olanları var. Bildiğim kadarı ile:

    • Windows 3.1 - DOS'un üzerine giydirilen bir grafik arayüz ortamından ibarettir (muadili X + KDE/Gnome olsa gerek). İşletim sistemi DOS'tur.

    • Windows 95 - yine 3.1 gibi, fakat bu sefer biraz daha "entegre".

    • Windows NT - New Technology. Microsoft, Windows 9x sürümünden hemen hemen hiç faydalanılmadan sıfırdan yazılmıştır. Arka plan mimarisi VMS kökenlidir (VMS, eski bir Digital işletim sistemidir, Microsoft VMS'i yazan ekibi işe aldı ve NT'yi yazdırdı)

    • Windows 2000 - Resmi ben burada kaybettim, fakat anladığım kadarı ile BSD Unix'den çok kod alan bir sistem bu. Yine sıfırdan yazılmıştır, NT veya daha öncekilerden satır satır farklıdır.

    • Windows XP - 2000'den ne kadar faydalandıklarını bilmiyorum.

    Ama Linux çekirdeği bir tanedir. 1. sürümden itibaren değişik sürümleri vardır, güncellenmiştir, ama sıfırdan tekrar yazılmamıştır. (OK, 1'den 2'ye geçerken yeniden yazılan tarafları oldu)

    "Linux" dendiği zaman gözümüzde canlandırdığımız işletim sisteminin kimi katmanları (örneğin X), Linux'un kendisinden daha eskidir. Güncellenir, hataları düzeltilir vb ama genellikle bu parçalar da yeniden yazılmaz.

  5. Çekirdeğin güncellenmesi işlemi herhangi bir yolla elimize geçen metin dosyalarının derlenip uygun (gerekli) yerlere yerleştirilmesi şeklinde mi oluyor?

    (tabii sıradan metin dosyalarından bahsetmiyorum, .HTML veya .CPP gibi özel metin dosyalarından bahsediyorum)

    Yanıtlayan: Deniz Akkuş

    Hayır. Elinize geçen ikilik (binary) dosyaların çeşitli yerlere kopyalanması ve sistemin yeniden başlatılması ile olur.

    Eğer isterseniz, metin dosyalarını (yani çekirdeğin kaynak kodlarını) gcc'den (derleyici/compiler) geçirerek derleyebilir ve çalıştırılabilir dosyalarını kendiniz oluşturabilirsiniz.

  6. Linux sistemler C ağırlıklı mıdır?

    Yanıtlayan: Deniz Akkuş

    Evet, tıpkı Windows gibi. İşletim sistemleri genelde C dilinde yazılır. İşletim sisteminin hangi dilde yazılmış olduğu kullanıcı için önemli değildir. O işletim sisteminin üzerinde bulunan derleyici (compiler) sizin o işletim sistemi için hangi dilde yazılım geliştirebileceğinizi belirler. Linux üzerinde C, C++, Java, Fortran, Lisp, Pascal, Delphi ve şimdi adını hatırlayamadığım bir sürü dilde yazılım geliştirebilirsiniz.

  7. Scripting denilen olay C "yazılımcık"larıyla mı oluyor?

    Yanıtlayan: Deniz Akkuş

    Hayır. Scripting'den kastedilen farklı bir şey. Önceki maddede adını verdiğim yazılım dilleri *derlenir*. Yani: yazılımı yazarsınız. Derleyici (compiler) dan geçirirsiniz, bu yazılımı çalıştırılabilir hale getirir. Yazılımı çalıştırırsınız.

    Bir de yorumlayıcı (interpreter) kullanan diller vardır. Örneğin Perl. Perl başlı başına bir dildir, fakat derlemeden kullanabilirsiniz. Sistem "derleme" işlemini yapmaz, perl yorumlayıcısını çalıştırır, o sizin "script"i (betiğinizi) okur ve makinaya ne yapması gerektiğini söyler.

    Derleme işlemi olmadığı için betikler daha hızlıca yazılabilir. Fakat derleme işlemi bir sefer yapılır. Dolayısıyla aynı betiği 10,000 defa çalıştıracaksanız, sistem bunu 10,000 defa yorumlayacak. Halbuki derlerseniz, bir defa yorumlama işlemi yapılır, makina diline dönüştürülür, ondan sonrasında bu fazladan işlem yapılmaz. Dolayısıyla genelde betikler derlenmiş yazılımlardan daha yavaş çalışır.

    Hangi dilin betik dili, hangisinin yazılımlama dili olduğu biraz geniş bir mevzuudur. Örneğin perl dilini derleyebilirsiniz de. Dolayısıyla perl'de ufak bir betik yazıp, bunu deneyip istediğiniz hale getirdikten sonra, sık kullanılacaksa bunu derlersiniz, o zaman daha hızlı çalışır.

    Scripting dendiği zaman genelde kastedilen şey, komut satırında bir kaç ufak şeyi yapmak için yazılıvermiş, genelde çeşitli yaygın betik (perl, bash vb) dillerinden birini kullanan ufak "yazılımcıklardır".

    Bunların C yazılımlarından farkı, derlenmeden kullanılabilmesidir. Üstelik komut satırına yazdığımız her komut,betiklerin içinden kullanılabilir. Buna Linux'da ikilik (binary) dosyalar ve metin dosyaları arasında fark güdülmediğini de ekleyince, kullanıcıya normal uygulama gibi gelen çeşitli betikler yazılabilir. Linux'un güçlü yanlarından birisi bu konuda çok esnek olabilmesidir.

  8. En son çekirdek sürümünü nereden elde edebilirim?

    Yanıtlayan: Barış Şimşek

    Linux çekirdeğinin merkezi dağıtım sitesi: http://www.kernel.org

  9. SRPM nedir, diğer paketlerden ne farkı vardır?

    SRPM paketleri kaynak kod içeren RPM paketleridir. RPM paketleri ise hazır çalıştırılabilir uygulamaları içerir ve kurulması için bazı ek paketlere ihtiyaç gösterir. Bu bağımlılıklardan kurtulmak için SRPM paketleri kullanılabilir. SRPM olarak paketlenmiş bir uygulamayı kendi makinanızda RPM haline getirip kurabilirsiniz. Böylece kendi ürettiğiniz RPM paketi zaten makinanızda bulunan paketlere göre derleneceğinden standart RPM paketinin gerektirdiği ek paketleri kurmaktan sizi kurtarır. Tabii bir paketi derlemek için gereken herşey makinanızda kurulu olmalıdır.

  10. CVS nedir? Bazı sitelerin dosya indirme bölümlerinde "daily shots" gibi tabirler görüyorum. Ne demek?

    Yanıtlayan: Deniz Akkuş

    CVS - Concurrent Versions System - eli bilgisayara deyip, kullanılan yazılım/betik vs. gibi şeyler yazan herkesin kullanması gereken bir şeydir. CVS herhangi bir dosyaya yaptığınız değişikliklerin kaydını tutar. Örneğin bir betiğiniz var, 3 ay önce yazdınız. Şimdi bir şeyler ilave etmek istediniz, fakat değişikliklerden sonra baktınız ki artık çalışmadı. Nasıl geri gideceksiniz? CVS buna cevap verir.

    CVS'in bir kaç faydası:

    • Tek başınıza çalışıyorsanız: Eski sürümlerinizi düzenli olarak erişilebilir tutmanızı sağlar, "dalgınlık oldu, orjinalini sildim" gibi hataları engeller - 6 ay önce bir şeyler yapmıştık, ondan sonra başladı bu problemler, neydi o değişiklikler sorusunun cevabını kolaylıkla vermenizi nsağlar. CVS sunucunuz ayrı bir makinada ise, makinanızın başına bir şey gelmesi halinde kodunuzun yok olmasını engeller.

    • Bir kaç yazılımcı beraber çalışıyorsanız: Birbirinizin "ayağına" basmaksızın aynı kod üzerinde çalışmanızı sağlar. Hangi değişikliği kimin, ne zaman yaptığı bellidir. "Sürüm" kavramı vardır, dolayısıyla sürümü çıkarabilir, dondurabilir ve yeni değişikliklerin bu sürüm'e olan farkları üzerinde çalışabilirsiniz. Alternatifi:

      • Herkes aynı kopya üzerinde çalışacak - Internet üzerinde çalışıyorsanız zaten mümkün değil. Şirket içi ise, "bu dosyayı kim değiştirdi!!", "derleyemez oldum, ne yapıyorsunuz" benzeri bağrışmaları hemen duymaya başlarsınız.

      • Herkes kendine bir kopya alacak -- Ondan sonra herkesin kopyasının farklarını bir araya getirip "sürüm" yapmak çok ciddi iş halini alır. Hele hele aynı dosyaya birden fazla kişi değişiklikte bulunmuşsa.

    CVS bu sorunları çözer. Eğer betik/yazılım cinsi şeylerle uğraşırsanız, kişisel kullanımınız için dahi faydalıdır.

    CVS kullanımı ile ilgili giriş seviyesindeki bilgileri CVS ile Açık Kod Yazılım Geliştirme belgesinde bulabilirsiniz.