Tôi có thể liệt kê các hệ thống tập tin mà một kernel đang chạy có thể hỗ trợ không?


27

Tôi đang cố gắng phát hiện hệ thống tập tin nào mà kernel có thể hỗ trợ. Lý tưởng nhất là trong một danh sách nhỏ tên của họ nhưng tôi sẽ lấy bất cứ thứ gì bạn có.

Lưu ý rằng tôi không có nghĩa là các hệ thống tập tin hiện tại đang sử dụng , chỉ là những hệ thống mà hạt nhân hiện tại có thể, hỗ trợ trực tiếp về mặt lý thuyết (rõ ràng, cầu chì có thể hỗ trợ số lượng vô hạn nhiều hơn).

Câu trả lời:


12

Tôi có thể liệt kê các hệ thống tập tin mà một kernel đang chạy có thể hỗ trợ không?

Chà, câu trả lời /proc/filesystems đơn giản là sai - nó chỉ phản ánh những FS đã được sử dụng, nhưng thường có một cách khác:

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

Một nguồn khác /proc/config.gzcó thể vắng mặt trong bản phân phối của bạn (và tôi luôn tự hỏi «tại sao?!» Trong trường hợp).


2
Cấu hình kernel của Ubuntu được bao gồm, chỉ ở một nơi khác:/boot/config-$(uname -r)
Oli

2
/proc/filesystemskhông sai , nó chỉ là không đầy đủ .
scai

3
@poige Theo logic đó, câu trả lời của bạn không đầy đủ và sai. /lib/modules/$(uname -r)/kernel/fssẽ chỉ giúp với các hệ thống tập tin đã được kích hoạt dưới dạng các mô-đun, chứ không phải các hệ thống được tích hợp trong kernel. Ngoài ra, một tên mô-đun có thể không khớp với tên hệ thống tệp mà nó cung cấp và một mô-đun duy nhất có thể cung cấp nhiều hệ thống tệp.
Patrick

4
Câu trả lời này là sai lệch, nếu một mô-đun không được tải, hạt nhân đơn giản là không thể tải loại hệ thống tập tin đó cho đến khi nó được. Để nói rằng kernel có thể tải nó không đúng - bạn không biết nếu nó có thể cho đến khi bạn tải thành công mô-đun. Thậm chí không có gì đảm bảo rằng bạn có thể tải mô-đun đó.
Chris Xuống

3
@poige thực sự tôi không xem xét /proc/config.gzgì cả. 1) không đảm bảo tồn tại, 2) Tên mô-đun có thể không khớp với tên hệ thống tệp mà nó cung cấp và một mô-đun duy nhất có thể cung cấp nhiều hệ thống tệp.
Patrick

11

/proc/filesystemsliệt kê tất cả các loại hệ thống tệp được hỗ trợ bởi kernel đang chạy, cùng với các thuộc tính hệ thống tệp, nodevđể chỉ ra rằng hệ thống tệp này không được hỗ trợ bởi một thiết bị khối, chẳng hạn.

man 5 filesystems cung cấp thêm một số thông tin chuyên sâu.


1
nodevnghĩa là gì trong đầu ra khi bạn cat /proc/filesystems?
slm

Trên máy tính xách tay Arch linux của tôi, cat /proc/filesystemsliệt kê một loạt các "gật đầu", rõ ràng là các hệ thống tập tin đặc biệt, cộng với ext2, ext3, ext4. Khi tôi nhìn vào /lib/modules/3.11.6-1-ARCH/kernel/fs, tôi thấy một số người khác, như "chất béo", "btrfs", "reiserfs" cũng là hệ thống tập tin trên đĩa thông thường, nhưng không xuất hiện trong /proc/filesystemdanh sách. Có chuyện gì thế?
Bruce Ediger

1
nodevchỉ ra rằng hệ thống tệp được đề cập không phải là hệ thống tệp vật lý cần thiết bị chặn để hoạt động, mà là hệ thống tệp ảo được hỗ trợ bởi một thứ khác không phải là thiết bị khối.
Jonathan Callen

5
@BruceEdiger: /proc/filesystemschỉ hiển thị các hệ thống tệp mà kernel đã tải - cho đến khi bạn chèn các mô-đun đó vào kernel (thường xảy ra tự động khi bạn cần chúng), kernel không thể hỗ trợ các hệ thống tệp đó.
Jonathan Callen

0

Tôi tin rằng điều này sẽ cung cấp cho bạn những gì bạn muốn:

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

Giải trình

Dựa trên sự hiểu biết tốt nhất của tôi:

  • cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d' cung cấp cho bạn tất cả các hệ thống tệp được hỗ trợ bởi kernel (như sysfs) cùng với các hệ thống có các mô-đun hạt nhân của chúng hiện đang được tải
  • ls -1 /lib/modules/$(uname -r)/kernel/fs cung cấp cho bạn danh sách các mô-đun hệ thống tập tin có sẵn cho kernel của bạn
  • sort -u sắp xếp kết quả tổng hợp của hai lệnh đầu tiên với các bản sao bị xóa (chỉ hiển thị kết quả duy nhất -u)

Tôi vẫn đang học linux, cái này hoạt động trên Arch linux nhưng tôi tin rằng ít nhất ubfox bạn có thể cần thay đổi đường dẫn /lib/modules/$(uname -r)/kernel/fsđến một thư mục khác phù hợp với bản phân phối của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.