ฉันสามารถแสดงรายการระบบไฟล์ที่เคอร์เนลที่ทำงานอยู่สามารถรองรับได้หรือไม่


27

ฉันพยายามตรวจสอบว่าระบบไฟล์ใดที่เคอร์เนลสามารถรองรับได้ นึกคิดในรายชื่อเล็กน้อย แต่ฉันจะทำทุกอย่างที่คุณมี

โปรดทราบว่าผมไม่ได้หมายfilesystems ในปัจจุบันในการใช้คนเพียงว่าเคอร์เนลปัจจุบันอาจทฤษฎีสนับสนุนโดยตรง (ชัดฟิวส์อาจสนับสนุนหมายเลขอนันต์เพิ่มเติม)

คำตอบ:


12

ฉันสามารถแสดงรายการระบบไฟล์ที่เคอร์เนลที่ทำงานอยู่สามารถรองรับได้หรือไม่

ดีคำตอบที่ /proc/filesystemsเป็นความผิดเพียง - มันสะท้อนให้เห็นเพียง FSes ผู้ที่ถูกนำมาใช้งานแล้ว แต่มีมักจะมีวิธีอื่น ๆ :

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

อีกแหล่งที่มา/proc/config.gzซึ่งอาจหายไปใน distro ของคุณ (และฉันมักจะสงสัย«ทำไม?! »ในกรณี)


2
การตั้งค่าเคอร์เนลของ Ubuntu นั้นรวมอยู่ในที่อื่น:/boot/config-$(uname -r)
Oli

2
/proc/filesystemsไม่ผิดก็เป็นเพียงที่ไม่สมบูรณ์
scai

3
@poige ด้วยเหตุผลนั้นคำตอบของคุณก็ไม่สมบูรณ์และผิดอย่างมากเช่นกัน /lib/modules/$(uname -r)/kernel/fsจะช่วยเฉพาะกับระบบไฟล์ที่ถูกเปิดใช้งานเป็นโมดูลไม่ใช่ตัวที่ถูกสร้างไว้ในเคอร์เนล นอกจากนี้ชื่อโมดูลอาจไม่ตรงกับชื่อระบบไฟล์ที่ให้ไว้และโมดูลเดียวสามารถให้ระบบไฟล์หลายระบบ
Patrick

4
คำตอบนี้ทำให้เข้าใจผิดถ้าไม่ได้โหลดโมดูลเคอร์เนลก็ไม่สามารถโหลดประเภทของระบบไฟล์นั้นจนกว่ามันจะเป็น เพื่อระบุว่าเคอร์เนลสามารถโหลดได้ไม่ถูกต้องคุณไม่ทราบว่าสามารถโหลดจนกว่าจะโหลดโมดูลสำเร็จหรือไม่ ไม่มีแม้แต่การรับประกันว่าคุณจะสามารถโหลดโมดูลนั้นได้
Chris Down

3
@poige จริง ๆ แล้วฉันไม่ได้มอง/proc/config.gzอะไรเลย 1) ไม่รับประกันว่าจะมีอยู่ 2) ชื่อโมดูลอาจไม่ตรงกับชื่อระบบไฟล์ที่มีให้และโมดูลเดียวสามารถให้ระบบไฟล์หลายระบบได้
แพทริค

11

/proc/filesystemsแสดงรายการประเภทระบบไฟล์ทั้งหมดที่สนับสนุนโดยเคอร์เนลที่ใช้งานพร้อมกับแอตทริบิวต์ของระบบไฟล์nodevเพื่อระบุว่าระบบไฟล์นี้ไม่ได้รับการสนับสนุนจากอุปกรณ์บล็อกตัวอย่างเช่น

man 5 filesystems ให้ข้อมูลเชิงลึกเพิ่มเติม


1
คุณnodevหมายถึงอะไรในผลลัพธ์เมื่อคุณcat /proc/filesystems?
slm

บนแล็ปท็อป Arch linux ของฉันcat /proc/filesystemsแสดงรายการ "nodev" ระบบไฟล์ที่มีวัตถุประสงค์พิเศษอย่างชัดเจนรวมถึง ext2, ext3, ext4 เมื่อฉันมองเข้าไป/lib/modules/3.11.6-1-ARCH/kernel/fsฉันเห็นคนอื่น ๆ จำนวนมากเช่น "ไขมัน", "btrfs", "reiserfs" ซึ่งเป็นระบบไฟล์บนดิสก์ปกติ แต่ไม่ปรากฏใน/proc/filesystemรายการ เกิดอะไรขึ้นกับสิ่งนั้น
Bruce Ediger

1
nodevบ่งชี้ว่าระบบไฟล์ที่สงสัยไม่ใช่ระบบไฟล์ทางกายภาพที่ต้องการให้อุปกรณ์บล็อกใช้งานได้ แต่เป็นระบบไฟล์เสมือนที่ได้รับการสนับสนุนจากสิ่งอื่นนอกเหนือจากอุปกรณ์บล็อก
Jonathan Callen

5
@BruceEdiger: /proc/filesystemsแสดงเฉพาะระบบไฟล์ที่เคอร์เนลโหลด - จนกว่าคุณจะแทรกโมดูลเหล่านั้นลงในเคอร์เนล (ซึ่งมักจะเกิดขึ้นโดยอัตโนมัติเมื่อคุณต้องการ) เคอร์เนลไม่สามารถรองรับระบบไฟล์เหล่านั้นได้
Jonathan Callen

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) พร้อมกับระบบเคอร์เนลที่โหลดอยู่ในปัจจุบัน
  • ls -1 /lib/modules/$(uname -r)/kernel/fs ให้รายชื่อของโมดูลระบบแฟ้มที่มีอยู่สำหรับเคอร์เนลของคุณ
  • sort -u เรียงลำดับผลลัพธ์ที่รวมกันของสองคำสั่งแรกโดยลบรายการที่ซ้ำกัน (แสดงเฉพาะผลลัพธ์ที่ไม่ซ้ำ -u)

ฉันยังคงเรียนรู้ลินุกซ์สิ่งนี้ใช้ได้กับ Arch linux แต่ฉันเชื่อว่าอย่างน้อยอูบุนตูคุณอาจต้องเปลี่ยนเส้นทาง/lib/modules/$(uname -r)/kernel/fsไปยังไดเรกทอรีอื่นที่เหมาะสมสำหรับการแจกจ่ายของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.