क्या मैं फाइलसिस्टम को सूचीबद्ध कर सकता हूं जो एक रनिंग कर्नेल सपोर्ट कर सकता है?


27

मैं यह पता लगाने की कोशिश कर रहा हूं कि कर्नेल किस फाइल सिस्टम का समर्थन कर सकता है। आदर्श रूप से उनके नामों की एक छोटी सूची में, लेकिन मुझे आपके द्वारा प्राप्त कुछ भी मिलेगा।

ध्यान दें कि मुझे वर्तमान फाइल सिस्टम का उपयोग करने का मतलब नहीं है , बस यह कि वर्तमान कर्नेल, सैद्धांतिक रूप से सीधे समर्थन कर सकता है (जाहिर है, फ्यूज अनंत संख्याओं का अधिक समर्थन कर सकता है )।

जवाबों:


12

क्या मैं फाइलसिस्टम को सूचीबद्ध कर सकता हूं जो एक रनिंग कर्नेल सपोर्ट कर सकता है?

खैर, जवाब /proc/filesystems बस गलत है - यह केवल उन एफएस को दर्शाता है जो पहले से उपयोग में लाए गए हैं, लेकिन आमतौर पर एक तरह से अधिक हैं:

ls /lib/modules/$(uname -r)/kernel/fs

एक अन्य स्रोत है /proc/config.gzजो आपके डिस्ट्रो में अनुपस्थित हो सकता है (और मुझे हमेशा आश्चर्य होता है «क्यों?» मामले में)।


2
उबंटू का कर्नेल विन्यास शामिल है, बस एक अलग स्थान पर:/boot/config-$(uname -r)
ओली

2
/proc/filesystemsयह गलत नहीं है , यह सिर्फ अधूरा है
21

3
@poige उस तर्क से आपका उत्तर बहुत अधूरा और गलत भी है। /lib/modules/$(uname -r)/kernel/fsकेवल उन फाइल सिस्टम के साथ मदद करेगा जिन्हें मॉड्यूल के रूप में सक्षम किया गया है, न कि कर्नेल में निर्मित। इसके अतिरिक्त एक मॉड्यूल नाम फाइलसिस्टम के नाम से मेल नहीं खाता है जो इसे प्रदान करता है, और एक एकल मॉड्यूल कई फाइल सिस्टम प्रदान कर सकता है।
पैट्रिक

4
यह उत्तर भ्रामक है, यदि कोई मॉड्यूल लोड नहीं किया गया है, तो कर्नेल उस फाइलसिस्टम को तब तक लोड नहीं कर सकता है जब तक यह है। यह बताने के लिए कि कर्नेल लोड कर सकता है यह सही नहीं है - आपको पता नहीं है कि क्या आप सफलतापूर्वक मॉड्यूल लोड कर सकते हैं। इस बात की भी कोई गारंटी नहीं है कि आप उस मॉड्यूल को लोड कर सकते हैं
क्रिस डाउन

3
@poige वास्तव में मैं बिल्कुल भी नजरअंदाज नहीं कर रहा हूँ /proc/config.gz। 1) यह मौजूद होने की गारंटी नहीं है, 2) एक मॉड्यूल नाम फाइल सिस्टम नाम जो इसे प्रदान करता है, से मेल नहीं खा सकता है, और एक मॉड्यूल एक से अधिक सिस्टम सिस्टम प्रदान कर सकता है।
पैट्रिक

11

/proc/filesystemsफाइलसिस्टम विशेषताओं के साथ चल रहे कर्नेल द्वारा समर्थित सभी फाइलसिस्टम प्रकारों को सूचीबद्ध nodevकरता है, यह इंगित करने के लिए कि यह फाइल सिस्टम ब्लॉक डिवाइस द्वारा समर्थित नहीं है, उदाहरण के लिए।

man 5 filesystems कुछ और अधिक जानकारी देता है।


1
nodevजब आप आउटपुट में क्या मतलब है cat /proc/filesystems?
स्लम

मेरे आर्क लिनक्स लैपटॉप पर, cat /proc/filesystems"नोडव" का एक गुच्छा, स्पष्ट रूप से विशेष-उद्देश्य वाले फाइलसिस्टम, प्लस ext2, ext3, ext4 को सूचीबद्ध करता है। जब मैं अंदर देखता हूं /lib/modules/3.11.6-1-ARCH/kernel/fs, तो मुझे "वसा", "btrfs", "reiserfs" जैसे कई अन्य दिखाई देते हैं, जो नियमित रूप से डिस्क-डिस्क फ़ाइल सिस्टम पर भी होते हैं, लेकिन /proc/filesystemसूची में दिखाई नहीं देते हैं । उसके साथ क्या है?
ब्रूस एडिगर

1
nodevइंगित करता है कि विचाराधीन फाइलसिस्टम एक भौतिक फाइलसिस्टम नहीं है, जिसे जीने के लिए एक ब्लॉक डिवाइस की जरूरत है, बल्कि एक वर्चुअल फाइलसिस्टम है, जो ब्लॉक डिवाइस के अलावा किसी अन्य चीज से समर्थित है।
जोनाथन कॉलन

5
@BruceEdiger: /proc/filesystemsकेवल उन फ़ाइल सिस्टम को दिखाता है जो कर्नेल ने लोड किए हैं - जब तक आप उन मॉड्यूल को कर्नेल में नहीं डालते हैं (जो आमतौर पर स्वचालित रूप से तब होता है जब आपको उनकी आवश्यकता होती है), कर्नेल उन फाइल सिस्टम का समर्थन नहीं कर सकता है।
जोनाथन कैलन

0

मुझे विश्वास है कि यह आपको वही देगा जो आप चाहते हैं:

(cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d'; ls -1 /lib/modules/$(uname -r)/kernel/fs) | sort -u

व्याख्या

मेरी सबसे अच्छी समझ के आधार पर:

  • cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d' आपको उन सभी फ़ाइल सिस्टम को देता है जो मूल रूप से कर्नेल (जैसे sysfs) द्वारा समर्थित होते हैं, जिनके साथ उनके ko मॉड्यूल लोड होते हैं
  • ls -1 /lib/modules/$(uname -r)/kernel/fs आपको आपके कर्नेल के लिए उपलब्ध फ़ाइल सिस्टम मॉड्यूल की सूची प्रदान करता है
  • sort -u पहले दो आदेशों के संयुक्त परिणामों को हटाए गए डुप्लिकेट के साथ क्रमबद्ध करें (केवल अनन्य परिणाम दिखाएं -u)

मैं अभी भी linux सीख रहा हूं, यह Arch linux पर काम करता है लेकिन मेरा मानना ​​है कि कम से कम ubuntu के लिए आपको /lib/modules/$(uname -r)/kernel/fsअपने डिस्ट्रीब्यूशन के लिए उपयुक्त एक अलग डायरेक्टरी के लिए रास्ता बदलना पड़ सकता है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.