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/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./usr/local dizini:
Modern Unix-benzeri sistemlerin birçoğu (ör. FreeBSD ve OpenBSD), üçüncü taraf paketleriports
sistemleri aracılığıyla/usr/local
dizinine kurar. İşletim sisteminin bir parçası olarak kabul edilen kodu ise/usr
dizininde tutarlar./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./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.
- 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/run
dizinini 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/run
dizininde 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/.systemd
veya/dev/.mount
gibi 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
/run
dizininde 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.