Archive | GNU/Linux İpuçları

Kabuk (Shell)

Kabuk; Unix ve onun türevi sistemlerde, sistemin tüm özeliklerini kullanabilmemizi sağlayan ve bilgisayarımızda çekirdek (kernel) ile kullanıcı arasında kullanıcının verdiği komutları yorumlayarak iletişim kurmaya yarayan programa denir. Kabuk, yalnızca verilen komutları yorumlayıp yerine getirmez. Aynı zamanda gelişmiş, etkileşimli bir programlama ortamıdır. Linux açık kaynak kodlu bir sistem olduğundan, kullanıcı kabuk aracılığıyla işletim sisteminin çekirdeğine varıncaya kadar her tarafta etkilidir. Yine Linux’un açık kaynak kodlu olmasından dolayıdır ki Linux’ta pek çok farklı terminal (emulator) programları ve farklı kabuk çesitleri vardır.

Continue Reading →

Kabuk İşlemleri

Sisteme girdiğiniz anda kabuk programının çalıştırıldığından bahsetmiştik. Bu andan sonra yapacağınız tüm işlemler bu kabuk programı tarafından yönetilir ve denetlenir. Kabuk, klavyeden girilen komutları çalıştırarak bir arabirim görevi yapar. UNIX (ve Linux) altında geliştirilen sayısız kabuk çeşidi ve bunların herbirinin kendine ait özelliği vardır. Her programcı kendi zevkine hitap eden kabuğu seçebilir, sistemde yeralan kullanıcılar farklı kabuklar üzerinde çalışabilirler.

O an hangi kabuk üzerinde yeraldığınızı öğrenmek için echo $SHELL yazın.

$ echo $SHELL /bin/bash

Sıkça kullanılan kabuklar,

sh (Shell ya da Bourne Shell): İlk UNIX kabuğu.

ksh (Korn Shell): sh uyumlu, birçok ek programlama özelliği içeren bir kabuk. Bu kabuk da yaygın bir kitle tarafından kullanılıyor.

bash(Bourne Again Shell): Kullanım kolaylığı bakımından en çok rağbet gören bash, GNU tarafından kaynak kodu olarak dağıtılıyor. bash sh ve ksh uyumluluğunu korurken, özellikle etkileşimli kullanıma yönelik (komut tamamlama, gibi) birçok yenilik de içerir. Bu yazının hazırlandığı 1997 Temmuz ayı başlarında Bash 2.0.1 sürümü çıkmıştı.

csh (C shell): Berkeley Üniversitesi’nde geliştirilen csh’in C diline benzer bir programlama yapısı vardır.

tcsh: csh’ın biraz geliştirilmiş hali.

Yukarıdaki kabuk programlarından sh, ksh ve bash birbirleriyle uyumludur ve yukarıda en ilkelden en gelişmişe göre sıralanmışlardır. Aynı durum csh ve tcsh için de geçerlidir. Kullanılan shell genellikle kişisel bir tercih nedeni olsa da, bütün sistem scriptleri sh ile yazıldığından, sistem yöneticilerine sh ailesinden bir kabuk kullanmaları önerilir.

Kabuk programları genellikle /bin dizini altında yeralır. Kullanıcının sisteme girerken hangi kabuğu kullanacağı /etc/passwd dosyasında yeralır. Bunu değiştirmek için chsh (change shell) komutunu kullanabilirsiniz.

$ chsh
Password:
Changing the login shell for cagri
Enter the new value, or press return for the default

        Login Shell [/bin/sh]: /bin/bash
$

Sisteminizde NIS kullanılıyorsa chsh yerine yppasswd -s komutunu kullanmalısınız.

a- Yönlendirme

Kullanıcı, ekrana yazdığı bir komutun neler yaptığını en rahat şekilde komut tarafından ekrana yönlendirilen bilgilerden anlayabilir. Program, kullanıcıyı bilgilendirme amacıyla mümkün olduğu kadar çok, fakat ortalığı fazla karıştırmamak için de mümkün olduğu kadar az bilgiyi ekrana vermelidir.

b- Standart Girdi, Çıktı ve Hata

Linux’ta, programın ekrana yazılan bilgiyi iki sınıf altında toplayabiliriz. Birincisi, olağandışı bir durumu bildiren standart hata, diğeri de her türlü verinin yazıldığı standart çıktı. Program çalıştığı andan itibaren bu iki kanal üzerinden akan bilgiler, programın çalıştığı sanal terminale yazılırlar. Program girdilerini ise standart girdi aracı olan klavyeden alır.

Eğer bu bilgiler bir ekran boyundan (25 satır) fazla tutuyorsa bazı satırlar programcının gözünden kaçabilir. Bunu önlemek amacıyla standart çıktı ve hata bir dosyaya yazılacak şekilde ayarlanabilir. Yönlendirme olarak da bilinen bu işlem UNIX altında (DOS’ta olduğu gibi) > karakteri ile gerçekleştirilir.

Örnek olarak o an bulunduğunuz dizinde yeralan dosyaları ekrana getirin :

$ ls -al

Bu komut, standart çıktı olarak dosyaların bilgilerini ekrana getirecektir. Bu çıktıyı, bir dosyaya yönlendirelim ve dosyanın içeriğine göz atalım:

linux:~$ ls -al > liste
linux:~$ cat liste
total 16
drwxr-xr-x   5 gorkem   users        1024 Feb 13 13:10 .
drwxr-xr-x   4 root     root         1024 Jan  7  1980 ..
-rw-r--r--   1 gorkem   users         390 Feb 13 12:56 .Xdefaults
-rw-r--r--   1 gorkem   ftpadm       2016 Feb 13 13:09 .bash_history
-rw-r--r--   1 gorkem   users           1 Feb 13 12:57 .bashrc
-rw-r--r--   1 gorkem   users         163 Nov 24  1993 .kermrc
-rw-r--r--   1 gorkem   users          34 Nov 24  1993 .less
-rw-r--r--   1 gorkem   users         114 Nov 24  1993 .lessrc
drwxr-xr-x   2 gorkem   users        1024 Jan  7  1980 .term
-rw-r--r--   1 gorkem   users          87 Feb 13 12:56 .xinitrc
-rw-r--r--   1 gorkem   users        2795 Feb 13 13:06 adres
-rw-r--r--   1 gorkem   users           0 Feb 13 13:10 liste
drwxr-xr-x   2 gorkem   users        1024 Feb 13 12:54 mail
drwxr-xr-x   2 gorkem   users        1024 Feb 13 12:54 perl
-rw-r--r--   1 gorkem   users           0 Feb 13 13:10 typescript
linux:~$

> karakteri standart hatayı dosyaya yönlendirmez. Bu işlem için 2> kullanılır. Ama hatayı görebilmek için, hata yaratan bir komut yazmalıyız, değil mi ?

$ ls /deneme
/deneme : No such file or directory
$ ls /deneme 2> hata
$ cat hata
/deneme : No such file or directory

Aşağıdaki komutun işletilmesinin ardından standart çıktı oku1 dosyasına, standart hata ise oku2 dosyasına yazılacaktır. Bu dosyaları komutu çalıştırdıktan sonra incelemek suretiyle neler olup bittiğini anlamak mümkün olur.

$ mkdir ~/deneme           (deneme isimli bir dizin yarat)
$ touch ~/deneme/gecici    (gecici isimli bir dosya yarat)
$ cat ~/deneme 2>oku2 >oku1

Kabuk, standart çıktı ve standart girdi için sırayla 2 ve 1 numaralarının kullanımına izin verir. Yukarıda yeralan son komutta, standart hata mesajları için 2 kullanılarak hataların oku2 dosyasına yazılmıştır. Aşağıda, çekirdek derlemek için sürekli kullandığım program yeralıyor. Yönlendirme sayesinde ekrana gelmesi gereken mesajlar kullanılmayan 9. sanal konsola yönlendiriliyor.

# make config
# make dep > /dev/tty9
# make clean > /dev/tty9
# time make zImage > /dev/tty9

Son satırdaki time komutu, kendinden sonra gelen komutun ne kadar zaman içinde çalıştırıldığını gösterir. Çekirdek derlemede geçen zaman, makinanın gücü hakkında bir fikir verebilir. Peki ne hata, ne de çıktıyı ekranda görmek istemiyorsam ne yapmalıyım ? Bunun için standart çıktı ve hatayı biraraya getirerek yönlendirilen her çıktının kaybolduğu “kara deliğe” atmak yeterlidir:

$ ls /deneme > /dev/null 2>&1

Yukarıdaki komutun yazılış sırasına dikkat edin.

Standart çıktı ya da standart hatayı yönlendirirken, > işareti kullanırsanız: dosya yoksa, oluşturulur ve komutun çıktısı dosyaya yazılır. Dosya varsa, içeriği yok olur, ve komutun çıktısı dosyanın yeni içeriği olur. Var olan bir dosyayının eski içeriğini tamamen silmek değil de komutun çıktısını dosyaya eklemek istiyorsanız >> kullanmalısınız. Bu durumda dosya varsa komutun çıktısı dosyanın eski içeriği korunarak sonuna eklenir, dosya yoksa oluşturulur ve komutun çıktısı dosyaya yazılır. Örneğin:

$ echo deneme1 >>deneme.txt
$ cat deneme.txt
deneme1
$ echo deneme2 >>deneme.txt
$ cat deneme.txt
deneme1
deneme2
$

Örnekte görüldügü gibi ilk komut deneme.txt dosyasını oluşturdu. İkincisi ise oluşan dosyanın içeriğini koruyarak ikinci komutun çıktısını bu dosyanın sonuna ekliyor.

Standart hata ve çıktıya ek olarak UNIX’in desteklediği bir yönlendirme daha vardır: Standart girdi sayesinde bir dosyayı oluşturan satırlar, bir komut veya programa yönlendirilebilir. Daha önce bir metin editor kullanarak hazırlamış olduğumuz raporu patrona kısa yoldan göndermek için,

$ mail -s "rapor" patron < rapor.txt

Dosyanın içeriği, mail komutuna girdi olmuş ve rapor.txt dosyası patron kullanıcısına “rapor” konu başlığıyla e-posta ile gönderilmiştir.

c- Boru (pipe) İşlemleri

Bazı durumlarda, bir komutun çıktısı diğer bir komuta yönlendirilebilir. Başka bir deyişle, komutun standart çıktısını bir dosyaya değil, bu çıktıyı işleyecek başka bir komuta yönlendirmek istiyorsunuz. Bu amaçla UNIX altında (yine DOS’ta olduğu gibi) boru (|) karakteri kullanılır. Bu karakter, kendinden önce gelen komut veya komut serisinin çıktısını, kendinden sonra gelen komuta gönderir. Örneğin bir dizinde yeralan tüm dosyaları yazıcıya aktarmak için,

$ ls -al | lpr

komutları kullanılabilir. Artık ls -al komutunun ekrana vermesi gereken tüm bilgiler, lpr komutu aracılığıyla yazıcıya gönderilmiştir. İlk komutun standart çıktısı, ikinci komuta standart girdi olarak atanır. Diğer bir örnekte, README dosyasında kaç satır olduğu bulunuyor. Bir dosyadaki veya komut çıktısındaki satır, karakter ve kelime sayılarını bulmak için wc komutunu kullanabilirsiniz.

$ who | wc -l
40

Yönlendirme ve pipe işlemleri bazen insanın kafasını karıştırabilir. Yönlendirme, bir programdan bir dosyaya yapılabilir, fakat bir programdan başka bir programa yönlendirme yapamazsınız. Benzer şekilde, iki dosyanın arasında pipe işlemi uygulamak mümkün olmaz.

Şimdi de biraz karışık bir örnek:

# ps -aux | grep inetd | grep -v grep|awk '{print $2}' | xargs kill -1

Yukarıdaki örnek zorlama bir örnek değil, bir Linux sistem yöneticisinin her an kullanması gerekebilecek türden. Bu örneği burada ayrıntılı olarak açıklamayacağız, sadece pipe kullanarak ne kadar fazla sayıda komutun birbirine bağlanabildiğini göstemek amacıyla verdik. Bu ve benzeri komutların ayrıntılı açıklamaların kabuk programlamayla ilgili bölümde bulabilirsiniz.

d- Çokgörevlilik

UNIX’in en büyük silahlarından biri süreçlerdir. Her süreç sistemde bağımsız çalışan, birbirini etkilemeyen ve herbiri kendi kaynağını kullanan programdır. Süreçler arkaplanda veya kabuğun kontrolünde çalışabilir. Çekirdek, her sürecin kullandığı sistem kaynağından haberdar olur ve bu kaynakların süreçler arasında adilce paylaşılmasından sorumludur.

Bir süreç, aksi belirtilmedikçe çalıştığı süre içinde klavyeden bilgi alır ve ekrana bilgi verir.

Kullanıcıların haberi bile olmadan çalışan süreçler, Linux makinasındaki G/Ç işlemlerini gerçekleştirebilmek için sürekli faaliyet içinde bulunurlar. Onlarca süreçten bazıları kullanıcıların sisteme girmesini sağlarken (getty) bazıları da WWW ve FTP gibi İnternet tabanlı istekleri yerine getirir (httpd, ftpd).

Arkaplanda Çalıştırma

Bir komutu arkaplanda çalıştırmak için, komutun sonuna & karakteri getirin. Komutu girdikten sonra tekrar kabuk istemcisine düşecek ve kaldığınız yerden devam edebileceksiniz. Program, arkaplanda diğer süreçlerle çakışmadan bir süre çalışır ve işi bittiğinde durur.

$ sort buyuk_dosya > buyuk_dosya.sirali &
[1] 772

Komutun arkaplana atılmasından sonra ekranda yeralan 1 , sürecin sıra numarasını, 772 sayısı ise süreç kimliğini (Process ID) gösterir. Her program, sistem kaynaklarını biraz daha azalttığından Linux’çuların deyimiyle makina yavaşlar.

Çalışan programların listesini görmek için ps komutunu kullanın. Hiç parametre vermeden yazılırsa sadece üzerinde çalışılan kullanıcının süreçleri ekrana gelir. Sık kullanılan bir başka parametre dizisi de uax tir. Bu sayede sistemdeki o anda çalışan tüm programlar daha ayrıntılı bir şekilde ekrana listelenir.

$ ps
PID TTY STAT  TIME COMMAND
   76 v02 S     0:00 -bash
  111 v02 R     0:00 ps
$ ps -aux
USER       PID %CPU %MEM SIZE  RSS TTY STAT START   TIME COMMAND
bin         63  0.0  5.5   64  364  ?  S    11:12   0:00 /usr/sbin/rpc.portmap
gorkem      76  0.0  9.7  101  644 v02 S    11:12   0:00 -bash
gorkem     112  0.0  5.0   59  332 v02 R    11:16   0:00 ps -aux
root         1  0.0  5.0   56  332  ?  S    11:12   0:00 init [5]
root         6  0.0  4.2   35  284  ?  S    11:12   0:00 bdflush (daemon)
root         7  0.0  4.2   35  284  ?  S    11:12   0:00 update (bdflush)
root        48  0.0  5.1   45  340  ?  S    11:12   0:00 /usr/sbin/crond -l10
root        59  0.0  5.5   53  364  ?  S    11:12   0:00 /usr/sbin/syslogd
root        61  0.0  5.0   44  336  ?  S    11:12   0:00 /usr/sbin/klogd
root        65  0.0  5.5   62  364  ?  S    11:12   0:00 /usr/sbin/inetd
root        67  0.0  5.8   79  388  ?  S    11:12   0:00 /usr/sbin/rpc.mountd
root        69  0.0  6.0   88  400  ?  S    11:12   0:00 /usr/sbin/rpc.nfsd
root        75  0.1  9.9  115  660 v01 S    11:12   0:00 -bash
root        77  0.0  4.6   52  304 v03 S    11:12   0:00 /sbin/agetty 38400 tty3
root        78  0.0  4.6   52  304 v04 S    11:12   0:00 /sbin/agetty 38400 tty4
root        79  0.0  4.6   52  304 v05 S    11:12   0:00 /sbin/agetty 38400 tty5
root        80  0.0  4.6   52  304 v06 S    11:12   0:00 /sbin/agetty 38400 tty6
root        81  0.0  5.5   42  368  ?  S    11:12   0:00 gpm -t ms

Burada yeralan bilgiler sırasıyla :

 

  • PID: süreç numarası. Her sürecin farklı bir numara alması sistem tarafından düzenlenir.
  • %CPU: İşlemcinin % olarak ne kadarı süreç tarafından kullanılıyor ?
  • %MEM: % olarak hafızada kapladığı yer
  • SIZE: Programın toplam kullandığı bellek alanı (kilobyte)
  • RSS: Programın bellekte kapladığı gerçel alan. Bu değer paylaşılan sistem kütüphaneleri (shared library) nedeniyle genellikle SIZE değerinden küçüktür.
  • TTY: sürecin çalıştırıldığı (sanal) terminal
  • STAT: süreç o sırada ne yapıyor ?
    • S: Uyumakta, bu durum genellikle sürecin bir G/Ç işlemi (örneğin fare’nin hareketi ya da ağdan gelecek veriler) beklemesi sırasında olur.
    • R: Çalışabilir. Çalışabilir süreçler, gereksinim duydukları bütün sistem kaynaklarına sahip olan süreclerdir. Çekirdek (tek işlemcili bir makinada) belirli aralıklarla bu süreçlerden sadece birini çalıştırır.
    • T: Durmuş. Bu durum sürecin kullanıcı tarafından (örneğin Control-Z tuşlarına basılarak) durdurulmasında görülür.
    • Z: Zombie. Bu tür süreçler, kendisini çalıştıran sürece mesaj bırakamadıklarından takılmış süreçlerdir. Öldürülemezler ancak sitem kaynaklarını da kullanmazlar.
    • D: Kesilemez uykuda. Bazı G/Ç işlemleri o sırada bu işlemi yapan sürecin kesilmemesini gerektirir. Böyle durumdaki süreçleri de ilgili G/Ç işlemi bitinceye kadar öldüremezsiniz.
  • START: sürecin çalıştığı zaman
  • COMMAND: komut satırından girilen programın ismi

ps komutuna bilgisayar üzerinde çalıştığınız her an ihtiyaç duymanız mümkündür, bu yüzden çeşitli parametrelerle kullanmayı öğrenmelisiniz.

Klavye Üzerinden Kesinti

Linux (ve UNIX) altında, klavyeden bazı tuş kombinasyonları yardımıyla çalışmakta olan program kesintiye uğratılabilir.

Klavyeden kabuk komut satırına yazılan bir programın uzun sürmesi halinde, eğer daha önceden komutun arkasına & işareti koyup arkaplanda çalışır halde bırakılmamışsa, klavyeden yapılan bir müdahele ile durdurulup arkaplanda çalışır hale getirilebilir. Örnek vermek gerekirse, uzun sürmesi beklenen bir komutu klavyeden yazalım ve ardından Control-Z tuşlarına basalım:

linux:/etc/rc.d# find /usr -name "o*" -print
/usr/bin/od
/usr/lib/lilo/doc/other.fig
/usr/lib/lilo/doc/other.tex
/usr/man/man1/od.1.gz

[1]+  Stopped                 find /usr -name "o*" -print
linux:/etc/rc.d#

Bu esnada sürecin çalışmasına ara verilmiş, fakat program tamamen durmamıştır. Programın çalışmasını arkaplanda sürdürmek için bg komutunu kullanın.

$ bg

Bu komutu tekrar komut satırında çalışacak ve klavyeden bilgi girilecek şekilde terminale bağlamak için fg yazın:

$ fg

Bir programı çalıştırmaya başlattıktan sonra tamamen durdurmaya karar vermişseniz klavyeden Control-C tuşlarına basın.

Durdurulup arkaplanda çalışmaya yönlendirilen süreçlere kısaca görev ismi verilir. Tüm görevleri görebilmek için

$ jobs

yazın. Görevler, birden fazla oldukları zaman sıra numarası ile belirtilirler.

Süreçlerin Sona Erdirilmesi

Her an çalışan süreçlerden biri veya birkaçı, beklenmedik döngüye girebilir. Bunun sonucu olarak sistemin kaynaklarını, özellikle hafızayı tüketici bir duruma gelebilir. Bu tür kısır döngüye giren süreçleri bulup, eğer hayati önem taşımıyorlarsa `öldürmek’ gerekir. Süreci öldürmekten kasıt, programı tamamen durdurarak sistemle ilişkisini kesmektir. Bu sayede programın hafızada kapladığı bölge serbest kalacak, çekirdek de hafıza düzenlemesini tekrar yaparak başka süreçlere daha fazla yer ayıracaktır. Bir süreci öldürmek için kill komutu kullanılır. Yukarıdaki 67 numaralı sürece ait /usr/sbin/rpc.mountd programını öldürmek için şunları yazın :

$ kill 67

Birçok süreç sizden bu mesajı aldıktan sonra, dosya sistemi üzerinde yarattığı geçici dosyaları, dosyalar üzerine koyduğu kilitleri temizlemek gibi yapması gereken işlemleri yaptiktan sonra çalışmasına son verecektir. Eğer öldürmeye çalıştığınız süreç herhangi bir nedenle takılmışsa ve bu komuta tepki vermiyorsa aşağıdakini deneyin:

$ kill -9 67

Artık programın sistemle ilişkisi tamamen kesilmiştir. Kill komutu, -9 seçeneğiyle sürece 9 numaralı sinyali gönderir. Bu sinyali alan sürecin yukarıda sözü edilen iki özel durum dışında çalışmayı sürdürmesi olanaksızdır. -9 seçeneğini özellikle sistem süreçleri üzerinde gerekmedikçe kullanmamalısınız. Diğer sinyaller ve anlamları yeri geldikçe diğer bölümlerde anlatılacaktır.

0

GNU/Linux Masaüstü Ortamları

GNU/Linux açık kaynak kodlu olduğu için, Linux altında, GNU/Linux severler tarafindan değişik masaüstü ortamları oluşturulmustur ve oluşturulmaktadır. Bunların başlıcaları; GNOME, KDE, XFCE ve LXDE’dir. Farklı kullanıcı kitlelerine hitap eden bu masaüstü ortamlarının hangisinin daha iyi olduğu hakkında yorum yapmak yanlış olur, çünkü her bir masaüstü ortamının farklı özellikleri olduğu gibi her bir kullanıcının da farklı istekleri bulunuyor. Sistemler kurulduklarında üzerlerinde bir masaüstü ile gelir fakat birçok GNU/Linux sürümü üzerinde gelen masaüstünün değiştirilmesine izin verir. Bunun içindir ki birçok GNU/Linux sistemi opsiyonel olarak nitelendirilir.

Continue Reading →

2013 yılı Temmuz ayı itibariyle masaüstü ortamlarının Türkçe çeviri durumları şöyleydi: (Aşağıdaki veriler nyucel.com‘dan alınmıştır.)

KDE: Geçen yıl %78 olan Türkçe çeviri oranı %84‘e çıkmış.
Gnome: Geçen yıl %88 olan çeviri oranı %80‘e düşmüş.
LXDE: Geçen yıl %100 olan çeviri oranı %89‘a düşmüş.
Enlightenment: Geçen yıl %100 olan çeviri oranı %59‘a düşmüş.
Fluxbox: Geçen yıl %100 olan çeviri oranı yeni sürüm çıkmasına rağmen hala %100.
XFCE: Geçen yıl %100 olan çeviri oranı %69‘a düşmüş.

Geçen yıla göre KDE ve Fluxbox haricindeki tüm masaüstlerinde ciddi düşüşler var. Bütün masaüstü ortamaları bir yıl içinde yeni sürümler çıkardılar, çoğu çeviri altyapısını yeniledi. Yazılım canlı olunca çevirisini olduğu yerde bırakmak çeviri oranının aşağıya düşmesine neden oluyor.

Tüm işletim sistemlerinde çalışan sürümleri bulunan ofis paketi olan LibreOffice de ise durum geçen yıla göre çok iyi. Hem arayüz, hem de yardım içeriği neredeyse tamamen Türkçeleştirilmiş durumda. Çok yakın zaman önce 4.1 sürümünü çıkaran LibreOffice’in bu sürümünün çevirisinin yetiştirilmesi önceden olduğu gibi Zeki Bildirici‘nin kişisel çabalarıyla oldu.

0

Richard Matthew Stallman

Richard Matthew Stallman,  1953’de New york kenti’nin 5 ana bölgesinden biri olan Manhattan bölgesinde  Daniel Stallman ve Alice Lippman’ ın çocuğu olarak dünyaya geldi. Dünya üzerinde “Özgür Yazılım” fikrini ilk ortaya atan kişi Richard Matthew Stallman, Özgür Yazılım aktivisti, hacker ve yazılım geliştiricisidir. 1971’de, 18 yaşındayken Harvard Üniversitesi’nde daha ilk senesinde MIT’in yapay zeka laboratuarlarında programcı olarak çalışmaya başlamıştır. Richard M. Stallman 1974’te fizik bölümünden mezun oldu.

Continue Reading →

MIT’de geçen günlerinde yavaş yavaş hacker camiasında kendinden söz ettirmeye başlayan Richard M. Stallman hacker dünyasında kendisini “RMS” rumuzu ile tanıtmıştır.

RMS MIT’de işletim sistemi geliştiren bir grup ile çalışırken, 1975’te, şu an bir çok kişinin kullandığı ve genişletilebilir bir metin editörü olan Emacs‘ın ilk versiyonunu yazmıştır.

1970 ve 1980’lerde yazılım firmalarının neredeyse geliştirdikleri her yazılım için lisans; özellikle 1976 Amerika Telif Hakları Yasası gelmesiyle beraber özel yazılımların da artmasına sebep olmuştur. Böylece yazılım dünyasında birçok kapalı kaynak kodlu, kopyalama ve dağıtma izinleri olmayan yazılımlar oluşmuştur.

Stallman’ı kızdıran en son konu, Brian Reid isimli yazılımcının geliştirdiği “Scribe” adlı programın kaynak kodlarına ulaşamamasının yanında lisans ve yazılım hakları için programa “zaman limiti(Time Bomb)” kısıtlamasının eklenmiş olmasıdır.

Yıl 1983 ve RMS yaşadığı olaylar sonucunda zihninde oluşmuş fikirleri insanlık ile somut olarak paylaşmak için GNU projesini oluşturur. Richard Matthew Stallman’ın “Yazılımın Neden Sahibi Olmamalıdır?” adlı makalesine de buradan  ulaşabilirsiniz.

Kısacası, özgür yazılım denilince akla ilk gelen isimlerden biri Richard Matthew Stallman’dır. Bir yazılım gurusu ve felsefecisi olan Stallman’ın kişisel sayfasına da buradan erişebilirsiniz.


Richard M Stallman: Four Freedom

0

Linux İşletim Sisteminin Yapısı

LINUX işletim sistemi hiyerarşik(katmanlı) bir yapıya sahiptir; altta donanım ögeleri, üzerinde LINUX işletim sistemi çekirdeği bulunur. Tüm programlar çekirdek aracılığıyla donanım kaynaklarına erişirler. Bu yüzden LINUX, işletim sisteminin çekirdeğine verilen isimdir. LINUX gerçek anlamda Intel 32 bit ve 64 bit işlemci mimarilerini desteklerken bunun yanı sıra Motorola ve Sparc işlemcilerle de çalışabilmektedir. UNIX türevi olmasının verdiği avantajla UNIX üzerinde çalışan bir çok uygulama LINUX sistemi üzerine taşınmıştır.

Continue Reading →

Linux Dosya Sistemi Yapısı

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,

/bin
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.
/dev
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.
/etc
Sistem yapılandırma dosyaları. Bu dizinde çalıştırılabilir dosyalar bulunmamalıdır.

skel
Buradaki dosyalar, kullanıcı hesabı açıldığında kullanıcının ev dizinine kopyalanır.
rc.d
Bu dizinin içinde, init sürecinin başvurduğu yapılandırma dosyaları vardır. Bunlara “rc dosysları” da denir.
passwd
Kullanıcı veritabanı
fstab
Linux’un açılışı esnasında bindirilecek dosya sistemleri burada listelenir.
group
passwd’e benzer şekilde kullanıcıların gruplarını tutar.
inittab
init daemon için yapılandırma dosyası
motd
Kullanıcı sisteme girdikten sonra ekranına basılması istenen mesaj burada tutulur.
profile
Kullanıcı sisteme girdiği zaman çalıştırılan dosya (csh ve sh türevi kabuklar için)
shells
Sistemde kullanılabilecek kabuk isimleri burada tutulur.
login.access
login komutu için yapılandırma dosyası. Sisteme girişi kullanıcı bazında sınırlamak için kullanılir.

/home
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)
/lib
Kütüphane dosyaları.
/mnt
Geçici mount edilen dosya sistemleri. Sadece bu iş için kullanıldığından sistem görevlisine zaman kazandırır.
/proc
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.

cpuinfo
işlemci modeli, tipi ve performansını bildirir.
devices
Halihazırda çalışan çekirdek içinde desteği bulunan aygıt sürücülerini listeler.
dma
Hangi dma kanallarının kullanıldığını belirtir.
filesystems
Halihazırda çalışan çekirdek içinde desteği bulunan dosya sistemlerini listeler.
interrupts
Hangi kesintilerin kullanımda olduğunu söyler.
iports
Halen hangi giriş/çıkış iskelelerinin kullanıldığını belirtir.
kcore
Sistem hafızasının görüntüsü

/root
Sistem görevlisinin ev dizini. Mümkünse bu dizini sistemdeki diğer kullanıcıların görmeyeceği şekilde ayarlayın.
/sbin
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.
/tmp
Geçici dosyaların koyulduğu dizin. Belirli zaman aralıklarında temizlenmelidir.
/usr
Diğer önemli sistem dosyalarını tutar. Bu bölüm genelde en kalabalık dizindir, zira yeni kurulan tüm programlar buraya konulur.

X11R6
X Pencere sistemi bilgileri tutulur.
doc
Belge ve dökümanlar, genellikle HOWTO ve FAQ dosyaları.
lib
Bazı kütüphaneler
man
Man dosyaları
src
Bazı kaynak dosyaları ve linux çekirdeğini oluşturan kodları (/usr/src/linux) içeren dizin.
sbin
Kök dosya sisteminde yeralması gerekmeyen çalıştırılabilir sistem görevlisi dosyaları

/var
Sürekli değişen sistem bilgileri burada tutulur. İstisnalar dışında diğer makinalarla paylaştırılmaz.
adm
Sistem yönetimini ilgilendiren kayıtlar
preserve
Sistemin göçmesinden sonra zarar görmesi mümkün dosyaların kaydedildiği yer.
spool
Sonra işlenecek olan veriler buraya atılır (e-posta gibi)

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ılır. 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.

belgeler.org

0

Çekirdek (Kernel) Nedir?

Çekirdek, bilgisayarda donanım (hardware) ve yazılım (software) arasındaki bağlantıyı sağlayan arabirime verilen isimdir. İşletim sistemi çalışırken sistemdeki temel işlemler arasındaki iletişimi kurarak işlemci yönetimi, bellek yönetimi ve G/Ç(giris-çıkış)  işlemleri gibi daha pek çok işlemin yürütülmesinde ve işlemlerin paylaşılmasında görev alır. Linux çekirdeği, Finlandiya’li bilgisayar programcısı Linus Torvalds tarafindan oluşturuldu. İlk resmi sürüm olan Linux1.0, 1994 Mart’ında çıkarıldı ama sadece tek işlemcili 386’lar için desteği vardı.

Continue Reading →

LİNUX ÇEKİRDEĞİ NEDİR?

Bugün insanların dağıtımlarda kullandığı “Linux” adı yalnızca teknik bakımdan çekirdeğin (kernel) adıdır.  Ancak herkesin tartışmasız olarak katılacağı konu, bu çekirdeğin bütün dağıtımlara can verdiğidir.

Linux çekirdeği bundan tam 22 yıl önce Finlandiyalı bilgisayarcı Linus Torvalds tarafından C programlama dili ile tasarlanıp yaratıldı. Kısa süre içerisinde toplanan geliştiriciler ve kullanıcılar diğer Özgür Yazılım Projelerinden (bkz. GNU) derledikleri kodlar ile işletim sistemi oluşturmaya başladılar.

Peki bugün teknolojik aletlerin %75′ inde kullanılan bu çekirdeğin özellikleri nelerdir?

Ne işe yarar ve nasıl çalışır?

Çekirdeğin bir işletim sisteminin kalbi olduğunu söylemiştik. Aslında bu o kadar da abartı bir cümle değil. Çünkü çekirdek en basit açıklamayla yazılım ve donanımı birbirine bağlar ve bir köprü görevi görür.  Linux çekirdeğinin diğer ticari çekirdeklerden ayrılan en önemli özelliği ise tamamen özgür yazılım olmasıdır.

Çekirdeğin bir köprü olması onun en temel görevidir. Bunun dışında CPU soyutlama, IO(giris/ cıkıs)’ları Soyutlama ve diğer çekirdeklerden farklı olarak ünlü olduğu ağ merkezi. Şimdi bu görevlere ve özelliklere kısa kısa değinelim.

CPU Soyutlama

Linux çekirdeği sistemimizde bulunan işlemciye bir soyutlama katmanı katar. Bu sayede bir çok program eş zamanlı çalışıyormuş gibi gözükür. Programların ihtiyacı olduğu kadar işlemciden

yararlanmasını çekirdek sağlar.

Eğer bir linux sistemi üzerindeyseniz iki tür çekirdekten birini kullanıyorsunuzdur. UP ve SMP. UP tek işlemcili SMP ise simetrik çok işlemcili bir çekirdektir.Eğer UP anakarta sahip ve SMP çekirdek kullanıyorsanız. Sisteminiz birçok işlemciden haberdar olmayacaktır. Bu sorunu gidermek için de bir UP çekirdek derlemelisiniz.

IO(giris/cıkıs)’ları Soyutlama

Çekirdek aynı zamanda her türlü dosya girdi çıktı soyutlama görevini de yapar. Disk kontrolorlerinizi değiştirdiğiniz takdirde programlarınız çalışmayacaktır. İşte bu yüzden Linux çekirdeği programların kullanabileceği Unix modüller kullanmaktadırlar.

Ağ Merkezi

Yazının başında da söylediğimiz gibi Linux çekirdeğinin en ünlü ve başarılı olduğu konulardan biri de ağ merkezidir. Güçlü bir ağ yapısı ve TCP/IP desteği vardır. Çekirdek uyumlu, yüksek seviyeli bir arabirim ile ağ üzerinden veri gönderilmesini ve alınmasını sağlar. Ayrıca sizin ethernet karıtınız ile internet iletişimi sağlar. Linux çekirdeği ile evinizdeki bütün ağı modem üzerinden konfigüre edebilirsiniz.

Çekirdeği Yükseltmek

İlk olarak 0.01 versiyonu çıkan Linux çekirdeğinin bugün 3.8.5 sürümü yayınlanmış durumda.

Çekirdeğin güncel sürümlerini;

http://www.kernel.org/pbu/linux/kernel

adresinden elde edebilirsiniz. Birazdan size Linux Mint ortamında, kernelin son sürümüne güncellemeyi anlatacağım fakat bu işleme geçmeden önce bir uyarı yapmakta fayda var. Son yüklenen çekirdek birçok programınızla uyumlu olmayabilir bu yüzden ne yaptığınızdan emin olarak bu işleme başlayın.

İlk olarak CTRL + ALT + T ile terminali açıyoruz.

cd /tmp
wget http://www.dropbox.com/s/hnrrtrocgz16ktz/ubuntu-kernel-3.8.5
chmod +x ubuntu-kernel-3.8.5
sudo sh ubuntu-kernel-3.8.5
sudo reboot

Son işlemden sonra bilgisayarınıza son sürüm kernelinizi yüklemiş bulunuyorsunuz.

uname ­r

kodu ile de kernel versiyonunuzu öğrenebilirsiniz.

Eğer kurulum sonrasında bir sorun ile karşılaşırsanız:

sudo apt-get purge linux-image-3.8.5*

kodu ile son yüklediğiniz çekirdeği silebilir ve eski çekirdeğinizle çalışabilirsiniz.

NOT: Dİkkat edilmesi gereken bir husus da çekirdek sürümünün kararlı veya test olup olmamasıdır. Bunu çekirdek sürümünde yer alan 3.8 rakamları ile anlayabiliriz. Buradaki 8 rakamı çift sayı olup bize sürümün kararlı olduğu söylemektedir. Ama eğer bir tek sayı olsaydı bu sürümün test aşamasında olduğunu ve sıradan kullanıcılar için uygun olmadığını söyler.

selcuk.edu.tr

 

0

Genel Kamu Lisansı (General Public Licence) GPL

Yayımlanan her yazılım, üretici ve kullanıcı haklarını korumaya yönelik bir lisans anlaşması içermektedir. Bilgisayar teknolojilerinde telif hakkı olayına özgür yazılım kavramı ile yeni bir boyut kazandırılmıştır. Richard Matthew Stallman, 1970’li yıllarda MIT (Massachusetts Institute of Technology)’ in Yapay Zeka laboratuarlarında serbest yazılımı bir yaşam şekli olarak benimseyen bir grupla beraber 1980’li yılların başına kadar yazılım geliştirici olarak çalışır. 1984 yılında tamamen özgür yazılımların meydana getirdiği bir işletim sistemi ve işletim sisteminin araçlarının geliştirilmesi çalışması böylece başlar ve çalışmanın adı GNU olarak belirlenir.

Continue Reading →

GNU’ nun açılımı, “GNU is Not Unix”‘tir. Yani “GNU, Unix değildir” anlamına gelir. Yazılan özgür yazılımların bir arada toplanması için 1985 yılında yine Stallman tarafından FSF (Free Software Foundation) kurulur ve GNU yazılımlarını korumak için GPL (General Public Licence) adı verilen yazılım lisansı oluşturulur. Amaç, GPL lisansı ile lisanslanan özgür yazılımların,  özgürlüklerini korumaktır. Özgür yazılımlar genelde ücretsiz ya da çok düşük ücretlidir ama kaynak kodları açık ve ücretsiz olarak dağıtılır.

Zamanla yazılımların özgürlüğünün korunması ve başka telif haklarının esareti altında kalmaması için FSF, GNU Genel Kamu Lisansı’nı(GPL) yayınladı. Richard M. Stallman ‘a ve FSF’ ye göre bir yazılımın özgür olması için şu 4 özgürlüğe sahip olmaları gerekiyor:

Özgürlük no 0: Her türlü amaç için programı çalıştırma özgürlüğü.
Özgürlük no 1: Programın nasıl çalıştığını inceleme ve kendi gereksinimleri doğrultusunda değiştirme özgürlüğü.
Özgürlük no 2: Yeniden dağıtma ve toplumla paylaşma özgürlüğü.
Özgürlük no 3: Programı geliştirme ve gelişmiş haliyle topluma dağıtma özgürlüğü..

1 ve 3 no’lu özgürlükler için yazılımların kaynak kodlarının açık olması şarttır. Eğer yazılımın kaynak kodu yoksa o yazılım özgür yazılım olmaktan çıkar. Çünkü bir yazılımın kaynak kodu olmadan yazılımcılar yazılımları istedikleri doğrultuda geliştirip kendi veya toplum ihtiyaçlarını karşılayamazlar.

GPL,  özellikle programın kaynak kodunun açık olmasının gerekliliğini savunan bir yapıdadır. Bu yüzden GPL’ de temel amaç olarak, şeffaflık, kullanıcının ne kullandığını bilmesi, yazılımın çok kişi tarafından hızlıca geliştirilmesi olarak sayılabilir.

“Açık Kaynak” yazılımı yaygın olarak işbirliği kültürünü ortaya koymaktadır ki bu durum bilgisayar biliminin ilk günlerinden beri varolan bir durumdur. Açık kodlu yazılımlar bilginini paylaşılarak büyümesini hızlandırır ve sanal ortamda işbirliği yapılmasını sağlar. Bu sayede kaliteli, hızlı ve güvenilir programlar oluşturulabilir ve yazılımcının kendisini geliştirmesinde büyük rol oynar. Bu işbirliğini günümüzün büyük şirketleri de desteklemeye başladılar. Hatta bir çok ülke açık kaynak kodlu yazılımın gelişimine katkıda bulunmaktadır. Peru, İsrail, İspanya ve Almanya kapalı kaynağın ve özel lisanslı (proprietary) yazılımların mali açıdan karşılanamaz ve özellikle güvenlik söz konusu olduğunda kabul edilemez olduğuna karar veren ülkelerden sadece birkaçıdır. Bu nedenle bu ülkelerde açık kaynaklı sistemlere geçmek için büyük adımlar atılmaktadır.

Türkiye için açık kaynak kodlu yazılımın daha gerekli ve yararlı olacağı apaçık ortadadır. Kapalı kodlu yazılımla her zaman başkalarına bağımlı kalınmaktadır. Serbest yazılımı desteklemek, açık kodlu işletim sistemlerin kullanımını yaygınlaştırmak ve bilinç oluşturmak, ekonomik gelişime katkıda bulunacak ve işletim sistemi alanında dışa bağımlılığa engel olacaktır.

GNU GENERAL PUBLIC LICENSE

1

Linus Torvalds

Linus Torvalds, 28 Aralık 1969’da Finlandiya’nın başkenti ve aynı zamanda en büyük kenti olan Helsinki’de Anna ve Nills TORVALDS’ ın oğlu olarak dünyaya geldi. Adı, Nobel ödüllü ünlü kimyacı Linus Pauling’ten gelmektedir.Torvalds ailesi, Finlandiya’daki isveççe konuşan azınlığa dahildiler. Yaklaşık 5 milyon olan Finlandiya nüfusunun 300 bin kişilik kısmını bu kesim oluşturmaktaydı. Annesi ve babası ayrıldıktan sonra genelde annesiyle, bazen de büyükanne ve büyükbabasıyla beraber yaşadı. Linus Torvalds, ebeveynleri ayrılmış olmasına rağmen mutlu bir çocukluk yaşadı. Linus üzerinde en çok etkiye sahip olan insanlardan biri de anne tarafından büyükbabasıydı. Büyük babası Leo Toerngvist Helsinki Üniversitesi’nde istatistik profesörüydü. Bunun yanısıra babası, 1970’lerin ortasında 1 sene Moskova’da çalışmış, daha sonra radyo muhabiri olmuştu. Annesi, bir Finlandiya gazetesinde çevirmen olarak çalışıyordu, aynı zamanda haberlerin grafiksel tasarımını yapıyordu. Baba tarafından büyükbabası bir Fin gazetesinde yazı işleri müdürüydü ve amcası da Finlandiya televizyonu için çalışıyordu.

Continue Reading →

Linus, erken yaşlarda kuvvetli bir okuma alışkanlığına sahip olmuştu.Matematik ve programlama, Linus’un tutkuları haline gelmişti. 1970’lerin ortalarında, Toerngvist Linus’a Commadore VIC20 model bir bilgisayar aldı. Bu onun hayatını kökten değiştiren bir gelişmeydi. Fakat Linus, yakın zamanda bu bilgisayardan sıkıldı, çünkü kullanabileceği sadece birkaç tane program vardı, bu yüzden yenilerini yazmak için çalışmalara başladı. Tüm dikkatini ve ilgisini bu alana vermişti, programlama ile ilgili bir sürü kitap almıştı ve bu kitaplar öğrenme hevesine dayanmıyordu. Daha 12 yaşındayken basit oyunlar yazabiliyordu. İlk başlarda temel programlama dillerini kullansa da sonradan daha zor fakat daha güçlü bir dil olan Çevirici Dili’ni (Assembly Language) kullanmaya başladı.Böylece matematik ve programlama, Linus’un tutkuları haline gelmişti.

LINUX’UN DOĞUŞU

Linus 1987’de bir Sinclair QL aldı.  Dünyanın ilk ev kullanımı için geliştirilmiş bilgisayarı olan Sinclair QL  ayrıca dünyanın ilk 32-bitlik bilgisayarıydı. 7.5 Mhz hızında Motorola 68008 işlemciye ve 128 KB RAM’e sahipti. Sinclair QL, büyükbabasının Commodore Vic20’sinden sonra onun için büyük bir gelişmeydi. Fakat, yazma korumasına sahip ROM’da bulunan işletim sisteminden dolayı bilgisayarın yeniden programlanmaya kapalı olduğunu gördükten sonra sevinci kursağında kaldı.

Linus, 1988 yılında Finlandiya’nın en kaliteli eğitim kurumu olan Helsinki Üniversitesi’ne kayıt yaptırdı. O zamana kadar bilgisayar programcılığıyla uğraştığı için doğal olarak bilgisayar bilimleri branşını seçti. Birçok ciddi yazılım projesinde görev aldı. 1990’da ilk C Programlama Dili dersini aldı. Daha sonraları bu dili, Linux sisteminin çekirdeğini (kernel) yazarken kullanacaktı. 1991 yılına 33Mhz Intel 386 işlemci kullanan ve 4MB’lık hafızaya sahip yeni bir IBM alarak girdi.

Bu işlemci, Intel’in önceki çiplerine kıyasla muazzam bir gelişme kaydettiği işlemci ailesinin bir temsilcisiydi. Donanımdan memnun olmasına rağmen, bir süre sonra bilgisayarla beraber gelen MS-DOS işletim sisteminin 386 çiplerinin gelişmiş yeteneklerini kullanabilmek için yeterince gelişmiş olmadığını gördü. Bu yüzden de üniversitenin bilgisayarlarından aşina olduğu ve MS-DOS’tan daha güçlü ve kararlı olan UNIX tabanlı bir işletim sistemi kullanmaya karar verdi. Hemen ardından yeni bilgisayarı için bir UNIX sürümü aramaya başladı. Fakat, 5000$’dan daha ucuz bir fiyata temel bir sistem bulamadı. En sonunda MINIX’te karar kıldı. MINIX kullanmaya başlayan Linus Torvalds,  kullandığı terminal emülatörünün çok kullanışsız olduğunu gördü. Bu yüzden kendi terminal programını yazmaya karar verdi. Amacı tamamen UNIX gücünü kişisel bilgisayarında görmek oldugundan terminal emülatörünü MINIX üzerinde değil, sadece donanım üzerinde geliştirecekti. Fakat kendi terminal emülatörünü tamamlayıp internete bağlandıgında yanlıs olan birşeyler farketti, geliştirdiği program herhangi bir işletim sistemi üzerinde çalışmadığından verilerini kaydetmek ve göndermek gibi işlemlerde kendi sürücüsüne sahip olması gerektiğini anladı. Ürettiği programı tam anlamıyla geliştirmek demek, yeni bir işletim sistemi yazmak demekti.

Artık Linus’ un aklında bir terminal programından çok bir işletim sistemi geliştirmek vardı. Bunun yanı sıra üniversitesinde onu zorlayacak faktörlerin pek az olması sebebiyle eğitimine ara verip daha  çok projesi üzerinde yoğunlaştı 5 Ağustos 1991’de, başlangıç düzeyindeki işletim sistemi çalışmalarını comp.os.minix adresli MINIX habergrubunda :

“Minix kullanan herkese selam
386 AT clone’ları için bir (bedava) işletim sistemi geliştiriyorum. Nisan’dan beri üzerinde çalışıyorum ve artık neredeyse hazır. Sizlerden Minix’de sevdiğiniz ya da sevmediğiniz şeylerle ilgili bilgi almak istiyorum çünkü geliştirdiğim işletim sistemi Minix’e oldukça benziyor (dosya sisteminin yapısı bazı pratik nedenlerden dolayı ve bazı diğer özellikler). Son olarak bash (1.08) ve gcc (1.40) ekledim ve şimdilik herşey yolunda görünüyor. Bu da bir kac ay içerisinde gözle görülür bazı sonuçlara varacağımı gösteriyor. Bu yüzden insanların en çok hangi özellikleri istediğini bilmek istiyorum. Tüm önerilerinize açığım ama hepsini uygulayacağıma söz veremem Linus.
Not: İşletim sistemim muhtemelen AT-hard diskler dışında hiçbir şeyi desteklemeyecek çünkü elimden gelen sadece bu” sözleriyle duyurdu. Daha sonra 5 EKim 1991’de temel özellikleriyle beraber ilk resmi Linux sürümü olan 0.02’yi yayınladı ve bunu bilgisayar tarihinin en ateşleyici, en bir araya getirici mailiyle duyurdu:
MINIX 1.1’in güzel günleri için özlem mi duyuyorsunuz? Erkeklerin erkek olduğu ve kendi aygıt sürücülerini yazdıkları zamanların? Kendi ihtiyaçlarınıza göre geliştirip değiştirebileceğiniz bir işletim sisteminiz olmasına rağmen, yapacak bir projeniz mi yok? Herşeyin MINIX üzerinde çalışıyor olması, sinirlerinizi mi bozuyor? Yaklaşık 1 ay önce belirttiğim gibi AT-386 bilgisayarları için MINIX’in özgür bir versiyonu üzerinde çalışıyorum. Çalışmalarım en sonunda kullanılabilecek seviyeye ulaştı (buna rağmen istediğiniz amaca bağlı olmayabilir) ve daha geniş dağıtım için kaynakları açıklamak istiyorum. Daha sadece versiyon 0.02, fakat bash/gcc/gnu-make/gnu-sed/compress vb. altında başarıyla çalıştırdım. Projemin kaynakları nic.funet.fi (128.214.6.100) adresindeki /pub/OS/Linux klasöründe bulunabilir. Bunun yanında klasörde bazı READ-ME dosyaları ve Linux altında çalıştırmak için birkaç binary bulunuyor.(kabuk, güncelleme ve gcc, daha ne isteyebilirsiniz =) . Çekirdek kodlarının tamamını görebilirsiniz, hiç Minix kodu kullanılmadı. Kütüphane kaynakları kısıtlı seviyede özgür kullanıma açık, bu sebeple şu an dağıtımı olanaksız. sistem “as-is” olarak derlenebiliyor ve çalıştığı biliniyor.

Bu gelişmelerden sonra Linus’un aklını lisans konusu meşgul etmeye başladı. Sistemin kodlarını tamamen dağıtan FSF lisansıyla ünlü özgür yazılım savunucusu ve programcı Richard Stallman’ın geliştirdiği GPL (GNU General Public License) lisansı arasında seçim yapmakta zorlanırken, büyük buluşma gerçekleşti.

MIT’de çalışan Richard M. Stallman GNU Projesi’ni 1983’te başlatmıştı. Yazılımın, bilginin topluma ait olması, özgür olması gerektiğini savunuyordu ve 1990 yılında işletim sisteminin çekirdeği (kernel) haricinde tüm görsel arayüzünü tamamlamıştı. Fakat görsel arayüzü olmasına rağmen bu programların tümünü bir çatı altında toplayacak bir çekirdeğe sahip olmayan bir işletim sistemi vardı elinde ve bu, hiçbir anlam ifade etmiyordu. İhtiyacı olan çekirdek için araştırmalara başladı ve yorucu bir süreç sonunda nihayet Linus Torvalds’ın geliştirdiği çekirdeği duydu.

Eğer Linux, GPL lisansıyla korunursa, açık kaynak kodlu bir işletim sistemi olacak, kodlarına erişilebilecek, geliştirilmeye ve serbestçe yeniden dağıtılmaya açık olacaktı. Ve beklenen oldu, GNU projesi ve Linus Torvalds’ın Linux projesi birleşerek özgür yazılım projelerinin en büyüğü olan GNU/LINUX’u meydana getirdi.

https://www.youtube.com/watch?v=HSgUPqygAww#t=48
Linus Torvalds Guided Tour of His Home Office

1