Microsoft Windows gibi bir başka işletim sisteminden, Linux'a geen son kullanıcıların en byk sıkıntılarından biri, dosya sistemleri arasındaki farklardır. Windows konusunda biraz tecrbeli kime sorsanız, Program Files, Windows, System32, Documents and Settings klasrleri hakkında bilgi verebilir. Ancak Unix dnyası farklıdır ve geiş yapan kullanıcılar, hangi klasrn ne işe yaradığını, hangisinin neyle alakalı olduğunu ilk bakışta zemez. İşin kt tarafı, farklı dağıtımlar iin, dosya sistem hiyerarşisi değişebilir. Bu yazımızda, Linux Dokmantasyon 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 ok bilgi almak isterseniz The Linux Documentation Project web sitesini ziyaret etmenizi tavsiye ederim.
Dosya sistemi, işletim sisteminin bir disk veya blm (partition) zerindeki dosyaları takip edebilmesi iin oluşturulmuş yntem ve veri yapıları btndr. Dosya sistemi farklı anlamlar iin de kullanılıyor. rneğ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 yzden "Tekil Hiyerarşik Klasr Yapısı"nı benimsemiştir. Herşey / (slash) simgesiyle ifade edilen root klasrnden başlar, aşağıya doğru iner. Windows'taki gibi C: D: şeklinde szde srcler (drivers) bulunmaz. Windows ortamında, dosyalarınızı C srcs, D veya E srcs gibi her yere koyabilirsiniz. Bu tarz dosya sistemlerine, "Hiyerarşik Yapı"lı denmektedir.
Linux, / (root) klasrnden başlayarak, boot işlemindeki nem sırasına gre klasrleri 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 kk byk harf duyarlılığı nemli bir konudur. rneğin Windows'ta KLASOR_ADI ve klasor_adi aynı şeydir; fark etmez. Ama Linux'ta iki ayrı klasrden bahsediyor oluruz.
Windows'ta bir program yklediğinizde, programa ait dosyaların byk oğunluğu kendi klasrne yklenir. rneğin Matlab'i, C:\Program Files\Matlab adresine kurduğunuzda, ona ait yardım dosyaları, bu klasr altındadır. Fakat Linux farklı alışır; program dkmanları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 gmlen bir yapı sz konusudur. Yklenen herhangi bir program, işletim sisteminin muhtelif yerlerine yerleşmektedir.
Linux'un poplerleşmeye başladığı 90'ların ortalarında, dağıtım geliştiriciler, dosyaları yerleştirmek iin en uygun grdkleri şekilde alıştılar; belirli bir standart yoktu. Bu birok soruna neden oldu. Bu anarşiyi durdurmak iin daha sonraları Linux Dosya Sistem Hiyerarşisi (kısaca FSSTND) belirlendi. Bizim anlatacağımız yapı da bu standart dahilinde...
Gnmzde Linux dağıtımlarının byk oğunluğu, zaman zaman FSSTND tarafından belirlenmiş klasrlerin dışına ıkabiliyor. Bu tanıma bazen bir iki klasr eklendiğini ya da nadiren bu yapıdan bir klasrn ıkarıldığını gryoruz. Biz gerek gncel dağıtımları, gerekse FSSTND'yi baz alarak incelememizi yapacağız. Ancak yazımızda FSSTND tarafından belirlenen btn klasrler olmayacak. Linux dosya sistemi olduka derin bir konu ve her şeyi anlatmaya kalkarsak, ayrı bir kitapık yayımlamamız gerekir. Bunun yerine, son kullanıcının daha ok ilgisini ekecek ve genellikle haşır neşir olabileceği klasrleri ele alacağız.
İşletim sisteminizi kullanmak iin gereken birok yararlı komut /bin klasr altındadır. cat, mkdir, cp, ls, mv, rm vb. temel komutların hepsini burada bulabilirsiniz. Sistem boot ettiğinde, ilk olarak /bin klasr alışır hle getirilir. Network bağlantınız olmasa ya da nemli klasrlere bir nedenden dolayı erişemeseniz bile, /bin klasrndeki komutlar n'olursa olsun alışır. Bir sorun ıktığında, /bin klasr altındaki komutları kullanarak sistemi onarırız.
Boot, işletim sisteminin yklenme evresidir. /boot klasr, boot işlemi iin gereken her şeyi ierir. Bilgisayarın başlangı (boot) aşamasında gerekmeyen ayar ve yapılandırma dosyaları burada bulunmaz; başka klasrlerden gerektiği zamanlarda yklenir.
Linux'ta her şey bir dosyadır; donanım aygıtları da yle... USB girişleri, seri ve paralel portlar, diskleriniz, cd-rom'larınız vb... btn aygıtlar /dev klasr altında tutulan dosyalardan ibarettir. rneğ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 mdahale ekmek mmkndr. Mesela "cat /boot/vmlinuz > /dev/dsp" yazarak Kernel'in sesini duyabilirsiniz.
İşletim sistemini bir vcuda benzetirsek, /etc klasrn sinir sisteminin merkezi olarak grebiliriz. Sisteme dair btn yapılandırma, bu klasr veya bu klasrn alt klasrlerinde bulunur. Yapılandırma dosyası, bir programın işlemlerini kontrol etmek iin kullanılan lokal bir dosyadır; durağandır ve alıştırılmak iin değildir.
Srekli DNS problemleri yaşayanlar, /etc/resolv.conf dosyasını root olarak aıp, yeni DNS adresleri ekleyebilir. Siz de bu sorunlardan mustaripseniz, root olarak bu dosyayı aıp aşağıdaki satırları dosyanın en başına ekleyin:
Zamanında home klasryle ilgili hoş bir tanım duymuştum; /home klasrn kullanıcıların kalesi olarak aıklıyordu. Bu gayet yerinde bir aıklama. /home klasr ierisinde her kullanıcının kendi adında bir alt klasr bulunur. rneğin kullanıcı adınız "ali" ise, /home/ali size aittir ve altında istediğiniz her şeyi yapabilirsiniz; ama yapabilecekleriniz bu klasrle sınırlıdır. /home klasrn, Windows'taki Documents and Settings'e benzetebiliriz. Ama daha gvenli bir yapıdır. nk Linux'ta bir başkasının ev klasrne mdahale edemezken, Windows'ta ok zorlanmadan istediğinizi yapabilirsiniz.
initrd, initial ramdisk kısaltmasıdır. Aşağı yukarı anlamı Başlangı Bellek Diski oluyor. Boot aşamasında ilk nce ekirdek (kernel) yklenir. Bundan sonra bilgisayarınızın belleğinde bir Bellek Diski oluşturulur. Oluşturulan Bellek Disk zerinde / (root) yansısı aılır ve kk dizin olarak monte edilir. /initrd bu işlemlerin yapılması ve Linux'un yklenmesi iin gereklidir.
Kernel modlleri ve paylaşılan ktphane dosyaları bu klasrde bulunur. Var olan ekirdek modllerini /lib/modules/[versiyon_numarasi] iersinde bulabilirsiniz. Bahsedilen ktphane dosyalarıysa, sistemi başlatmak ve /bin ile /sbin iersindeki komutları alıştırmak iin gereklidir. Paylaşılan ktphane dosyalarını, Windows'ta DLL (Dynamically Linked Library) ile eş tutabiliriz. Linux'ta ktphane dosyalarının sonu ".so" ile biter.
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. Dzeltilemeyen bir sorun varsa, bağlantıları kopmuş kayıp dosyalar ortaya ıkmışsa, bunlar /lost+found altına atılır. Bağlantı kopması, inode gibi konulara girmek istemiyorum; biraz karmaşık. Kısaca zetlersek; kt bir sistem kapanmasından sonra, olması gereken bazı dosyaları bulamıyorsanız, kayıp eşya brosuna bakmanızda yarar var.
/media klasrne benzer. Temel farkı; ıkarılabilir aygıtlar yerine, dosya sistemleri veya donanım aygıtları iin 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 klasrne ya da bir başka yere bağlamanız fark etmeyecektir. Sadece genel kabul grmş bazı bağlantı noktaları bulunuyor; /mnt klasr de onlardan bir tanesi.
Dağıtımdan bağımsız ekstra yklenen paketler iin /opt klasr kullanılmaktadır. rneğ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 ykleyebilirsiniz. Ancak daha nce sylediğimiz gibi bazı şeyler genel kabul grmştr. Ekstra yklenen yazılımların, /opt adresine atanması da buna bir rnektir. 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 geerli.
/proc olduka zel sanal bir dosya sistemidir. Bizim bildiğimiz anlamda fiziksel dosyalar bulundurmaz; sistem durumuna dair bilgi ieren sanal dosyaları vardır. rneğin "cat /proc/swaps" yazarak sisteminizdeki takas dosyalarına dair bilgi alabilir ya da "cat /proc/cpuinfo" komutuyla işlemcinizin zelliklerini grebilirsiniz.
/proc klasr iersindeki dosyalar, sadece sistem durumunu grntlemek iin kullanılmaz; gerektiğinde ayarlamak iin de kullanılabilir. Fakat son kullanıcılara hitap etmediğinden, bu konuyu burada keselim.
Unix'in ilk versiyonlarında root kullanıcısının kendine ait bir ev klasr yoktu. Direkt olarak / (root klasr) altında alışırdı. Fakat zamanla bunun iyi bir yntem olmadığı anlaşıldı ve root kullanıcısının ayrı bir klasre sahip olması gerektiğine karar verildi. Diğer kullanıcılardan farklı olduğu iin root'un ev klasr /home altında tutulmaz; ayrılması iin /root klasr altındadır.
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 ynetim iin kullanılan nemli programlar, /sbin altında tutulur. Daha az neme sahip ynetim komutlarıysa, /usr/sbin klasrndedir. Eğer lokalde, yani kullandığınız makineye zg ynetici (root) komutları bulunuyorsa, bunları da /usr/local/sbin altında bulabilirsiniz.
d3342ee215