Có, các hệ thống tập tin trong Linux có thể được triển khai như các mô-đun hạt nhân. Nhưng cũng có giao diện FUSE (Filesystem in USErspace), có thể cho phép một quy trình không gian người dùng thông thường hoạt động như một trình điều khiển hệ thống tập tin. Nếu bạn đang tạo mẫu hệ thống tệp mới, việc triển khai hệ thống trước tiên bằng giao diện FUSE có thể giúp việc kiểm tra và phát triển dễ dàng hơn. Khi bạn đã xử lý các phần bên trong của hệ thống tập tin ở dạng FUSE, bạn có thể bắt đầu triển khai phiên bản mô-đun hạt nhân được tối ưu hóa hiệu năng của nó.
Dưới đây là một số thông tin cơ bản về việc triển khai một hệ thống tệp trong không gian kernel. Nó khá cũ (từ năm 1996!), Nhưng điều đó ít nhất sẽ cung cấp cho bạn một ý tưởng cơ bản cho loại việc bạn cần làm.
Nếu bạn chọn đi đến tuyến FUSE, đây là libfuse, việc triển khai tham chiếu phía không gian người dùng của giao diện FUSE.
Trình điều khiển hệ thống tập tin như một mô-đun hạt nhân
Về cơ bản, chức năng khởi tạo của mô-đun trình điều khiển hệ thống tệp của bạn chỉ cần gọi một register_filesystem()
hàm và cung cấp cho nó như một tham số cấu trúc bao gồm một con trỏ hàm xác định chức năng trong trình điều khiển hệ thống tệp của bạn sẽ được sử dụng làm bước đầu tiên để xác định hệ thống tệp của bạn gõ và gắn nó. Không có gì xảy ra nhiều hơn ở giai đoạn đó.
Khi một hệ thống tệp đang được gắn kết và loại hệ thống tệp được chỉ định để khớp với trình điều khiển của bạn hoặc tự động phát hiện loại hệ thống tệp đang được thực hiện, lớp Virtual FileSystem (gọi tắt là VFS) của hạt nhân sẽ gọi chức năng đó. Về cơ bản, nó nói "Đây là một con trỏ tới một đại diện cấp hạt nhân của một thiết bị khối Linux tiêu chuẩn. Hãy xem nó, xem đó có phải là thứ bạn có thể xử lý không, và sau đó cho tôi biết bạn có thể làm gì với nó."
Tại thời điểm đó, trình điều khiển của bạn có nghĩa vụ phải đọc bất cứ điều gì cần thiết để xác minh đó là trình điều khiển phù hợp cho hệ thống tệp và sau đó trả về cấu trúc bao gồm các con trỏ tới các chức năng khác mà trình điều khiển của bạn có thể làm với hệ thống tệp cụ thể đó. Hoặc nếu trình điều khiển hệ thống tệp không nhận ra dữ liệu trên đĩa, nó được cho là trả về kết quả lỗi thích hợp và sau đó VFS sẽ báo cáo lỗi cho không gian người dùng hoặc - nếu thực hiện tự động phát hiện loại hệ thống tệp - sẽ hỏi hệ thống tệp khác Lái xe để thử.
Các trình điều khiển khác trong kernel sẽ cung cấp giao diện thiết bị khối tiêu chuẩn, vì vậy trình điều khiển hệ thống tập tin sẽ không phải thực hiện hỗ trợ phần cứng. Về cơ bản, trình điều khiển hệ thống tập tin có thể đọc và ghi các khối đĩa bằng cách sử dụng các hàm cấp hạt nhân tiêu chuẩn với con trỏ thiết bị được cung cấp cho nó.
Lớp VFS hy vọng trình điều khiển hệ thống tập tin sẽ cung cấp một số chức năng tiêu chuẩn cho lớp VFS; một vài trong số này là bắt buộc để lớp VFS thực hiện bất cứ điều gì có ý nghĩa với hệ thống tệp, một số khác là tùy chọn và bạn chỉ có thể trả về NULL thay cho con trỏ cho hàm tùy chọn như vậy.