Ya, sistem file di Linux dapat diimplementasikan sebagai modul kernel. Tetapi ada juga antarmuka FUSE (Filesystem in USErspace), yang dapat memungkinkan proses ruang pengguna biasa untuk bertindak sebagai driver sistem file. Jika Anda membuat prototipe sistem file baru, mengimplementasikannya terlebih dahulu menggunakan antarmuka FUSE dapat membuat pengujian dan pengembangan lebih mudah. Setelah internal internal filesystem Anda bekerja dalam bentuk FUSE, Anda kemudian dapat mulai mengimplementasikan versi modul kernel yang dioptimalkan kinerja.
Berikut ini beberapa informasi dasar tentang penerapan sistem file di dalam ruang kernel. Agak tua (dari tahun 1996!), Tapi itu setidaknya memberi Anda ide dasar untuk hal-hal yang perlu Anda lakukan.
Jika Anda memilih untuk pergi ke rute FUSE, inilah libfuse, implementasi referensi sisi userspace dari antarmuka FUSE.
Driver sistem file sebagai modul kernel
Pada dasarnya, fungsi inisialisasi modul driver sistem file Anda hanya perlu memanggil register_filesystem()
fungsi, dan memberikannya sebagai parameter struktur yang menyertakan pointer fungsi yang mengidentifikasi fungsi dalam driver sistem file Anda yang akan digunakan sebagai langkah pertama dalam mengidentifikasi sistem file Anda ketik dan pasang itu. Tidak ada lagi yang terjadi pada tahap itu.
Ketika sebuah filesystem sedang di-mount, dan salah satu tipe filesystem ditentukan untuk mencocokkan driver Anda, atau deteksi otomatis tipe filesystem sedang dilakukan, layer Virtual FileSystem kernel (VFS) akan memanggil fungsi itu. Itu pada dasarnya mengatakan "Ini adalah pointer ke representasi tingkat kernel dari perangkat blok Linux standar. Lihatlah, lihat apakah itu sesuatu yang dapat Anda tangani, dan kemudian beri tahu saya apa yang dapat Anda lakukan dengannya."
Pada titik itu, driver Anda seharusnya membaca apa pun yang diperlukan untuk memverifikasi itu adalah driver yang tepat untuk sistem file, dan kemudian mengembalikan struktur yang menyertakan pointer ke fungsi lebih lanjut yang dapat dilakukan driver Anda dengan sistem file tertentu. Atau jika driver filesystem tidak mengenali data pada disk, itu seharusnya mengembalikan hasil kesalahan yang sesuai, dan kemudian VFS akan melaporkan kegagalan ke userspace atau - jika deteksi otomatis tipe filesystem sedang dilakukan - akan meminta filesystem lain driver untuk mencoba.
Driver lain di kernel akan menyediakan antarmuka perangkat blok standar, sehingga driver sistem file tidak harus mengimplementasikan dukungan perangkat keras. Pada dasarnya, driver sistem file dapat membaca dan menulis blok disk menggunakan fungsi level kernel standar dengan penunjuk perangkat yang diberikan padanya.
Lapisan VFS mengharapkan driver sistem file untuk membuat sejumlah fungsi standar tersedia untuk lapisan VFS; beberapa di antaranya wajib untuk lapisan VFS untuk melakukan sesuatu yang berarti dengan sistem file, yang lain adalah opsional dan Anda bisa mengembalikan NULL sebagai pengganti pointer ke fungsi opsional.