2.1 Directory Description目錄描述

Directory Description目錄描述

**bin**Essential command binaries   全部用戶可用的基本命令的二進制程序
**boot**Static files of the boot loader 引導加載器必須用到的靜態文件  ,kernel initramfs(initrd),grub等。
**dev**Device files 存儲特殊文件或設備文件  設備有兩種類型: 塊設備(隨機設備)、字符設備(線性設備)  
            硬盤  、硬盤分區、usb閃存盤 /dev/sd[a-p]數字  
            25針打印機 /dev/lp[0-2] 
            usb接口打印機 /dev/usb/lp[0-15] 
            軟盤 /dev/fd[0-7]
            VirtI/O 界面 /dev/vd[a-p] 
            鼠標 /dev/input/mouse[0-15] (通用)
            CDROM/DVDROM /dev/scd[0-1]  
            /dev/sr[0-1]
            /dev/cdrom
            磁帶機  /dev/ht0 IDE界面
            /dev/sr0 SATA/SCSI界面
            /dev/tape 當前磁帶

**etc**   Host-specific system configuration    系統程序配置文件,不能爲二進制程序   
**home**    普通用戶家目錄的集中位置,通常每一個用戶的家目錄默認爲此目錄下與用戶同名的子目錄 , /home/$USER 
**root**    Home directory for the root user (optional) 管理員的家目錄,可選。應該使用普通用戶登錄。
**lib**     Essential shared libraries and kernel modules   基本共享庫和內核模塊  爲系統啓動或跟文件系統上的應用程序(/bin,/sbin等)提供共享庫,以及爲內核提供內核模塊 
                libc.so.*   the dynamically-linked C library    動態連接c庫
                ld* the execution time linker/loader    運行時連接器、加載器
**/lib:** 必須有的目錄或軟連接:  mldules  loadable kernal modules 可加載的內核模塊
**lib64:**  64位系統特種的存放64位共享庫的路徑,32位的庫在lib下
**media:**  Mount point for removeable media    可移動、便攜式設備掛載點
**mnt:**    Mount point for mounting a filesystem temporarily   其餘文件系統的臨時掛載點
**opt:**    Add-on application software packages    附加應用軟件包的安裝位置,可選
**sbin:**   Essential system binaries   基本的系統管理二進制程序
**srv:**    Data for services provided by this system   系統提供的服務的數據
**tmp:**    Temporary files 存儲程序產生的臨時文件的目錄,此目錄全部用戶都能執行寫操做。
**usr:**    Secondary hierarchy     usr層級結構 第二重要的文件系統, 
                        bin 、sbin 
                        lib、 lib64
                        include: c程序頭文件
                        share: 命令手冊頁和自帶文檔等架構特有的文件的存儲位置
                        local: 層級結構
                        X11R6: x窗口系統安裝目錄
                        games: 
                        src: 源碼文件的存儲位置
                        local  /usr/local   local hierarchy   系統管理員安裝應用程序;一般用於安裝第三方程序
**  var** contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.  存儲時常發生變化的數據
                    cache   Application cache datalibVariable state information 
                    local         Variable data for /usr/local  
                    lock        Lock files  鎖文件 
                    log         Log files and directories   日誌文件
                    opt         Variable data for /opt  
                    run     Data relevant to running processes  運行中的
                    spool   Application spool data
                    tmp      Temporary files preserved between system reboots   重啓後仍要保留的臨時文件

    **proc**基於內存的虛擬文件系統,存儲內核和進程相關文件,多爲內核參數, 例如 net.ipv4.ip_forward,虛擬爲 net/ipv4/ip_forward ,  完整路徑爲 /proc/sys/net/ipv4/ip_forward
**sys** 基於內存的sysfs虛擬文件系統提供了一種比proc 更爲理想的訪問內核數據的途徑,主要做用是管理Linux設備提供一種統一的模型的接口

/sys下的子目錄 所包含的內容
devices 這是內核對系統中全部設備的分層次表達模型,也是 /sys 文件系統管理設備的最重要的目錄結構,下文會對它的內部結構做進一步分析;
dev 這個目錄下維護一個按字符設備和塊設備的主次號碼(major:minor)連接到真實的設備(/sys/devices下)的符號連接文件,它是在內核 2.6.26 首次引入;
bus 這是內核設備按總線類型分層放置的目錄結構, devices 中的全部設備都是鏈接於某種總線之下,在這裏的每一種具體總線之下能夠找到每個具體設備的符號連接,它也是構成 Linux 統一設備模型的一部分;
class 這是按照設備功能分類的設備模型,如系統全部輸入設備都會出如今 /sys/class/input 之下,而不論它們是以何種總線鏈接到系統。它也是構成 Linux 統一設備模型的一部分;
block 這裏是系統中當前全部的塊設備所在,按照功能來講放置在 /sys/class 之下會更合適,但只是因爲歷史遺留因素而一直存在於 /sys/block, 但從 2.6.22 開始就已標記爲過期,只有在打開了 CONFIG_SYSFS_DEPRECATED 配置下編譯纔會有這個目錄的存在,而且在 2.6.26 內核中已正式移到 /sys/class/block, 舊的接口 /sys/block 爲了向後兼容保留存在,但其中的內容已經變爲指向它們在 /sys/devices/ 中真實設備的符號連接文件;
firmware 這裏是系統加載固件機制的對用戶空間的接口,關於固件有專用於固件加載的一套API,在附錄 LDD3 一書中有關於內核支持固件加載機制的更詳細的介紹;
fs 這裏按照設計是用於描述系統中全部文件系統,包括文件系統自己和按文件系統分類存放的已掛載點,但目前只有 fuse,gfs2 等少數文件系統支持 sysfs 接口,一些傳統的虛擬文件系統(VFS)層次控制參數仍然在 sysctl (/proc/sys/fs) 接口中中;
kernel 這裏是內核全部可調整參數的位置,目前只有 uevent_helper, kexec_loaded, mm, 和新式的 slab 分配器等幾項較新的設計在使用它,其它內核可調整參數仍然位於 sysctl (/proc/sys/kernel) 接口中 ;
module 這裏有系統中全部模塊的信息,不論這些模塊是之內聯(inlined)方式編譯到內核映像文件(vmlinuz)中仍是編譯爲外部模塊(ko文件),均可能會出如今 /sys/module 中:編譯爲外部模塊(ko文件)在加載後會出現對應的/sys/module/<module_name>/, 而且在這個目錄下會出現一些屬性文件和屬性目錄來表示此外部模塊的一些信息,如版本號、加載狀態、所提供的驅動程序等;編譯爲內聯方式的模塊則只在當它有非0屬性的模塊參數時會出現對應的 /sys/module/<module_name>, 這些模塊的可用參數會出如今 /sys/modules/<modname>/parameters/<param_name> 中,如 /sys/module/printk/parameters/time 這個可讀寫參數控制着內聯模塊 printk 在打印內核消息時是否加上時間前綴;全部內聯模塊的參數也能夠由 "<module_name>.<param_name>=<value>" 的形式寫在內核啓動參數上,如啓動內核時加上參數 "printk.time=1" 與 向 "/sys/module/printk/parameters/time" 寫入1的效果相同;沒有非0屬性參數的內聯模塊不會出現於此。
power 這裏是系統中電源選項,這個目錄下有幾個屬性文件能夠用於控制整個機器的電源狀態,如能夠向其中寫入控制命令讓機器關機、重啓等。
slab (對應 2.6.23 內核,在 2.6.24 之後移至 /sys/kernel/slab) 從2.6.23 開始能夠選擇 SLAB 內存分配器的實現,而且新的 SLUB(Unqueued Slab Allocator)被設置爲缺省值;若是編譯了此選項,在 /sys 下就會出現 /sys/slab ,裏面有每個 kmem_cache 結構體的可調整參數。對應於舊的 SLAB 內存分配器下的 /proc/slabinfo 動態調整接口,新式的 /sys/kernel/slab/<slab_name> 接口中的各項信息和可調整項顯得更爲清晰。架構

相關文章