हां, लिनक्स में फाइल सिस्टम को कर्नेल मॉड्यूल के रूप में लागू किया जा सकता है। लेकिन FUSE (USErspace में फाइलसिस्टम) इंटरफ़ेस भी है, जो एक नियमित उपयोगकर्ता-अंतरिक्ष प्रक्रिया को फाइलसिस्टम चालक के रूप में कार्य करने की अनुमति दे सकता है। यदि आप एक नई फाइल सिस्टम का प्रोटोटाइप बना रहे हैं, तो इसे पहले FUSE इंटरफ़ेस का उपयोग करके लागू करना परीक्षण और विकास को आसान बना सकता है। एक बार जब आपके पास फ़ाइल सिस्टम का इंटर्न्स FUSE रूप में काम करता है, तो आप इसके बाद एक प्रदर्शन-अनुकूलित कर्नेल मॉड्यूल संस्करण लागू करना शुरू कर सकते हैं।
कर्नेल स्थान के भीतर एक फाइल सिस्टम को लागू करने के बारे में कुछ बुनियादी जानकारी यहाँ दी गई है। यह बल्कि पुराना है (1996 से!), लेकिन कम से कम आपको उस तरह की चीजों के लिए एक बुनियादी विचार देना चाहिए जो आपको करने की आवश्यकता होगी।
यदि आप FUSE मार्ग पर जाना चुनते हैं, तो यहां का libfuse, FUSE इंटरफ़ेस के उपयोक्ता पक्ष का संदर्भ कार्यान्वयन है।
फाइलसिस्टम चालक कर्नेल मॉड्यूल के रूप में
मूल रूप से, आपके फाइलसिस्टम ड्राइवर मॉड्यूल के आरंभीकरण फ़ंक्शन को केवल एक register_filesystem()
फ़ंक्शन को कॉल करने की आवश्यकता है , और इसे एक पैरामीटर के रूप में देना है जिसमें एक फ़ंक्शन पॉइंटर शामिल है जो आपके फाइलसिस्टम ड्राइवर में फ़ंक्शन की पहचान करता है जिसे आपके सिस्टम सिस्टम की पहचान करने में पहले चरण के रूप में उपयोग किया जाएगा। टाइप करें और इसे माउंट करें। उस अवस्था में अधिक कुछ नहीं होता है।
जब एक फाइलसिस्टम आरोहित हो रहा होता है, और या तो आपके सिस्टम से मेल करने के लिए फाइलसिस्टम प्रकार निर्दिष्ट किया जाता है, या फाइलसिस्टम टाइप ऑटो-डिटेक्शन परफॉर्म किया जा रहा होता है, तो कर्नेल का वर्चुअल फाइलसिस्टम (VFS फॉर शॉर्ट) लेयर उस फंक्शन को कॉल करेगा। यह मूल रूप से कहता है "यहां एक मानक लिनक्स ब्लॉक डिवाइस के कर्नेल-स्तरीय प्रतिनिधित्व के लिए एक संकेतक है। इस पर एक नज़र डालें, देखें कि क्या यह कुछ ऐसा है जिसे आप संभाल सकते हैं, और फिर मुझे बताएं कि आप इसके साथ क्या कर सकते हैं।"
उस बिंदु पर, आपके ड्राइवर को यह पढ़ने के लिए माना जाता है कि इसे फाइल सिस्टम के लिए सही ड्राइवर को सत्यापित करने के लिए जो भी आवश्यक है, और फिर एक संरचना लौटाएं जिसमें आगे के कार्यों के लिए पॉइंटर्स शामिल हैं जो आपका ड्राइवर उस विशेष फाइल सिस्टम के साथ कर सकता है। या अगर फ़ाइल सिस्टम ड्राइवर डिस्क पर डेटा को नहीं पहचानता है, तो यह एक उचित त्रुटि परिणाम वापस करने के लिए माना जाता है, और फिर वीएफएस या तो उपयोगकर्ता-विफलता की रिपोर्ट करेगा या - यदि फ़ाइल सिस्टम प्रकार ऑटो-डिटेक्शन का प्रदर्शन किया जा रहा है - तो एक और फाइल सिस्टम पूछेगा ड्राइवर की कोशिश
कर्नेल में अन्य ड्राइवर मानक ब्लॉक डिवाइस इंटरफ़ेस प्रदान करेंगे, इसलिए फ़ाइल सिस्टम ड्राइवर को हार्डवेयर समर्थन को लागू करने की आवश्यकता नहीं होगी। मूल रूप से, फाइलसिस्टम ड्राइवर इसे दिए गए डिवाइस पॉइंटर के साथ मानक कर्नेल-स्तर फ़ंक्शन का उपयोग करके डिस्क ब्लॉक को पढ़ और लिख सकता है।
VFS परत VFS परत को कई मानक कार्य उपलब्ध कराने के लिए फाइलसिस्टम ड्राइवर की अपेक्षा करती है; VFS लेयर के लिए फाइल सिस्टम के साथ कुछ भी सार्थक करने के लिए इनमें से कुछ अनिवार्य हैं, अन्य वैकल्पिक हैं और आप ऐसे वैकल्पिक फ़ंक्शन के लिए पॉइंटर के स्थान पर NULL वापस कर सकते हैं।