GNU/Linux Notları #1 – GNU/Linux’a Giriş

İçerik Tablosu

BÖLÜM 1: GİRİŞ

İşletim Sistemi

  • Donanımlarının denetimi ve yönetiminden sorumlu yazılımdır.
  • Temel sistem işlemlerinden ve programlarının çalıştırılmasından sorumludur.
  • Yazılımların, donanım katmanlarına ve sistem katmanlarına erişebilmesi için arayüz sunar.
  • İşlem (Process) yönetiminden ve işlenme sıralarından sorumludur.
  • Giriş-Çıkış (Input-Output I/O), Ağ (Network) ve Bellek (RAM) yönetimlerinden sorumludur.
  • İşletim sistemleri, ‘Operating System’in kısaltması olan ‘OS’ ile gösterilir.
  • Linux, bir işletim sistemi değil; bir işletim sistemi çekirdeğidir.

Tarihçesi ve Özellikleri

  • Donanım, Çekirdek ve Kabuk’un İşbirliği:
  • Linux’tan önce, AT&T Bell Laboratuvarları’nda geliştirilen, UNIX adında bir işletim sistemi vardı.
  • Lisansının ücretli olması nedeniyle kısıtlı kullanıcıya hitap ediyordu.
  • Ücret ödemek istemeyenler, kendi işletim sistemlerini yazmaya başladılar…
  • Fakat üretilen işletim sistemlerinde, hatalar nedeniyle stabillik uzun süre sağlanamadı.
  • Sahaya Linus Torvalds çıktı ve 1991’de Linux’u yazdı.
  • Linux’un, henüz kararlı bir işletim sistemi yoktu. Linus Torvalds bu konuda endişeliydi…
  • İyi bir ‘çekirdek’ bulamama konusunda da benzer endişeyi o dönem, GNU işletim sisteminin kurucusu Richard Stallman yaşıyordu. Çünkü GNU’nun Hurd isimli, işlevsiz bir çekirdeği vardı.
  • Linux’un iyi bir işletim sistemine; GNU’nun ise iyi bir çekirdeğe ihtiyacı vardı.
  • Richard Stallman’ın işletim sistemi olan GNU ve Linus Torvalds’ın çekirdeği Linux birleşti ve GNU/Linux ortaya çıktı.
  • İsmi için yaygın kullanım ‘Linux’ olsa da, doğrusu GNU/Linux’tur.

GNU NEDİR?

  • (G)NU’s (N)ot (U)nix
  • Kurucusu Richard Stallman’dır.
  • ‘’Bilim ancak kollektif olarak gelişir ve bilgi paylaşılmalıdır.’’ denilerek 1983’te ortaya atılmıştır.
  • Sloganı ve açılımı ‘’Gnu is not Unix’’tir. Bu vurgu, Unix’e benzemesi fakat hiçbir Unix kodu içermemesinden dolayıdır. (GNU’nun çekirdeği Hurd’dur.)
  • Hurd çekirdeği yerini Linux çekirdeğine bırakmıştır. Böylelikle GNU bir shell (kabuk); Linux ise bir kernel (çekirdek)’dır.
    • Linux, Genel Kamu Lisansı (General Public Lisans / GPL) ile sunulan, Linux Vakfı tarafından sahiplenilen ve geliştirilen bir özgür yazılım projesidir. Özgür yazılımların bir çatı altında toplanmasını ve kullanımını amaçlamış bir projedir.

GPL NEDİR?

  • (G)ENERAL (P)UBLIC (L)ICENSE
  • Topluma mal edilmiş, yazılımın herkese ait olduğunu belirten bir lisanslama türüdür.
  • Hukuki olarak kullanıcının özgürlüğünü savunur. Gelişimleri önlemek yerine desteklemek ve kullanımı yaygınlaştırma amaçlı bir lisanslama modelidir.
  • Yazılımın tüm sürümlerini inceleyebilme, değiştirebilme ve paylaşabilme hakkı sunar.
  • Ücretsiz olduğu anlamına gelmez. GPL lisanslı bir yazılımı, geliştiricisi, ücretli dağıtabilir. Sadece yazılımın kaynak kodlarına erişim, diğer yazılımlarla entegrasyonu ve değiştirilebilme gibi özgürlüklerini sağlamalıdır.
  • Özgür haklarla (GPL lisansıyla) edindiğiniz bir yazılımı, değiştirdikten sonra ücretli veya ücretsiz de dağıtsanız, bir sonraki kullanıcının da özgürlüklerini gözetmelisiniz. GPL’de, özgürlüklere saygı, ilk kuraldır.
  • Yazılımı yazan kişi, yazılımı kullanan kişi ve yazılımı değiştirip dağıtan kişi aynı haklara sahiptir. Yazılımı yazan kişinin, kullanan ve değiştiren kişiden daha fazla hakkı yoktur, haklar eşittir.
  • Benzer ve detaylı bilgileri aşağıdaki linklerden edinebilirsiniz.

GNU/LINUX ÖZELLİKLERİ

  • GNU/Linux’un en belirgin özellikleri şunlardır;1) Güvenlik2) Stabillik3) Esneklik4) Desteklilik
  • Açık kaynak kodlu olduğu için bu özelliklerini, dünya çapındaki binlerce geliştiricinin katkı sunumuyla sağlar.
  • Wisconsin Üniversitesi’nde 7 ticari işletim sistemi üzerindeki testlerde Hatalı çalışma ortalaması %23 olarak hesaplanmıştır. Bu testte Linux’un hatalı çalışma ve hizmet dışı kalma skoru %9 olmuştur.

LINUX DAĞITIMLARI

  • Linux Distributions
  • Bir dağıtım, Linux çekirdeği ve üzerindeki tüm yardımcı programlardan oluşur.
  • Dağıtımların çoğunluğu, GNU’dan yazılım kaynağı sağlarlar. Bu yüzden dağıtımlar GNU/Linux olarak adlandırılırlar.
  • Dağıtımlar, hedeflenen kullanım amacına göre ufak farklılıklar gösterirler. Dosya-dizin yapıları, yükleme paketleri, uygulamalar, belgeler vs gibi. Ücretli ve ücretsiz de olabilirler.
    • DEBIAN –> Kararlılık ve geliştiricilik
    • SUSE –> Çok yönlülük
    • UBUNTU –> Bireysel, gündelik kullanım
    • REDHAT –> Kurumsal, endüstriyel kullanım
    • FEDORA –> RedHat tabanlı ve ücretsiz hali
    • CentOS –> RedHat tabanlı, Fedora’dan stabil.
    • PARDUS –> Bireysel, gündelik kullanım. Milli.
    • ARCHLINUX –> Uzmanlık gerektiren, kararlı, stabil.
    • KALI –> Debian tabanlı, güvenlik testleri odaklı.

PAKET YÖNETİM SİSTEMLERİ

Paket Uzantısı Paket Kullanıcısı Paket Yükleyicisi
.deb Debian, Ubuntu dpkg, aptitude, apt, dselect
.rpm CentOS, Fedora, RedHat, OpenSUSE yum, dnf, zypper
.* Arch Linux pacman
.pisi Pardus, SolusOS pisi

 

LINUX DİZİN YAPISI (Linux Directory Structure)

  • /bin –> Kullanıcı komutları (Terminalde/Shell’de kullanılabilecek komutlar burada yer alır.)
  • /sbin –> Sistem komutları (Root kullanıcısı tarafından çalıştırılabilir sistem komutları buradadır.)
  • /etc –> Konfigürasyon dosyaları (Tüm kullanıcı ve sistemin ayarları dosyalar halinde buradadır. Örn; resolv.conf)
  • /dev –> Donanım dosyaları (Donanımları temsil eden dosyalar buradadır. Diskler gibi. Örn; dev/sda5)
  • /proc –> Süreç bilgileri (İşletim sistemi işlem süreçlerinin anlık tutulduğu sanal dosyalar buradadır. Örn; proc/meminfo)
  • /var –> Değişken dosyalar (Event Log (Olay Kayıtları) gibi değişen dosyalar burada tutulur. Örn; /var/log/auth.log)
  • /tmp –> Geçici dosyalar (Geçici olarak oluşturulması gereken, silinecek olan dosyalar buradadır.)
  • /home –> Kullanıcılar için home (ev) dizinleri (Kullanıcıların uygulamarı ve yazma hakkına sahip dosyaları buradadır. ~ işareti ile gösterilir.)
  • /mnt –> Geçici kullanımdaki dosya sistemleri (Geçici mount edilmiş dosya sistemlerinin mount edildiği dizindir.)
  • /opt –> Uygulamaların kütüphane dosyaları (Kendi kütüphanesiyle gelen uygulamaların kütüphane dosyaları buradadır. Örn; /opt/winrar)
  • /srv –> Servis dosyaları (İşletim sisteminde çalışan tüm servis dosyaları buradadır.)
  • /usr –> Uygulama dosyaları (Çalıştırılabilir dosyalar ve kullanıcı uygulamalarının depolandığı dizindir)
  • /lost + found –> Silinen dosyalar (Silinen veya kesinti nedeniyle çalışması yarıda kalmış dosyaların tutulduğu dizindir.)
  • /boot –> Açılış dosyaları (Açılış için gerekli bilgiler ve Kernel (Çekirdek) imajı burada bulunur. Örn; initrd.img)
  • /lib –> Sistem kütüphaneleri (Kütüphane ve kernel (çekirdek) modülleri dosyaları buradadır.)
  • /media –> Kaldırılabilir donanımlar (Flash bellek, USB aygıtları, CD-ROM gibi kaldırılabilir donanımların bilgi dosyaları buradadır.)

Dosya Sistemi ve Dizin Yapısı Hakkında Unutulmaması Gerekenler

  • Program dosyaları Windows’taki gibi tek bir klasör (Program Files) altında toplanmaz. Örn; dil dosyaları /usr/share/locale altında; doküman dosyaları /usr/share/doc altında toplanır.
  • Home dizini, Windows’taki Documents and Sharing veya Application klasörleri görevini görür.
  • Home dizini için ~ işareti kullanılır. Bu dizindeki dosyalara ~/oku.txt şeklindeki gibi erişilebilir.
  • .so dosyaları Windows’taki .dll’ler gibi kütüphane dosyalarıdır. /lib ve /usr/lib dizininde toplanırlar.
  • /tmp ve /var/tmp dizinleri Windows’taki Temporary işlevindedir.
  • /usr ve /opt dizinleri arasındaki temel fark; /usr’nin sistem; /opt’nin 3.parti uygulamaları tarafından kullanılmasıdır.
  • Windows’takinin aksine dosya isimlerinde küçük-büyük harf duyarlılığı (case sensitive) vardır. Örn; Tavas, TAVAS ve TavAs ismindeki dosya veya klasörler aynı yerde bulunabilir, oluşturulabilir.
  • Linux’ta donanımlar dahil her şeyin dosyalardan oluştuğunu unutmayın.

LINUX AÇILIŞ SÜRECİ

  • Donanım, Çekirdek ve Kabuk’un İşbirliği…
  • RunLevels (6) –> Çalışmak istenen seviyenin devreye girmesini, yüklenmesini sağlar.
  • init (5) –> Çekirdek, sağlıklı yüklendikten sonra, kendisinin başlangıç işlemi olan ‘init’ işlemini başlatır. Sistemin açıldığı çalışma seviyesinde (runlevels’da) tanımlı olan işlemleri başlatır.
  • Kernel (initrd) (4) –> Initial RAM Disk adında bir imajdır. Çekirdek ve gerçek dosya sistemi yüklenmesi sırasında yardımcı olan, geçici bir dosyadır. Tüm dizinler, işletim sistemine burada bağlanır. İşletim sistemi başarılı şekilde yüklendiğinde işi biter.
  • G.R.U.B. (3) –> Açılışta, işletim sistemi için seçim listesi (menüsü) sağlar. Seçilen işletim sistemine göre parametereler yüklenerek işletim sistemi açılışı başlar. Bulunabilmek için MBR bilgisine kendisini de eklemiştir.
  • M.B.R. (2) –> BIOS’ta tanımlı ilk disk üzerinde işletim sistemi izi arar ve açar. Disklerin ilk sektöründeki 512 B’lık alandır. Diskin dosya sistemi ve işletim sistemi hakkında bilgi verir. GRUB bilgisi de buradadır.
  • P.O.S.T. (1) –> BIOS’tan okuduğu (öğrendiği) donanımlar üzerinde çalışırlık testi yapar. Başarılıysa üst etaba geçer.
    • Run Level 0 –> HALT (Sistem çalışmaz durumdadır. ‘Kapalı’ demek değildir. Kesintiyi bekliyor.)
    • Run Level 1 –> Tek kullanıcılı konsol modu. Ağ erişimi yoktur.
    • Run Level 2 –> Çok kullanıcılı konsol (terminal) modu. Ağ erişimi yoktur.
    • Run Level 3 –> Çok kullanıcılı konsol (terminal) modu. Ağ erişimi vardır.
    • Run Level 4 –> Boştur. Kişisel olarak kurgulanabilir.
    • Run Level 5 –> Çok kullanıcılı grafik arayüz (GUI) modu. Sıklıkla buradayızdır.
    • Run Level 6 –> Yeniden başlatma seviyesi.
  • /etc/rc{levelno}.d dizini altında yer alırlar.
  • Hangi run level’da olduğumuzu öğrenmek için: runlevel komutu çalıştırılır.

BÖLÜM 2: TERMİNAL

KONSOL (CONSOLE)

  • Terminal, komut ekranına sahip bir Shell (Kabuk) programıdır, emülatörüdür.
  • Kullanıcı ile Kernel (Çekirdek) arasındaki yorumlayıcı olan Shell’i kullanmamızı sağlar.
  • Grafik arayüzden verilen komutların ve alınan çıktıların metinsel ortamıdır. Grafik arayüzden daha fazla komuta sahiptir.
  • Linux’un birden çok (örn; Bash, C, Korn, Zsh, Dash, Fish vb.) Shell çeşidi bulunmaktadır. En yaygını Bash’tir. (echo $SHELL komutu ile öğrenilebilir.)
Tuş Kombinasyonu
İşlev
Ctrl + A İmleci satır başına götürür.
Ctrl + E İmleci satır sonuna götürür.
Ctrl + B İmleç, birer karakter geri gider.
Ctrl + F İmleç, birer karakter ileri gider.
Alt + B İmleç, bir kelime geri gider.
Alt + F İmleç, bir kelime ileri gider.
Ctrl + XX İmleç, satır başı ile bulunduğu yer arasında gidip gelir.
Ctrl + L Ekranı temizler.
Ctrl + U İmlecin solundaki her şey silinir.
Ctrl + K İmlecin sağındaki her şey silinir.
ESC + T İmleçten önceki iki kelimeyi yer değiştirir.
Ctrl + C Komutu veya görevi durdurur.
Ctrl + Z Çalışan komutu veya görevi arka plana atar. `bg` komutu ile öne çağırılır, `fg` komutu ile arkaya gönderilir.
Tab Komutları otomatik tamamlar. İki kez basıldığında olası komutları listeler.
Ctrl + R Komut geçmişinde arama ve kullanım sağlar.
Ctrl + D Terminali kapatır.