फाइलसिस्टम को माउंट करना या रिमूव करना mount(2)
सिस्कल का उपयोग करके किया जाता है । रीमाउंट करते समय, यह लक्ष्य स्थान (माउंटपॉइंट), माउंट ऑपरेशन में उपयोग किए जाने वाले झंडे और इसमें शामिल विशिष्ट फ़ाइल सिस्टम के लिए उपयोग किए जाने वाले किसी भी अतिरिक्त डेटा को लेता है। जब केवल पढ़ने योग्य रिमूव किया जाता है, तो उपयोग किए जाने वाले झंडे होते हैं MS_RDONLY
और MS_REMOUNT
; आप किसी अन्य झंडे को भी प्रदान करने वाले हैं जिसका उपयोग तब किया गया था जब फाइलसिस्टम पहली बार माउंट किया गया था।
एक फाइल-सिस्टम को केवल पढ़ने के लिए रिमूव करना, वास्तव में कर्नेल के फाइलसिस्टम डेटा स्ट्रक्चर्स में एक झंडे को सेट करता है, कुछ क्लीन-अप करने के बाद (मूल रूप से किसी भी बकाया लेखन को पूरा करने के बाद)। आप देख सकते हैं कि यह कैसे में संभाला है स्रोत कोड : अगर एक फाइल सिस्टम लगाया गया है पढ़ने-लिखने की और उसके बाद remounted केवल पढ़ने के लिए, फाइल सिस्टम सिंक हो जाता है, कोटा निलंबित कर रहे हैं, और superblock संरचना में फाइल सिस्टम इंगित करने के लिए अद्यतन किया जाता है है केवल पढ़ने के लिए । यह तब लिखने से इनकार करने के लिए कर्नेल में उपयोग किया जाता है; उदाहरण के लिए देखें जो केवल पढ़ने के लिए फाइल सिस्टम पर लिखने की पहुंच को रोकता है।ext4
ext4
s_flags
sb_permission
यदि आप स्वयं ऐसा करना चाहते हैं, तो आप mount()
ऊपर दिए गए मैनपेज के अनुसार उचित विकल्पों के साथ कॉल करने का प्रयास कर सकते हैं। एक पूर्ण समाधान के लिए मेरा मानना है कि आपको वर्तमान माउंट फ़्लैग को निर्धारित करने और उन्हें अपडेट करने की आवश्यकता होगी, लेकिन आप अपने फाइल सिस्टम को वर्तमान में माउंट किए जाने वाले मैच के लिए एक सरल प्रोग्राम को हार्ड-कोड कर सकते हैं ...
mount()
syscall कॉल करने पर कर्नेल मेरे लिए नहीं करता है ?