ใช่ระบบไฟล์ใน Linux สามารถใช้งานได้เป็นโมดูลเคอร์เนล แต่ยังมีอินเทอร์เฟซ FUSE (ระบบไฟล์ใน USErspace) ซึ่งสามารถอนุญาตให้กระบวนการผู้ใช้พื้นที่ปกติทำหน้าที่เป็นไดรเวอร์ระบบไฟล์ หากคุณสร้างต้นแบบระบบไฟล์ใหม่การใช้งานครั้งแรกโดยใช้ส่วนต่อประสาน FUSE อาจทำให้การทดสอบและการพัฒนาง่ายขึ้น เมื่อคุณมีระบบไฟล์ภายในที่ทำงานในรูปแบบ FUSE แล้วคุณอาจเริ่มใช้เวอร์ชันโมดูลเคอร์เนลที่ปรับปรุงประสิทธิภาพ
ต่อไปนี้เป็นข้อมูลพื้นฐานเกี่ยวกับการใช้ระบบไฟล์ภายในพื้นที่เคอร์เนล มันค่อนข้างเก่า (จากปี 1996!) แต่อย่างน้อยก็ควรให้ความคิดพื้นฐานสำหรับสิ่งที่คุณต้องทำ
หากคุณเลือกที่จะไปที่เส้นทาง FUSE นี่คือ libfuse การใช้งานอ้างอิงของด้าน userspace ของอินเตอร์เฟส FUSE
ไดรเวอร์ระบบไฟล์เป็นโมดูลเคอร์เนล
โดยทั่วไปแล้วฟังก์ชั่นการเริ่มต้นของโมดูลไดรเวอร์ระบบไฟล์ของคุณต้องการเพียงแค่เรียกใช้register_filesystem()
ฟังก์ชันและให้มันเป็นพารามิเตอร์โครงสร้างที่มีตัวชี้ฟังก์ชั่นที่ระบุฟังก์ชั่นในไดรเวอร์ระบบไฟล์ของคุณที่จะใช้เป็นขั้นตอนแรกในการระบุระบบไฟล์ของคุณ พิมพ์และติดตั้ง ไม่มีอะไรเกิดขึ้นในขั้นตอนนั้นอีก
เมื่อระบบไฟล์กำลังถูกเมาต์และระบุชนิดของระบบไฟล์เพื่อให้ตรงกับไดรเวอร์ของคุณหรือกำลังดำเนินการตรวจจับชนิดของระบบไฟล์อัตโนมัติ Virtual FileSystem (VFS สำหรับระยะสั้น) เลเยอร์ของเคอร์เนลจะเรียกใช้ฟังก์ชันนั้น โดยทั่วไปแล้วจะพูดว่า "นี่คือตัวชี้ไปยังการแสดงระดับเคอร์เนลของอุปกรณ์บล็อกมาตรฐาน Linux ลองดูดูว่าเป็นสิ่งที่คุณสามารถจัดการได้หรือไม่แล้วบอกฉันว่าคุณสามารถทำอะไรกับมันได้บ้าง"
ณ จุดนั้นไดรเวอร์ของคุณควรอ่านสิ่งที่ต้องการเพื่อตรวจสอบว่าเป็นไดรเวอร์ที่เหมาะสมสำหรับระบบไฟล์จากนั้นส่งคืนโครงสร้างที่มีพอยน์เตอร์เพื่อใช้งานฟังก์ชั่นเพิ่มเติมที่ไดรเวอร์ของคุณสามารถทำได้กับระบบไฟล์นั้น ๆ หรือถ้าโปรแกรมควบคุมระบบไฟล์ไม่รู้จักข้อมูลบนดิสก์ก็ควรจะส่งกลับข้อผิดพลาดที่เหมาะสมและจากนั้น VFS จะรายงานความล้มเหลวในการ userpace หรือ - ถ้าระบบแฟ้มกำลังตรวจหาอัตโนมัติประเภท - จะถามระบบไฟล์อื่น ลองขับดู
ไดรเวอร์อื่น ๆ ในเคอร์เนลจะจัดเตรียมอินเตอร์เฟสอุปกรณ์บล็อกมาตรฐานดังนั้นไดรเวอร์ระบบไฟล์ไม่จำเป็นต้องใช้การสนับสนุนฮาร์ดแวร์ โดยทั่วไปแล้วไดรเวอร์ระบบไฟล์สามารถอ่านและเขียนบล็อกดิสก์โดยใช้ฟังก์ชั่นระดับเคอร์เนลมาตรฐานพร้อมกับตัวชี้อุปกรณ์ที่กำหนดให้
เลเยอร์ VFS คาดว่าไดรเวอร์ระบบไฟล์จะทำหน้าที่มาตรฐานหลายอย่างให้กับเลเยอร์ VFS สองสามอย่างนี้จำเป็นสำหรับเลเยอร์ VFS ที่จะทำสิ่งใดที่มีความหมายกับระบบไฟล์ส่วนอื่นเป็นทางเลือกและคุณสามารถคืนค่า NULL แทนตัวชี้ไปยังฟังก์ชันตัวเลือก