Devtmpfs Dosya Sistemi

Çalışan bir Linux dosya sisteminin en temel bileşenlerinden biri /dev dizini altında yer alan aygıt dosyalarıdır. Dosya sisteminde normal bir dosya gibi görünen bu dosyalar, diğerlerinden farklı olarak bir adet MAJOR bir adet de MINOR numarası içerirler. Linux çekirdeği tarafından dosyaların isimlerinin bir anlamı yoktur, önemli olan ilişkili oldukları major:minor numaralarıdır.

Örnek olarak /dev/ttyS0 özel dosyasının major numarası 4, minor numarası 64'tür. Aynı major:minor numaralarına sahip /dev/seriport isminde bir aygıt dosyası üretilirse, hangi dosya üzerinden erişim yaparsak yapalım, gerçekte hep aynı aygıt üzerinde çalışmış oluruz (örneğimizde birinci seri port).

Sistemde çalışan uygulamalar /dev dizini altındaki fiziksel ve soyut aygıt dosyalarına ihtiyaç duyarlar. Kendisine yazılan tüm içeriği yok eden /dev/null, istendiği kadar rastgele veri üreten /dev/random, istendiği kadar NULL veri üreten /dev/zero vb. gibi dosyaların da kendilerine özgü bir major ve minor numaraları bulunmaktadır.

Özetle major:minor ikilisi, ilgili aygıt dosyasının çekirdek içerisindeki hangi katmanla ilişkili olduğunu ve hangi driver/fonksiyonların kullanılacağını da belirtmiş olur.

Linux sistemlerinde /dev dizini altındaki aygıt dosyalarının oluşturulması için 3 temel yöntem bulunur:

  • mknod uygulamasıyla statik olarak önceden gerekli tüm aygıt dosyaları hazırlanabilir. Zahmetli bir süreçtir.
  • udev servisi üzerinden çekirdek tarafından gönderilen mesajlar dinlenir ve yeni bir aygıt ilklendirildiğinde veya ortadan kalktığında üretilmesi/silinmesi gereken aygıt dosyaları udev tarafından düzenlenir.
  • devtmpfs sistemiyle Linux çekirdeği tarafından, tmpfs dosya sisteminde mount edilmiş bir alan üzerinde otomatik olarak üretilebilir. Gömülü sistemler için oldukça uygundur, Linux dağıtımlarında da kullanılmaya başlandığı görülmektedir.

devtmpfs özelliği, Linux çekirdeğinin 2.6.32 versiyonuyla birlikte sunulmaya başlanmıştır. Bu özelliği destekleyen bir çekirdeğe sahipseniz diğer opsiyonlara bakmanıza hiç gerek yoktur. Bu yöntemin hem kullanımı kolay (neredeyse hiç bir işlem yapmak zorunda kalmıyoruz) hem de çalışma zamanında özellikle açılış sürecinde getirdiği ek yavaşlık sıfıra yakındır (udev modelinde ilk açılışta sysfs üzerinden parse işlemi yapıp tüm aygıtları bulması ve gerekli aygıt dosyalarını oluşturması 5-20 saniye arası alabilmektedir).

Bazı gömülü sistemlerle birlikte gelen öntanımlı çekirdek konfigürasyon dosyalarında, çoğu zaman üretici devtmpfs desteğinden habersiz olduğundan veya bir şekilde eski konfigürasyon dosyaları yeni özellikler dikkate alınmadan dağıtılmaya devam ettiğinden, devtmpfs desteğinin kapalı olarak geldiği görülmektedir. Bu gibi senaryolarda, konfigürasyon dosyasında CONFIG_DEVTMPFS ve CONFIG_DEVTMPFS_MOUNT seçeneklerini aktif hale getiriniz.

CONFIG_DEVTMPFS desteği, çekirdeğin devtmpfs özelliğiyle üretilmesini sağlar. Ancak sadece bu seçenek aktif ise, açılış sırasında devtmpfs özel dosya sistemini aşağıdaki gibi bir komutla sizin mount etmeniz gerekir:

mount -t devtmpfs none /dev

Ancak bu mount işleminden sonra sistemi kullanabilir olursunuz.

CONFIG_DEVTMPFS_MOUNT seçeneğini de aktifleştirdiğinizde, çekirdek kök dosya sistemini mount ettiğinde, otomatik olarak devtmpfs dosya sistemini de /dev dizini altına mount eder. Bu senaryoda açılış sürecinden bizim yukarıdaki gibi mount komutuyla ek bir işlem yapmamıza gerek kalmaz. Önerilen yöntem her iki seçeneğin de aktif edilmesidir.

Bu iki özellik sayesinde, /dev dizini altında sadece o an sistemde mevcut olan aygıtlara ilişkin dosyaların barındırılması garantilenmiş olur. İlgili aygıt çıkartıldığında veya çekirdek modülü kaldırıldığında, ilişkili aygıt dosyaları da çekirdek tarafından kaldırılır (örneğin usb seri port çeviricinin çıkartılması durumu).

results matching ""

    No results matching ""