gokayburuc.dev

Linux FSH

LINUX FSH

Linux

Linux FSH (File System Hierarchy), Linux işletim sistemlerinde varsayılan olarak yer alan dosya sistemi yapılanmasını açıklayan bir referanstır.

Kısa Notlar :

Linux Dosya Sistemi Hiyerarşisi

Dizin Açıklama
/ Ana hiyerarşi kökü ve tüm dosya sistemi hiyerarşisinin kök dizini.
/bin Tek kullanıcı modunda sistemin açılması veya onarımı için gereken tüm kullanıcılar tarafından erişilebilir temel komut dosyaları (ör. cat, ls, cp).
/boot Önyükleyici dosyaları (ör. çekirdekler, initrd).
/dev Aygıt dosyaları (ör. /dev/null, /dev/disk0, /dev/sda1, /dev/tty, /dev/random).
/etc Sisteme özgü, tüm sistem çapında geçerli yapılandırma dosyaları. FHS’ye göre yalnızca statik yapılandırma dosyalarını içermelidir ve ikili dosyaları barındıramaz.
/etc/opt /opt dizininde saklanan ek paketlerin yapılandırma dosyaları.
/etc/sgml SGML işleyen yazılımlar için kataloglar gibi yapılandırma dosyaları.
/etc/X11 X Pencere Sistemi, sürüm 11 için yapılandırma dosyaları.
/etc/xml XML işleyen yazılımlar için kataloglar gibi yapılandırma dosyaları.
/home Kullanıcıların kişisel dosyalarını, ayarlarını vb. içeren ev dizinleri.
/lib /bin ve /sbin içindeki ikililer için gerekli olan kütüphaneler.
/lib<qual> Alternatif formatta temel kütüphaneler (ör. 32-bit ve 64-bit sürümler için). Bu dizinler isteğe bağlıdır ancak mevcutsa belirli gerekliliklere uymalıdır.
/media CD-ROM gibi çıkarılabilir medyalar için bağlama noktaları (FHS-2.3 ile 2004’te eklendi).
/mnt Geçici olarak bağlanmış dosya sistemleri.
/opt Ek uygulama yazılım paketleri.
/proc Süreç ve çekirdek bilgilerini dosyalar halinde sağlayan sanal dosya sistemi. Linux’ta genellikle bir procfs bağlamasına karşılık gelir. Sistem tarafından otomatik olarak oluşturulur ve doldurulur.
/root Root kullanıcısının ev dizini.
/run Çalışma zamanı değişken verileri: Son önyüklemeden bu yana çalışan sistemle ilgili bilgiler (ör. giriş yapmış kullanıcılar ve çalışan servisler). Dosyalar önyükleme sırasında silinir veya kısaltılır.
/sbin Temel sistem ikili dosyaları (ör. fsck, init, route).
/srv Bu sistem tarafından sunulan siteye özgü veriler (ör. web sunucuları için veri ve betikler, FTP sunucuları tarafından sunulan veriler, sürüm kontrol sistemi depoları) (FHS-2.3 ile 2004’te eklendi).
/sys Aygıtlar, sürücüler ve bazı çekirdek özellikleri hakkında bilgi içerir.
/tmp Geçici dosyalar için dizin. Genellikle sistem yeniden başlatıldığında korunmaz ve boyut açısından ciddi şekilde sınırlı olabilir.
/usr Salt okunur kullanıcı verileri için ikincil hiyerarşi; çoğunlukla (çok) kullanıcı yardımcı programları ve uygulamaları içerir. Paylaşılabilir ve salt okunur olmalıdır.
/usr/bin Tek kullanıcı modunda gerekli olmayan; tüm kullanıcılar için erişilebilir komut dosyaları.
/usr/include Standart başlık dosyaları.
/usr/lib /usr/bin ve /usr/sbin içindeki ikililer için kütüphaneler.
/usr/libexec Kullanıcılar veya kabuk betikleri tarafından doğrudan çalıştırılmaması gereken, diğer programlar tarafından çalıştırılan ikililer (isteğe bağlı).
/usr/lib<qual> Alternatif format kütüphaneleri (ör. bir 64-bit makinede 32-bit kütüphaneler için /usr/lib32, isteğe bağlı).
/usr/local Bu ana makineye özgü yerel veriler için üçüncül hiyerarşi. Genellikle bin, lib, share gibi alt dizinler içerir.
/usr/sbin Temel olmayan sistem ikili dosyaları (ör. çeşitli ağ servisleri için daimonlar).
/usr/share Mimariye bağımsız (paylaşılan) veriler.
/usr/src Kaynak kodu (ör. çekirdek kaynak kodu ve başlık dosyaları).
/usr/X11R6 X Pencere Sistemi, Sürüm 11, Sürüm 6 (FHS-2.3’e kadar, isteğe bağlı).
/var Sürekli değişmesi beklenen dosyalar: günlükler, kuyruk dosyaları ve geçici e-posta dosyaları.
/var/cache Uygulama önbellek verileri. Bu tür veriler yerel olarak uzun süren G/Ç veya hesaplamaların bir sonucu olarak oluşturulur. Silinmeleri veri kaybına neden olmamalıdır.
/var/lib Durum bilgisi. Programlar çalışırken değiştirilmiş kalıcı veriler (ör. veritabanları, paketleme sistemi meta verileri vb.).
/var/lock Kilit dosyaları. Halen kullanılmakta olan kaynakları izleyen dosyalar.
/var/log Çeşitli günlük dosyaları.
/var/mail Posta kutusu dosyaları. Bazı dağıtımlarda, bu dosyalar kullanımdan kaldırılan /var/spool/mail altında olabilir.
/var/opt /opt altında depolanan ek paketlerden gelen değişken veriler.
/var/run Çalışma zamanı değişken verileri. Bu dizin, sistemin önyüklenmesinden bu yana geçen süreyle ilgili bilgiler içerir. FHS 3.0’da /var/run, /run ile değiştirilmiştir. Geriye dönük uyumluluk için bir sembolik bağlantı sağlanmalıdır.
/var/spool İşlenmeyi bekleyen görevler için kuyruk (ör. yazdırma kuyrukları ve giden posta kuyruğu).
/var/spool/mail Kullanımdan kaldırılmış kullanıcıların posta kutuları konumu.
/var/tmp Yeniden başlatmalar arasında korunacak geçici dosyalar.

Modern Linux Dağıtımlarında Dosya Sistemi Farkları

Modern Linux dağıtımlarında FHS'nin varsayılan değerlerinden farklılaşmalar ortaya çıkmaktadır.

  1. /sys dizini:
    Modern Linux dağıtımları, cihazların sistemle bağlantısını depolayan ve değiştirilmesine olanak tanıyan sanal bir dosya sistemi (sysfs) olarak /sys dizinini içerir. Bu, /proc dizinine (procfs) benzer.
    Geleneksel birçok Unix-benzeri işletim sistemi ise /sys dizinini çekirdek kaynak ağacına sembolik bir bağlantı olarak kullanır.

  2. /usr/local dizini:
    Modern Unix-benzeri sistemlerin birçoğu (ör. FreeBSD ve OpenBSD), üçüncü taraf paketleri ports sistemleri aracılığıyla /usr/local dizinine kurar. İşletim sisteminin bir parçası olarak kabul edilen kodu ise /usr dizininde tutarlar.

  3. /lib ve /usr/lib dizinleri:
    Bazı Linux dağıtımları artık /lib ve /usr/lib dizinleri arasında bir ayrım yapmamaktadır. Bu durumda, /lib dizini genellikle /usr/lib dizinine sembolik bir bağlantı (symlink) olarak ayarlanır.

  4. /bin, /usr/bin, /sbin ve /usr/sbin dizinleri:

    • Bazı Linux dağıtımları, /bin ile /usr/bin ve /sbin ile /usr/sbin dizinleri arasındaki farkı kaldırmıştır. Bu durumda, /bin dizini /usr/bin'e ve /sbin dizini /usr/sbin'e sembolik olarak bağlanır.
    • Diğer bazı dağıtımlar ise bu dört dizini tek bir yerde birleştirmeyi tercih eder ve hepsini /usr/bin'e sembolik olarak bağlar.

Ayrıca bazı geçici çözümler de sistemle eklenmiştir. Bu çözümler FHS'nin gelişim sürecinde ortaya çıkan sorunları gidermek adına sistemde yer almaktadırlar.

  1. /run dizini:
    Modern Linux dağıtımları, geçici bir dosya sistemi (tmpfs) olarak /run dizinini içerir ve uçucu çalışma zamanı verilerini depolar. Bu, FHS 3.0 sürümüne uygundur.

  2. Önceki durum (/var/run):
    FHS 2.3 sürümüne göre bu tür veriler /var/run dizininde depolanıyordu. Ancak bu dizin, erken önyükleme sırasında her zaman kullanılabilir olmadığı için sorunlar ortaya çıkıyordu.

  3. Geçici çözümler:
    Bu sorunu aşmak için bazı programlar, /dev/.udev, /dev/.mdadm, /dev/.systemd veya /dev/.mount gibi dizinlere başvuruyordu. Ancak, aygıt dizini bu tür veriler için tasarlanmış değildir.

  4. /run dizininin avantajları:

    • Sistem, kök dosya sistemi salt okunur olarak bağlandığında daha kolay kullanılabilir hale gelir.
    • Örneğin, kök dosya sistemi salt okunur olarak bağlanmış olsa bile çalışma zamanı verileri /run dizininde depolanabilir.
  5. Debian Wheezy’deki değişiklikler (2013):
    Debian, Wheezy sürümünde aşağıdaki değişiklikleri yapmıştır:

    • /dev/.* → /run/*
    • /dev/shm → /run/shm
    • /dev/shm/* → /run/*
    • /etc/* (yazılabilir dosyalar) → /run/*
    • /lib/init/rw → /run
    • /var/lock → /run/lock
    • /var/run → /run
    • /tmp → /run/tmp

Ubuntu 20.04 FHS

Aşağıda kendi sistemime ait örnek bir FHS dizilimini sizlerle paylaşıyorum:

.
├── bin -> usr/bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib32 -> usr/lib32
├── lib64 -> usr/lib64
├── libx32 -> usr/libx32
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── snap
├── srv
├── sys
├── tmp
├── usr
└── var

Temel FHS haricinde /snap da sistemde yer alıyor. Ayrıca -> işareti ile belirtilen dizinler symlink kullanılarak diğer path noktalarına yönlendirilmiş kısımlardır.

#bash #linux #unix