Linux FSH
LINUX FSH

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 :
- 1994 yılında ilk yapısı tasarlandıktan sonra şuan kullanılan 3.0 versiyonu 2015 yılında standartlaşmıştır.
- Linux Foundation tarafından hakkı saklıdır.
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.
/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/sysdizinini içerir. Bu,/procdizinine (procfs) benzer.
Geleneksel birçok Unix-benzeri işletim sistemi ise/sysdizinini çekirdek kaynak ağacına sembolik bir bağlantı olarak kullanır./usr/local dizini:
Modern Unix-benzeri sistemlerin birçoğu (ör. FreeBSD ve OpenBSD), üçüncü taraf paketleriportssistemleri aracılığıyla/usr/localdizinine kurar. İşletim sisteminin bir parçası olarak kabul edilen kodu ise/usrdizininde tutarlar./lib ve /usr/lib dizinleri:
Bazı Linux dağıtımları artık/libve/usr/libdizinleri arasında bir ayrım yapmamaktadır. Bu durumda,/libdizini genellikle/usr/libdizinine sembolik bir bağlantı (symlink) olarak ayarlanır./bin, /usr/bin, /sbin ve /usr/sbin dizinleri:
- Bazı Linux dağıtımları,
/binile/usr/binve/sbinile/usr/sbindizinleri arasındaki farkı kaldırmıştır. Bu durumda,/bindizini/usr/bin'e ve/sbindizini/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.
- Bazı Linux dağıtımları,
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.
/run dizini:
Modern Linux dağıtımları, geçici bir dosya sistemi (tmpfs) olarak/rundizinini içerir ve uçucu çalışma zamanı verilerini depolar. Bu, FHS 3.0 sürümüne uygundur.Önceki durum (/var/run):
FHS 2.3 sürümüne göre bu tür veriler/var/rundizininde depolanıyordu. Ancak bu dizin, erken önyükleme sırasında her zaman kullanılabilir olmadığı için sorunlar ortaya çıkıyordu.Geçici çözümler:
Bu sorunu aşmak için bazı programlar,/dev/.udev,/dev/.mdadm,/dev/.systemdveya/dev/.mountgibi dizinlere başvuruyordu. Ancak, aygıt dizini bu tür veriler için tasarlanmış değildir./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
/rundizininde depolanabilir.
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.