幾天前公司同事遇到一個怪問題就是使用 ethtool 看網卡的資訊時卻讀不出來相關的資訊.不過很奇怪的事直接看 /sys/class/net/eth0 目錄下網卡的相關資訊還是存在的,但 /sys/ 目錄資料有點多這邊做一下簡介.
從核心 Linux 2.6.15 版後,Linux 全面採用 sysfs 取代過去的 devfs
sysfs – 核心 2.6 後的新檔案系統,裝置名稱還是存放在 /dev/ 目錄下但是多了一個 /sys/ 的目錄 (該目錄是可瀏覽的),裡面存放當前硬體相對應的基本資訊.udev 則是透過 /sys/ 目錄的資訊創建出相對應的硬體設備節點 /dev/.
udev – 是管理目錄 /dev 的新方法,傳統的方式需要在 /dev/ 預先產生可能用不到的裝置名稱,udev 主要是依賴於 sysfs 提供的資訊與用戶提供的規則(Rule) 來創建相對應於系統中存在的 /dev 設備節點名稱.
首先先來看看 /proc 和 /sys 的異同
-
/proc
這個目錄下的資訊都是和核心相關的資料.如 CPU 以及其他硬體的相關設定值. -
/sys
從 2.6 核心開始硬體的系統資訊以更階層式目錄的架構來存放,檔案內容類似於 /proc .
目前新版的 Linux 作業系統都是採用 kernel 2.6 的架構,所以如果想要查詢系統狀態都可以在 /sys 目錄下找到,我們來看一下 /sys 目錄的架構吧!!
-
/sys/block
所有 block 的裝置都顯示在此,不過他只是個連結真正會對應到 /sys/devices/ 等相對應的裝置下. -
/sys/bus
以 bus 來區分系統裝置,如 PCI Express 就會儲存在 /sys/bus/pci_express ,但缺點是裝置皆以數字來排列順序. 我們可以在 /sys/bus/pci_express/devices/0000:00:01.0:pci00 … 之類的資料. 比較不好查詢,需要搭配 #lspci 使用. -
/sys/class
子目錄下以功能區分,如網卡裝置就存放在/sys/class/net -
/sys/dev
雖然區分成 block 和 char 裝置,但實際上也只是個連結,最終是連結至 /sys/devices 下. -
/sys/devices
系統上所有的裝置都可以在此找到. -
/sys/firmware
?? -
/sys/fs
Linux 的檔案系統所使用到的裝置 -
/sys/hypervisor
與虛擬化 XEN 相關的裝置. -
/sys/kernel
kexec 與 kdump 相關的目錄. -
/sys/module
目前有使用到的 modules. -
/sys/power
和電源管理相關的. .
很多基本上我也還沒搞清楚,不過要找系統資料時通常最常使用的是 /sys/class 和 /sys/devices/system 這兩個目錄.關於 udev 的詳細介紹請參考 https://benjr.tw/10632
沒有解決問題,試試搜尋本站其他內容
您好,我現在環境上沒有/sys的filesys ,
想請問如何將/sys加入filesys到環境中
感謝
This post has helped me think things thogurh
/sys/bus 看起來像是放一些跟匯流排資料或driver有關的
http://webcache.googleusercontent.com/search?q=cache:zb1NmcPYHc4J:www.lu
http://www.csie.nctu.edu.tw/~mdchang/lkn/lkn.html
有/sys底下各資料夾的一些解釋
http://www.xxlinux.com/linux/article/development/kernel/20090112/14828.html
/sys/hypervisor
查了一下跟xen虛擬機有關
/sys/kernel
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Refere