Evet, Linux'taki dosya sistemleri çekirdek modülleri olarak uygulanabilir. Ancak, düzenli bir kullanıcı alanı işleminin bir dosya sistemi sürücüsü gibi davranmasına izin verebilen FUSE (USErspace'deki Dosya Sistemi) arayüzü de vardır. Yeni bir dosya sisteminin prototipini oluşturuyorsanız, önce FUSE arayüzünü kullanarak uygulamak test ve geliştirmeyi kolaylaştırabilir. Dosya sisteminin iç kısımları FUSE formunda çalıştıktan sonra, performansı optimize edilmiş bir çekirdek modülü sürümünü uygulamaya başlayabilirsiniz.
Çekirdek alanı içinde bir dosya sistemi uygulamak hakkında bazı temel bilgiler. Oldukça eskidir (1996'dan itibaren!), Ancak bu en azından yapmanız gereken şeyler için temel bir fikir vermelidir.
FUSE yoluna gitmeyi seçerseniz, burada libuse, FUSE arayüzünün kullanıcı alanı tarafının referans uygulamasıdır.
Çekirdek modülü olarak dosya sistemi sürücüsü
Temel olarak, dosya sistemi sürücü modülünüzün başlatma işlevinin yalnızca bir register_filesystem()
işlevi çağırması ve bu işlevi parametre olarak dosya sistemi sürücünüzde dosya sisteminizi tanımlamanın ilk adımı olarak kullanılacak işlevi tanımlayan bir işlev işaretçisi içeren bir yapı vermesi gerekir. yazın ve monte edin. Bu aşamada başka bir şey olmaz.
Bir dosya sistemi bağlanırken ve dosya sistemi türü sürücünüzle eşleşecek şekilde belirtilirse veya dosya sistemi türü otomatik algılama gerçekleştirilirse, çekirdeğin Sanal Dosya Sistemi (kısaca VFS) katmanı bu işlevi çağırır. Temel olarak "İşte, standart bir Linux blok cihazının çekirdek düzeyinde bir gösterimine bir işaretçi. Bir göz atın, işleyebileceğiniz bir şey olup olmadığına bakın ve sonra bana ne yapabileceğinizi söyleyin."
Bu noktada, sürücünüzün dosya sistemi için doğru sürücü olduğunu doğrulamak için ihtiyaç duyduğu her şeyi okuması ve ardından sürücünüzün bu belirli dosya sistemiyle yapabileceği daha fazla işlev için işaretçiler içeren bir yapı döndürmesi gerekir. Veya dosya sistemi sürücüsü diskteki verileri tanımıyorsa, uygun bir hata sonucu döndürmesi gerekir ve daha sonra VFS kullanıcı alanına bir hata bildirir veya - dosya sistemi otomatik algılama yapılıyorsa - başka bir dosya sistemine sorar denemek için sürücü.
Çekirdekteki diğer sürücüler standart blok aygıt arabirimini sağlar, bu nedenle dosya sistemi sürücüsünün donanım desteği uygulaması gerekmez. Temel olarak, dosya sistemi sürücüsü, verilen aygıt işaretçisi ile standart çekirdek düzeyindeki işlevleri kullanarak disk bloklarını okuyabilir ve yazabilir.
VFS katmanı, dosya sistemi sürücüsünün VFS katmanı için bir dizi standart işlevi sunmasını bekler; VFS katmanının dosya sistemiyle anlamlı bir şey yapması için bunlardan birkaçı zorunludur, diğerleri isteğe bağlıdır ve böyle bir isteğe bağlı işleve bir işaretçi yerine NULL döndürebilirsiniz.