- Windows'tan Linux'a gecenler veya bilgisayar kullanmaya ilk olarak Linux ile başlayanlar merak edeceklerdir "Bu dosyalar nedir" diye. Her ne kadar karışık gorunse de sabredip sonuna kadar okuduğunuzda tum taşlar yerine oturmuş olacak.
Daha once Pardus-Linux.org e-Dergi 7. Sayı'da anlatılmıştı. Dergiyi okumanızı tavsiye etmekle birlikte, sadece forumdaki başlıkları inceleyenlerin de gormesini istediğim icin konu acma ihtiyacı hissettim.

Microsoft Windows gibi bir başka işletim sisteminden, Linux'a gecen son kullanıcıların en buyuk sıkıntılarından biri, dosya sistemleri arasındaki farklardır. Windows konusunda biraz tecrubeli kime sorsanız, Program Files, Windows, System32, Documents and Settings klasorleri hakkında bilgi verebilir. Ancak Unix dunyası farklıdır ve geciş yapan kullanıcılar, hangi klasorun ne işe yaradığını, hangisinin neyle alakalı olduğunu ilk bakışta cozemez. İşin kotu tarafı, farklı dağıtımlar icin, dosya sistem hiyerarşisi değişebilir. Bu yazımızda, Linux Dokumantasyon Projesi (The Linux Documentation Project) tarafından yayımlanmış Linux Dosya Sistem Hiyerarşisini baz alarak, sizlere Linux dosya sistemi hakkında bilgi vereceğiz. Eğer daha cok bilgi almak isterseniz The Linux Documentation Project web sitesini ziyaret etmenizi tavsiye ederim.

Dosya Sistemi Nedir?
Dosya sistemi, işletim sisteminin bir disk veya bolum (partition) uzerindeki dosyaları takip edebilmesi icin oluşturulmuş yontem ve veri yapıları butunudur. Dosya sistemi farklı anlamlar icin de kullanılıyor. Orneğin iki diski olan bir kullanıcının "iki dosya sistemim var" dediğini duymuşsunuzdur. Buna şimdilik girmeyelim. Bizi ilgilendiren Linux'taki dosya yapısı...

Linux bir Unix klonudur. Bu yuzden "Tekil Hiyerarşik Klasor Yapısı"nı benimsemiştir. * her şey / (slash) simgesiyle ifade edilen root klasorunden başlar, aşağıya doğru iner. Windows'taki gibi C: D: şeklinde sozde suruculer (drivers) bulunmaz. Windows ortamında, dosyalarınızı C surucusu, D veya E surucusu gibi her yere koyabilirsiniz. Bu tarz dosya sistemlerine, "Hiyerarşik Yapı"lı denmektedir.

Linux, / (root) klasorunden başlayarak, boot işlemindeki onem sırasına gore klasorleri dizer. Eğer neden Windows'taki gibi (ters slash) işareti yerine, / (slash) işareti kullanıldığını merak edebilirsiniz; bu Linux'un Unix geleneğini takip etmesindendir. Ayrıca bu geleneğe uygun olarak kucuk buyuk harf duyarlılığı onemli bir konudur. Orneğin Windows'ta KLASOR_ADI ve klasor_adi aynı şeydir; fark etmez. Ama Linux'ta iki ayrı klasorden bahsediyor oluruz.

Windows'ta bir program yuklediğinizde, programa ait dosyaların buyuk coğunluğu kendi klasorune yuklenir. Orneğin Matlab'i, C:Program FilesMatlab adresine kurduğunuzda, ona ait yardım dosyaları, bu klasor altındadır. Fakat Linux farklı calışır; program dokumanlarını /usr/share/doc/program_adi/ altına koyarken, man(ual) dosyaları, /usr/share/man/man[1-9] altına koyulur. Eğer varsa info dosyaları da, /usr/share/info altına atılır. Kısacası, sistem hiyerarşisine gomulen bir yapı soz konusudur. Yuklenen herhangi bir program, işletim sisteminin muhtelif yerlerine yerleşmektedir.




Linux'un populerleşmeye başladığı 90'ların ortalarında, dağıtım geliştiriciler, dosyaları yerleştirmek icin en uygun gordukleri şekilde calıştılar; belirli bir standart yoktu. Bu bircok soruna neden oldu. Bu anarşiyi durdurmak icin daha sonraları Linux Dosya Sistem Hiyerarşisi (kısaca FSSTND) belirlendi. Bizim anlatacağımız yapı da bu standart dahilinde...

Linux ve dosya sistemiyle ilgili soylenecek cok şey var; ama ozet gecip son kullanıcının ihtiyacına cevap vermek daha doğru olur: "Linux'ta hangi klasor ne işe yarar?"

/ (root) :
Yukarda belirttiğimiz gibi, / (root) işletim sisteminin başlangıc noktasıdır. Butun diğer klasorler, dosyalar, root'un 'cocuklarıdır'. Bilgisayar başlarken, ilk once buraya bakılır ve bulunmazsa sistem başlamaz. / (root) ve /root (root kullanıcısına ait klasor) birbirinden ayrıdır. İlerki bolumde farkını acıklayacağız.

FSSTND'a gore root altındaki temel klasorler:

/bin : Olması şart komut dosyalarını icerir
/boot : Başlangıc icin gerekli dosyaları bulundurur
/dev : Donanım dosyaları vardır
/etc : Sistem ayarlarını barındırır
/lib : Kutuphane dosyaları ve kernel modulleri bulunur
/media : Kaldırılabilir aygıtların (CD-Rom, Flash bellek vs...) sisteme eklendiği klasordur.
/mnt : Bir dosya sistemini gecici olarak eklemek icin kullanılır.
/opt : Ekstra programların kurulması icindir
/sbin : Sistemi yoneticisiyle ilgili calıştırabilir dosyaları tutar.
/srv : Sistemin sunduğu hizmetlerle alakalıdır
/tmp : Gecici dosyaları tutmak icindir
/usr : İkincil bir hiyerarşi
/var : Değişken verileri saklar

Gunumuzde Linux dağıtımlarının buyuk coğunluğu, zaman zaman FSSTND tarafından belirlenmiş klasorlerin dışına cıkabiliyor. Bu tanıma bazen bir iki klasor eklendiğini ya da nadiren bu yapıdan bir klasorun cıkarıldığını goruyoruz. Biz gerek guncel dağıtımları, gerekse FSSTND'yi baz alarak incelememizi yapacağız. Ancak yazımızda FSSTND tarafından belirlenen butun klasorler olmayacak. Linux dosya sistemi oldukca derin bir konu ve her şeyi anlatmaya kalkarsak, ayrı bir kitapcık yayımlamamız gerekir. Bunun yerine, son kullanıcının daha cok ilgisini cekecek ve genellikle haşır neşir olabileceği klasorleri ele alacağız.

/bin :
İşletim sisteminizi kullanmak icin gereken bircok yararlı komut /bin klasoru altındadır. cat, mkdir, cp, ls, mv, rm vb. temel komutların hepsini burada bulabilirsiniz. Sistem boot ettiğinde, ilk olarak /bin klasoru calışır hÂle getirilir. Network bağlantınız olmasa ya da onemli klasorlere bir nedenden dolayı erişemeseniz bile, /bin klasorundeki komutlar n'olursa olsun calışır. Bir sorun cıktığında, /bin klasoru altındaki komutları kullanarak sistemi onarırız.

/boot :
Boot, işletim sisteminin yuklenme evresidir. /boot klasoru, boot işlemi icin gereken her şeyi icerir. Bilgisayarın başlangıc (boot) aşamasında gerekmeyen ayar ve yapılandırma dosyaları burada bulunmaz; başka klasorlerden gerektiği zamanlarda yuklenir.

/dev :
Linux'ta her şey bir dosyadır; donanım aygıtları da oyle... USB girişleri, seri ve paralel portlar, diskleriniz, cd-rom'larınız vb... butun aygıtlar /dev klasoru altında tutulan dosyalardan ibarettir. Orneğin /dev altında bulunan hda1 dosyası, sabit diskinizi temsil eder. Ya da /dev/dsp, ses aygıtınızdır. Bunları programlar vasıtasıyla kullanırız ancak direk mudahale ekmek mumkundur.
Mesela "cat /boot/vmlinuz > /dev/dsp" yazarak Kernel'in sesini duyabilirsiniz.

Bazı Onemli Aygıt Dosyaları:
/dev/ttyS0 : Fare, modem gibi aygıtların bağlandığı seri port. (COM 1)
/dev/psaux : PS/2 girişi; fare ve klavyeler icindir.
/dev/lp0 : Paralel port (LPT 1); yazıcı, tarayıcı vs...
/dev/dsp : Birincil ses aygıtı
/dev/usb : USB aygıtları
/dev/sda : SCSI aygıtlar, Flash Bellekler, harici CD-ROM'lar vs...
/dev/scd : SCSI CD-ROM'lar
/dev/js0 : Joystick (Microsoft Turkcesiyle Eğlence Cubuğu)

/etc :
İşletim sistemini bir vucuda benzetirsek, /etc klasorunu sinir sisteminin merkezi olarak gorebiliriz. Sisteme dair butun yapılandırma, bu klasor veya bu klasorun alt klasorlerinde bulunur. Yapılandırma dosyası, bir programın işlemlerini kontrol etmek icin kullanılan lokal bir dosyadır; durağandır ve calıştırılmak icin değildir.

/etc klasoru icersinde bulunan butun klasor ve yapılandırma dosyalarını tek tek incelememiz mumkun değil. Ancak son kullanıcının işine yarayacak bir ipucu verebiliriz.

Surekli DNS problemleri yaşayanlar, /etc/resolv.conf dosyasını root olarak acıp, yeni DNS adresleri ekleyebilir. Siz de bu sorunlardan mustaripseniz, root olarak bu dosyayı acıp aşağıdaki satırları dosyanın en başına ekleyin:
nameserver 208.67.222.222
nameserver 208.67.220.220

Verilen adresler OpenDNS adında bir firmaya ait. Telekom'un adresleri yerine bunları kullanırsanız; adres cozumleme problemleriniz geride kalacaktır. Ustelik erişimi engellenen sitelere de girebilirsiniz.

/home :
Zamanında home klasoruyle ilgili hoş bir tanım duymuştum; /home klasorunu kullanıcıların kalesi olarak acıklıyordu. Bu gayet yerinde bir acıklama. /home klasoru icerisinde her kullanıcının kendi adında bir alt klasoru bulunur. Orneğin kullanıcı adınız "ali" ise, /home/ali size aittir ve altında istediğiniz her şeyi yapabilirsiniz; ama yapabilecekleriniz bu klasorle sınırlıdır. /home klasorunu, Windows'taki Documents and Settings'e benzetebiliriz. Ama daha guvenli bir yapıdır. Cunku Linux'ta bir başkasının ev klasorune mudahale edemezken, Windows'ta cok zorlanmadan istediğinizi yapabilirsiniz.



Filelight : Klasorlerin kapladığı boyutları gosteren bir yazılım.


/initrd :
initrd, initial ramdisk kısaltmasıdır. Aşağı yukarı anlamı Başlangıc Bellek Diski oluyor. Boot aşamasında ilk once cekirdek (kernel) yuklenir. Bundan sonra bilgisayarınızın belleğinde bir Bellek Diski oluşturulur. Oluşturulan Bellek Disk uzerinde / (root) yansısı acılır ve kok dizin olarak monte edilir. /initrd bu işlemlerin yapılması ve Linux'un yuklenmesi icin gereklidir.

/lib :
Kernel modulleri ve paylaşılan kutuphane dosyaları bu klasorde bulunur. Var olan cekirdek modullerini /lib/modules/[versiyon_numarasi] icersinde bulabilirsiniz. Bahsedilen kutuphane dosyalarıysa, sistemi başlatmak ve /bin ile /sbin icersindeki komutları calıştırmak icin gereklidir. Paylaşılan kutuphane dosyalarını, Windows'ta DLL (Dynamically Linked Library) ile eş tutabiliriz. Linux'ta kutuphane dosyalarının sonu ".so" ile biter.

/lost+found :
İngilizce bir terim olan Lost and Found, kayıp eşya burosu demektir. /lost+found klasorunun yaptığı işi duşununce, bundan uygun bir isim herhalde olamazdı.

Bazen sistemimizde bir problem olur; yanlış kapatırız, elektrik gider, durup dururken bilgisayar yeniden başlar vs... Bu gibi durumlarda Linux'ta fsck (File System Check) komutu devreye sokulur. fsck, Windows'taki Scandisk programına benzetilebilir. Duzeltilemeyen bir sorun varsa, bağlantıları kopmuş kayıp dosyalar ortaya cıkmışsa, bunlar /lost+found altına atılır. Bağlantı kopması, inode gibi konulara girmek istemiyorum; biraz karmaşık. Kısaca ozetlersek; kotu bir sistem kapanmasından sonra, olması gereken bazı dosyaları bulamıyorsanız, kayıp eşya burosuna bakmanızda yarar var.

/media :
CD-Rom, disket surucu, flash bellek gibi cıkarılabilir aygıtlar buraya bağlanır. En basit tanımla, cıkarılabilir aygıtların, bağlantı noktası (mount point) olarak duşunebilirsiniz.

/mnt :
/media klasorune benzer. Temel farkı; cıkarılabilir aygıtlar yerine, dosya sistemleri veya donanım aygıtları icin kullanılıyor oluşudur. Bağlama (mount) işlemi, herhangi bir dosya sistemini, işletim sisteminin kullanmasını sağlar. Nereye bağladığınız sizin tercihinizdir. Yani bir diski, /media veya /mnt klasorune ya da bir başka yere bağlamanız fark etmeyecektir. Sadece genel kabul gormuş bazı bağlantı noktaları bulunuyor; /mnt klasoru de onlardan bir tanesi.

/opt :
Dağıtımdan bağımsız ekstra yuklenen paketler icin /opt klasoru kullanılmaktadır. Orneğin Google Earth programını indirip kurmak istediğinizde, 'default' olarak kurulacağı nokta, /opt/google-earth adresidir.

Elbette ki bunu değiştirebilir ve size uygun gelen bir başka konuma yukleyebilirsiniz. Ancak daha once soylediğimiz gibi bazı şeyler genel kabul gormuştur. Ekstra yuklenen yazılımların, /opt adresine atanması da buna bir ornektir. Windows'taki C:Program Files'i hatırlayalım;. programları buraya kurmak zorunlu değil; ama hemen hepsi buraya kuruluyor. Aynı mantık burada da gecerli.

/proc :
/proc oldukca ozel sanal bir dosya sistemidir. Bizim bildiğimiz anlamda fiziksel dosyalar bulundurmaz; sistem durumuna dair bilgi iceren sanal dosyaları vardır. Orneğin "cat /proc/swaps" yazarak sisteminizdeki takas dosyalarına dair bilgi alabilir ya da "cat /proc/cpuinfo" komutuyla işlemcinizin ozelliklerini gorebilirsiniz.

/proc klasoru icersindeki dosyalar, sadece sistem durumunu goruntulemek icin kullanılmaz; gerektiğinde ayarlamak icin de kullanılabilir. Fakat son kullanıcılara hitap etmediğinden, bu konuyu burada keselim.

/root :
Unix'in ilk versiyonlarında root kullanıcısının kendine ait bir ev klasoru yoktu. Direkt olarak / (root klasoru) altında calışırdı. Fakat zamanla bunun iyi bir yontem olmadığı anlaşıldı ve root kullanıcısının ayrı bir klasore sahip olması gerektiğine karar verildi. Diğer kullanıcılardan farklı olduğu icin root'un ev klasoru /home altında tutulmaz; ayrılması icin /root klasoru altındadır.

/sbin :
Linux'ta normal kullanıcının kullanabileceği komutlarla, sistem kullanıcısının kullanabileceği komutlar ayrılmıştır. root tarafından kullanılacak bakım ve yonetim icin kullanılan onemli programlar, /sbin altında tutulur. Daha az oneme sahip yonetim komutlarıysa, /usr/sbin klasorundedir. Eğer lokalde, yani kullandığınız makineye ozgu yonetici (root) komutları bulunuyorsa, bunları da /usr/local/sbin altında bulabilirsiniz.

/usr :
/root kullanıcısına benzer bir hikaye /usr icin de soz konusudur. Unix ilk cıktığında, kullanıcılara ait ev klasorleri, /usr altında tutulurdu. Orneğin cagatay isimli bir kullanıcının ev klasoru /usr/cagatay şeklindeydi. Bu yontem zamanla değişti ve /home klasoru doğmuş oldu. /usr klasoru hÂl cok onemli bir yapıdır ve işletim sisteminizde kullandığınız her şeyle ilişkisi bulunur.

/usr klasorunun onemi, yuklediğiniz programların buraya atılmasından kaynaklanır. /opt adresi işletim sistemi dışında gelen 3.parti programlar icindir. Fakat işletim sistemi aracılığıyla ya da paket yonetim sistemlerini kullanarak yuklediğiniz her şey, /usr altına aktarılır. Aynı zamanda yuklediğiniz programların calışmak icin ihtiyac duyacağı kutuphane dosyaları, /usr/lib altındadır.

/usr ile ilgili soylenebilecek bir başka nokta da, local klasorudur. Linux, sunucu olarak cok istemciye hizmet verebilecek bir işletim sistemidir. Bir Linux sunucu (server) kurarsanız, ona bağlanan yuzlerce istemci (client) olabilir. Her istemci bilgisayara, /usr altındaki programların ayrı ayrı yuklenmesi gerekmez; bir başka konumdan bu komutları calıştırabilirsiniz. Ancak /usr altında bulunan local klasoru sadece kullandığınız makineye ozeldir. Orneğin /usr/local/bin klasoru icinde bulunan butun komutlar, direkt olarak kullandığınız makineye yuklenmiştir. /usr/bin komutları ise geneldir ve bir ağ ustundeki butun makinelerden erişilebilir. local gorduğunuzde, bunun sadece sizin makinenize ozel olduğunu bilin.

/var :
Log dosyaları, e-mail ve printer kuyrukları gibi değişken sistem bilgilerini barındırır. Sisteminize dair tutulan log'ları buradan gorebilir; guvenlik durumunu buradan kontrol edebilirsiniz.

/tmp :
Gecici dosyalar icindir. Bircok program, burayı gecici depolama alanı olarak kullanır. /tmp klasorunun iceriği genellikle KB'lar mertebesinde kalır ve genellikle işletim sistemi yeniden başlarken icindeki dosyalar silinir. /tmp klasoru altında bulunan dosyaları, ne yaptığınızdan emin değilseniz, kesinlikle silmemelisiniz! Sistem genelinde olmasa bile, program bazında problemler cıkabilir. Orneğin acık bir soket dosyasını sildiğinizde, onu kullanan programa ve kendinize sorun cıkartabilirsiniz.

Linux (ya da Unix diyelim) dosya sistemi oldukca ozel bir yapı. İlk bakışta insanın gozunu korkutuyor, bunu kabul ediyorum. Ama fobinizle yuzleşip, temel prensipleri oğrendiğinizde oldukca sistemli bir yapının icerisinde olduğunuzu fark ediyorsunuz. O yuzden fobinizle kesinlikle yuzleşmenizi tavsiye ederim.


Kaynak : forum.ubuntu
__________________