天天看點

linux /sys目錄下的各個子目錄說明

ramdisk 檔案系統基于磁盤模拟技術,實際檔案系統是ex2 ex3等

sysfs是一種基于ram檔案系統,和proc一樣。

Sysfs檔案系統是一個類似于proc檔案系統的特殊檔案系統,用于将系統中的裝置組織成層次結構,并向使用者模式程式提供詳細的核心資料結構資訊。

其實,就是 在使用者态可以通過對sys檔案系統的通路,來看核心态的一些驅動或者裝置等。

mount -t sysfs sysfs /sys

# ls /sys/

block     class     firmware  kernel    power

bus       devices   fs        module

-----------------------------------------------------------------------------------------------------------------------------

1./sys/devices

# ls /sys/devices/

platform  system

# ls /sys/devices/platform/

dm9000.0        s3c2410-rtc     s3c2440-uart.0  s3c24xx_led.2 

power           s3c2410-wdt     s3c2440-uart.1  s3c24xx_led.3

s3c2410-iis     s3c2440-i2c     s3c2440-uart.2  serial8250

s3c2410-lcd     s3c2440-nand    s3c24xx_led.0   serial8250.0

s3c2410-ohci    s3c2440-sdi     s3c24xx_led.1   uevent

# ls /sys/devices/system/

clocksource   s3c2410-core  s3c2440-core  s3c2443-core  timekeeping

cpu           s3c2412-core  s3c2442-core  s3c24xx-dma   timer

該目錄下是全局裝置結構體系,包含所有被發現的注冊在各種總線上的各種實體裝置。一般來說,所有的實體裝置都按其在總線上的拓撲結構來顯示,但有兩個例外,即platform devices和system devices。platform devices一般是挂在晶片内部的高速或者低速總線上的各種控制器和外設,它們能被CPU直接尋址;system devices不是外設,而是晶片内部的核心結構,比如CPU,timer等,它們一般沒有相關的驅動,但是會有一些體系結構相關的代碼來配置它們。

(sys/devices是核心對系統中所有裝置的分層次表達模型,也是/sys檔案系統管理裝置的最重要的目錄結構)

 ----------------------------------------------------------------------------------------------------------------------------

2.sys/dev

該目錄下維護一個按照字元裝置和塊裝置的主次号碼(major:minor)連結到真是裝置(/sys/devices)的符号連結檔案。

---------------------------------------------------------------------------------------------------------------------------- 

3./sys/class

# ls /sys/class/

graphics      misc          printer       sound         vc

hwmon         mmc_host      rtc           spi_master    vtconsole

i2c-adapter   mtd           scsi_device   tty

input         net           scsi_disk     usb_endpoint

mem           ppdev         scsi_host     usb_host

該目錄下包含所有注冊在kernel裡面的裝置類型,這是按照裝置功能分類的裝置模型,每個裝置類型表達具有一種功能的裝置。每個裝置類型子目錄下都是這種裝置類型的各種具體裝置的符号連結,這些連結指向/sys/devices/name下的具體裝置。裝置類型和裝置并沒有一一對應的關系,一個實體裝置可能具備多種裝置類型;一個裝置類型隻表達具有一種功能的裝置,比如:系統所有輸入裝置都會出現在/sys/class/input之下,而不論它們是以何種總線連接配接到系統的。(/sys/class也是構成linux統一裝置模型的一部分)

---------------------------------------------------------------------------------------------------------------------------- 

4./sys/block

# ls /sys/block/

loop0      loop4      mtdblock0  ram0       ram12      ram2       ram6

loop1      loop5      mtdblock1  ram1       ram13      ram3       ram7

loop2      loop6      mtdblock2  ram10      ram14      ram4       ram8

loop3      loop7      mtdblock3  ram11      ram15      ram5       ram9

該目錄下的所有子目錄代表着系統中目前被發現的所有塊裝置。按照功能來說放置在/sys/class下會更合适,但由于曆史遺留因素而一直存在于/sys/block,但從linux2.6.22核心開始這部分就已經标記為過去時,隻有打開了CONFIG_SYSFS_DEPRECATED配置編譯才會有這個目錄存在,并且其中的内容在從linux2.6.26版本開始已經正式移到了/sys/class/block,舊的接口/sys/block為了向後相容而保留存在,但其中的内容已經變為了指向它們在/sys/devices/中真實裝置的符号連結檔案。

 ----------------------------------------------------------------------------------------------------------------------------

5./sys/bus

# ls /sys/bus/

i2c       mmc       platform  scsi      serio     spi       usb

該目錄下的每個子目錄都是kernel支援并且已經注冊了的總線類型。這是核心裝置按照總線類型分層放置的目錄結構,/sys/devices中的所有裝置都是連接配接于某種總線之下的,bus子目錄下的每種具體總線之下可以找到每個具體裝置的符号連結,一般來說每個子目錄(總線類型)下包含兩個子目錄,一個是devices,另一個是drivers;其中devices下是這個總線類型下的所有裝置,這些裝置都是符号連結,它們分别指向真正的裝置(/sys/devices/name/下);而drivers下是所有注冊在這個總線上的驅動,每個driver子目錄下 是一些可以觀察和修改的driver參數。

(它也是構成linux統一裝置模型的一部分)

-----------------------------------------------------------------------------------------------------------------------------

6./sys/fs

【空】

按照設計,該目錄使用來描述系統中所有的檔案系統,包括檔案系統本身和按照檔案系統分類存放的已挂載點。

-----------------------------------------------------------------------------------------------------------------------------

7./sys/kernel

# ls /sys/kernel/

uevent_helper  uevent_seqnum

這個目錄下存放的是核心中所有可調整的參數

-----------------------------------------------------------------------------------------------------------------------------

8./sys/firmware

這裡是系統加載固件機制的對使用者空間的接口,關于固件有專用于固件加載的一套API,在附錄 LDD3 一書中有關于核心支援固件加載機制的更詳細的介紹;

-----------------------------------------------------------------------------------------------------------------------------

9./sys/module

# ls /sys/module/

8250          loop          rcupdate      snd_pcm       usb_storage

atkbd         lp            rd            snd_soc_core  usbcore

dm9dev9000c   mousedev      s3c2410_wdt   snd_timer     usbhid

hid           nfs           s3c_ts        sunrpc        vt

keyboard      ohci_hcd      scsi_mod      tcp_cubic     yaffs

lockd         printk        snd           tsdev

該目錄下有系統中所有的子產品資訊,不論這些子產品是以内聯(inlined)方式編譯到核心映像檔案中還是編譯為外子產品(.ko檔案),都可能出現在/sys/module中。即module目錄下包含了所有的被載入kernel的子產品。

---------------------------------------------------------------------------------------------------------------------------- 

10./sys/power

\# ls /sys/power/

state