Linux'un temel bileşenleri ve ortaya çıkışını anlatmaya çalıştık

Teknopusula’da Linux ile ilgili pek çok içeriğin ve bazı uygulamaların yer alması hedefleri doğrultusunda, Linux uygulamaları, komut satırı ve kabuklarıyla (Shell) çalışmaya başlamadan önce Linux’un nereden geldiğinin ve nasıl çalıştığının anlaşılması gerektiğini düşündük. Bu kapsamda Linux’un ne olduğunu; Kernel, GNU ve masaüstü ortamlarının ne işe yaradığını temel olarak anlatmak istedik.

Klasik ama eskimeyen bir soru: Linux nedir?

Bu sorunun cevabını bir sözlük ya da Wikipedia sayfası gibi yanıtlamak istemiyoruz.

Daha önce hiç Linux ile çalışmadıysanız, neden bu kadar çok farklı versiyonun mevcut olduğu konusunda kafa karışıklığı yaşayabilirsiniz. Birçok yeni kullanıcı Linux paketlerine bakarken “dağıtım”, “LiveCD” ve “GNU” gibi kavramlarla da karmaşa yaşamaktadır. Linux dünyasına ilk kez girmek kolay bir deneyim değil, bunu kabul ediyoruz.

Çoğunlukla ilk bilgisayar ve işletim sistemi deneyimini Windows ile yaşayan bir neslin Linux dünyasında kendini yabancı hissetmesi ve Linux sistemlerini biraz gizemli bulması da gayet doğal. Biz de bu yazımızda Linux sistemleri üzerindeki gizemi biraz hafifletmeye çalışacağız.

Linux sistemini dört ana bölümde ele almak gerektiğiyle başlayalım.

  • Linux Çekirdeği (Kernel)
  • GNU Araçları
  • Linux Masaüstü Ortamı
  • Uygulama Yazılımları

Bu ana kısımların her birinin Linux sisteminde belirli görevleri vardır. Hiçbiri kendi başına bir fayda sağlamaz. Aşağıdaki şekli incelerseniz bu ana bölümlerin nasıl bir araya gelerek Linux sistemini oluşturduklarını görebilirsiniz.

Linux sistemindeki temel bileşenler

Şimdi bu ana bölümlerin nasıl birlikte çalıştıklarına bakalım.

1. Linux Çekirdeğine Bakış

Linux sisteminin çekirdeğini “Kernel” olarak adlandırıyoruz. Kelime anlamı da zaten “çekirdek” aslında. Kernel, sistemdeki tüm donanım ve yazılımları kontrol ederek, gerektiğinde donanımın ilgili kısımlarını harekete geçirir, gerektiğinde yazılımları çalıştırır.

Linux’den bahsedip de Linus Torvalds’dan bahsetmemek olmaz. Linus, Helsinki Üniversitesinde öğrenci iken ilk Linux çekirdeğini oluşturan kişidir. O dönem pek çok üniversitede kullanılan Unix işletim sisteminin bir benzerini ortaya çıkarmayı amaçlamıştır.

İlk Kernel geliştirildikten sonra Linus bu yazılımı internet topluluklarına açtı ve öğrencilerden tutun profesyonel yazılımcılara kadar tüm dünyadan gelen öneriler doğrultusunda geliştirdi.

Tabi bu gelen önerilerin her birinin çekirdeğe işlenmesi kararını kendisi veriyor. Aksi halde her öneri çekirdeğe işlendiğinde tam bir kaos yaşanabilir. Yani Linux çekirdeğinin merkezi Linus Torvalds’dır (ekibiyle birlikte) diyebiliriz.

Linux çekirdeğinin bir diyagramı

Kernel 4 ana işlevden sorumludur.

i. Bellek yönetimi

ii.Yazılım yönetimi

iii. Donanım yönetimi

iv. Dosya sistemi yönetimi

i. Bellek yönetimi

Kernel, yalnızca sistemdeki fiziksel belleği (RAM gibi) yönetmekle kalmaz, aynı zamanda sanal belleği (virtual memory) ve sabit disk üzerinde oluşturularak kullanılan “swap” alanını da (takas alanı da denebilir) yönetir.

Çekirdek sanal ve fiziksel belleği swap alanı ile birlikte yönetir.

Fiziksel bellek ve takas alanı arasındaki taşıma ayrıntılarına pek girmek istemiyoruz. Ancak şunu söylemek gerekiyor ki; Kernel, sanal bellekte konumlanan içeriği takas alanından gerçek fiziksel belleğe geri döndürür. Yani, takas alanının (swap space) disk üzerinde konumlanmış bir alan olduğunu ve verilerin buraya mı fiziksel belleğe mi yazılacağına karar verilmesi işi ile takas alanındaki verilerin yeniden fiziksel belleğe yazılması işi Kernel’in görevidir.

ii. Yazılım Yönetimi

Çalışan bir program Linux işletim sisteminde “process” (işlem) olarak adlandırılır. Bu işlem, çalışma esnasında ekranda görünebilir, bir komut penceresinde çalışabilir ya da arkaplanda çalışabilir. Kernel, Linux işletim sisteminin çalışan tüm işlemleri nasıl yönettiğini denetler.

Çekirdek, sistemdeki tüm işlemleri başlatmak için “init” (ilk değer atama diyebiliriz sanırım) adı verilen ilk işlemi oluşturur. Çekirdek başlatıldığında init işlemini sanal belleğe yükler. Çekirdek her ek işlem başlattıkça, işlemin kullandığı verilerin ve kodların depolanması için sanal bellekte benzersiz bir alan ayarlar. Malumunuz, Kernel bellek yönetiminden de sorumluydu. İşlemlerin kullanacağı alanı da dolayısıyla Kernel ayarlıyor.

Bazı Linux uygulamalarında, önyükleme sırasında otomatik olarak başlatılacak işlemler için bir tablo tutulur. Bu tablo genellikle /etc/inittabs dosyasında saklanır.

Ubuntu gibi bazı popüler Linux dağıtımları açılış sırasında kişisel uygulamaları başlatmak ve durdurmak için komut dosyaları içeren /etc/init.d klasörünü kullanır. Bu komut dosyaları, /etc/rcX.d klasörleri altında yer alan girdiler aracılığıyla başlatılır, buradaki X bir çalışma seviyesidir.

Çalışma seviyesi, sistemdeki işlemlerden belirtilmiş olanların çalışmasını sağlayan yazılım yapılandırmasına denir.

Çalışma seviyeleri ve init işlemlerinin detayına şimdilik girmeyelim. Kernel’in yazılım yapılandırmasına yönelik işlemleri init işlemleri ile sürdürdüğünü bilmek şimdilik yeterli.

iii. Donanım Yönetimi

Linux sisteminin herhangi bir donanımla iletişim kurabilmesi için, donanıma ait sürücünün (driver dediğimiz kodlar) çekirdeğe yerleştirilmiş olması gerekir. Sürücü kodu, Kernel’in uygulamalar ve donanım arasında çift yönlü veri iletimine olanak tanır.

Donanım sürücüleri iki yöntemle Linux çekirdeğine eklenebilir. Ya çekirdekle birlikte sürücü kodları derlenir ya da sürücü modülleri çekirdeğe sonradan eklenir.

İlk yöntem için her yeni donanım eklenmesi durumunda çekirdek yeniden derlenmek zorundadır. Bu da oldukça zahmetli bir iş. İkinci yöntem ise günümüzde en çok kullanılan yöntemdir.

iv. Dosya sistemi yönetimi

Windows kullanıcıları dosya sistemi kavramını NTFS ve FAT16/FAT32 şeklinde hatırlayacaklardır. Bazı işletim sistemlerinin aksine, Linux çekirdeği sabit disklerden veri okumak ve disklere veri yazmak için farklı dosya sistemlerini destekleyebilir. Pek çok dosya sistemini kullanabilen Linux, aynı zamanda Windows ve diğer işletim sistemlerine ait dosya sistemlerine de veri yazabilir, onları okuyabilir.

Linux kurulu bir diskte yer alan ext4 dosya sistemi ve swap alanı

Linux bir sisteminin veri okumak ve yazmak için kullanabileceği standart dosya sistemlerine örnek olarak; ext, ext2, ext3, ext4, hpfs, jfs, minix, ncp, nfs, proc, smb, xfs verilebilir.

2. GNU Araç Setleri (GNU Utilities)

Donanımları yönetmek için bir çekirdeğe ihtiyacı olan işletim sisteminin, dosya ve programları yönetmek için yardımcı araçlara da ihtiyacı vardır.

Torvalds Linux çekirdeğini geliştirirken üzerinde çalıştığı hiçbir yardımcı araç yoktu. Ancak Linus çekirdek üzerinde çalışırken, aynı zaman diliminde bir başka grup da Unix’i taklit eden bir araç seti geliştirmeye çalışıyordu.

GNU adlı bu organizasyon Unix’inkine benzer bir araç seti geliştirdi ama bu araç setini çalıştıracakları bir çekirdeğe sahip değillerdi. Bu araçlar “açık kaynak yazılım” felsefesinin temelini oluşturur.

Açık kaynak yazılım kavramı, programcıların geliştirdikleri yazılımlar için lisans ücreti istemeden yazılımlarını dünyaya yayması demektir. Herkes, bir lisans ücreti ödemek zorunda kalmadan bu yazılımları kullanabilir, değiştirebilir veya kendi sistemine dahil edebilir.

Linus’un Linux çekirdeğini GNU araç setleriyle birleştirmesi özgür bir işletim sistemi yarattı. Linux çekirdeğinin ve GNU araçlarının bir arada olduğu sistemler genelde Linux olarak adlandırılsa da bazı Linux tutkunları bunu GNU/Linux sistemi olarak adlandırmaktadır.

Linux çekirdeği ile birleşerek özgür bir işletim sistemi meydana getiren GNU’nun simgesi

GNU projesi esasen Unix benzeri bir ortam sağlamak amacıyla tasarlandı. Dolayısıyla pek çok Unix sistem komut satırını bünyesinde barındırıyor. Linux için sağlanan paketlere ise “coreutils” adı veriliyor.

3. Linux Masaüstü Ortamı

1990’lı yılların başında, yani Linux’un ilk zamanlarında, Linux işletim sistemi basit bir metin arabiriminden ibaretti. Bu metin arabirimi kullanılarak programlar başlatılıyor, program işlemleri kontrol ediliyor ve dosya sistemi üzerinde dolaşılabiliyordu.

Microsoft Windows’un popülaritesi arttıkça, bilgisayar kullanıcıları işletim sistemlerinin arayüzlerinden daha fazla şey beklemeye başladılar. Talep ve beklentiler açık kaynak yazılım geliştiricilerini Linux için grafik masaüstü arayüzler yapmaya itti.

Linux’un ünü, bir işi birçok yolla gerçekleştirebilme kabiliyetinden gelir. Bu ününü grafik masaüstü sistemlerinde de göstermeyi başardı. Linux sistemleri birçok grafik masaüstü sistemine sahip, bunlara göz atalım.

i. X Pencere (X Window) Sistemi

Bilgisayardaki görsel ortamı iki şey kontrol eder; ekran kartı ve monitör. Görsel öğelerin bilgisayarınızda güzel görünmesi için Linux’un her ikisi ile de uygun bir dille konuşması gerekiyor.

X Window yazılımı ekran kartı ve monitör ile doğrudan çalışan düşük seviyeli bir programdır. Linux uygulamalarının bilgisayarınızda grafiksel ve pencereler halinde nasıl sunulacağını kontrol eder. Mevcut sürümü X11 olduğundan bazen X11 adıyla da kendisini görebilirsiniz.

X pencere sistemi oldukça sade bir görünüme sahip

Bir Linux dağıtımını ilk defa kurduğunuzda, sistem ekran kartınızı ve monitörünüzü algılar ve bu bilgilerin yer aldığı bir X Window konfigürasyon dosyası oluşturarak saklar.

Çoğu yeni kullanıcı bazı işlemler sırasında ekranlarının siyaha döndüğünden ve hiçbir şey görmediklerinden şikâyet ederler. Bu tür şikayetler genelde X11 konfigürasyon dosyasının yenilenmesi ile çözülmektedir.

ii. KDE Masaüstü

K Desktop Environment (KDE, K masaüstü ortamı) 1996’da Microsoft Windows benzeri bir grafik masaüstü ortamı oluşturmak amacıyla ortaya çıkan bir açık kaynak projesidir.

KDE uygulaması dosya simgelerini masaüstünde bir alana yerleştirmeye olanak tanır. Bir uygulamaya ait simge tıklandığında Linux uygulamayı çalıştırır. Bir dosyaya ait simgeyi tıkladığınızda ise KDE dosyanın hangi uygulama ile çalışması gerektiğini belirlemeye çalışır.

KDE masaüstü kullanan bir dağıtım

Masaüstünün altında (ya da kenarlarda, hatta üstte olabilir, tercihe bağlı) yer alan çubuğa “panel” adı verilir. Panel üzerinde KMenü, program kısa yolları, görev çubuğu ve “applet”ler yer alır. Applet’lerden kastımız hangi uygulamanın çalıştığını gösteren simgeler. Microsoft Windows’tan aşina olduğumuz bu özellikler haricinde KDE farklı birçok ürün seçeneğine de sahiptir.

iii. GNOME Masaüstü

GNOME (The GNU Network Object Model Environment) popüler bir masaüstü ortamıdır. 1999 yılında ortaya çıkmıştır.

KDE’den farklı olarak Microsoft Windows görünümüne benzemez. Ancak Windows kullanıcılarının GNOME kullanırken genelde zorlanmadığını da söyleyebiliriz.

GNOME masaüstü kullanan Kali Linux

GNOME simgeler için bir masaüstü alanına sahiptir.  Çalışan uygulamaları gösteren bir panel alanı ve sürükle-bırak özelliklerine de sahiptir.

iv. Unity Masaüstü

Eğer Ubuntu ile karşılaştıysanız, Ubuntu’nun masaüstünün KDE ve GNOME’dan farklı olduğunu görmüşsünüzdür (tabi KDE ve GNOME ile de karşılaştıysanız).

Ubuntu’nun geliştirilmesinden sorumlu şirket olan Canonical, Unity adlı kendi Linux masaüstü ortamını geliştirmeye karar verdi.

Unity (birlik) ismi ise projenin PC, tablet ve mobil cihazlarda tek bir masaüstü deneyimi sağlama amacından geliyor. iOS’un tablet ve telefonlarda aynı şekilde çalışması gibi Ubuntu’nın Unity masaüstü de PC, tablet ve telefonlarda aynı şekilde çalışır.

Ubuntu kendi masaüstü ortamı olan Unity’yi kullanır

Bunların dışında Fluxbox, Xfce, JWM gibi birçok masaüstü ortamı da mevcut.

Linux ile ilgili söylenebilecek çok fazla şey. Bu yazıda Linux dünyasına bir giriş yaparak önemli bileşenlerini anlatmak istedik. Linux nedir sorusuna cevap verebildiğimizi umuyorum.

Linux ile ilgili belli başlı bazı Linux dağıtımlarından, dağıtım sayısının neden bu kadar çok olduğundan ve LiveCD’lerden bahsettiğimiz devam yazımız olan aşağıdaki yazımızı da incelemek isteyebilirsiniz.

En İyi Linux Dağıtımları

R. Blum’ın “Linux Command Line and Shell Scripting” kitabından istifade edilmiştir.

BİR CEVAP BIRAK