ARM linux開發之根文件系統


1.什么是根文件系統
linux內核掛載的第一個文件系統,該根文件系統是掛載到根目錄下的文件系統。rootfs,它是一個容器,也稱之為一個“包”,里面包含:

[root@GEC6818 /]#ls
IOT         etc         lost+found  pxy         sys
bin         home        mnt         root        tmp
dev         lib         nfs         run         usr
driver      linuxrc     proc        sbin        var
    1. linux的shell命令
      /bin,一般的shell命令
      /sbin,超級管理員就是root用戶才能夠使用的命令,這些命令很多時候跟硬件相關
      /usr/bin,應用程序與工具
      /usr/sbin,shell命令或工具
    1. /dev
      該目錄包含應用程序訪問硬件的接口,只有字符設備和塊設備有設備文件,網絡設備是沒有設備文件。
      lcd設備,/dev/fb0
      觸摸屏設備,/dev/input/event0
      在做驅動編程,該目錄是我們的重點。
  • 3)/etc
    包含系統的配置文件:用戶名、密碼、主機名、網絡配置、系統

  • 4)/proc
    該目錄虛擬文件系統目錄,是系統內存的映射,實時反映linux系統的工作狀態,可直接訪問這個目錄來獲取系統信息。
    數字,PID進程編號與狀態信息
    version,linux系統的版本

[root@GEC6818 /proc]#uname -r
3.4.39-gec
[root@GEC6818 /proc]#uname -a
Linux GEC6818 3.4.39-gec #9 SMP PREEMPT Sun Nov 19 10:01:10 CST 2017 armv7l GNU/Linux
[root@GEC6818 /proc]#cat version
Linux version 3.4.39-gec (zr@boLe) (gcc version 4.8 (GCC) ) #9 SMP PREEMPT Sun Nov 19 10:01:10 CST 2017

cpuinfo,了解CPU的信息

[root@GEC6818 /proc]#cat cpuinfo
Processor       : ARMv7 Processor rev 3 (v7l) //當前CPU是ARMv7架構
processor       : 0 //CPU 0
BogoMIPS        : 1581.05 //每秒能夠執行1581.04百萬條指令
......

meminfo,這里描述linux內核所有內存狀態信息

[root@GEC6818 /proc]#cat meminfo
  • 5)庫的路徑
    /lib
    /usr/lib
    /usr/local/lib

  • 6)/mnt
    系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其他的文件系統。

  • 8)/sys
    sysfs是一種基於ram文件系統(ramdisk 文件系統基於磁盤模擬技術,實際文件系統是ex2 ex3等)和proc一樣。sysfs文件系統是一個類似於proc文件系統的特殊文件系統,
    用於將系統中的設備組織成層次結構,並向用戶模式程序提供詳細的內核數據結構信息。其實,就是在用戶態可以通過對sys文件系統的訪問,來看內核態的一些驅動或者設備等,例如以下觸摸屏設備驅動詳細信息。

[root@GEC6818 /sys/devices/virtual/rc/rc0/input1/event0]#cat uevent
MAJOR=13
MINOR=64
DEVNAME=input/event0

拓展:
/sys/devices
該目錄下是全局設備結構體系,包含所有被發現的注冊在各種總線上的各種物理設備。一般來說,所有的物理設備都按其在總線上的拓撲結構來顯示,但有兩個例外即platform devices和system devices。
platform devices一般是掛在芯片內部的高速或者低速總線上的各種控制器和外設,它們能被CPU直接尋址;
system devices不是外設,而是芯片內部的核心結構,比如CPU,timer等,它們一般沒有相關的驅動,但是會有一些體系結構相關的代碼來配置它們。
/sys/devices是內核對系統中所有設備的分層次表達模型,也是/sys文件系統管理設備的最重要的目錄結構。

/sys/dev
該目錄下存放主次設備號文件,其中分成字符設備、塊設備的主次設備號碼(major:minor)組成的文件名,該文件是鏈接文件並且鏈接到其真實的設備(/sys/devices)。

/sys/class
該目錄下包含所有注冊在kernel里面的設備類型,這是按照設備功能分類的設備模型,每個設備類型表達具有一種功能的設備。每個設備類型子目錄下都是這種設備類型的各種具體設備的符號鏈接,這些鏈接指向/sys/devices/下的具體設備。 設備類型和設備並沒有一一對應的關系,一個物理設備可能具備多種設備類型(如何觸摸屏包含了輸入子系統設備模型、i2c設備模型、platform模型等);一個設備類型只表達具有一種功能的設備,比如:系統所有輸入設備都會出現在/sys/class/input之下,而不論它們是以何種總線連接到系統的。

/sys/block
該目錄下的所有子目錄代表着系統中當前被發現的所有塊設備。

/sys/bus
該目錄下的每個子目錄都是kernel支持並且已經注冊了的總線類型。

/sys/fs
按照設計,該目錄使用來描述系統中所有的文件系統,包括文件系統本身和按照文件系統分類存放的已掛載點。

/sys/kernel
這個目錄下存放的是內核中所有可調整的參數。

/sys/module
該目錄下有系統中所有的模塊信息,不論這些模塊是以內聯(inlined)方式編譯到內核映像文件中還是編譯為外模塊(.ko文件),都可能出現在/sys/module中。

  • 7)/var
    系統的工作日志或運行時需要改變數據文件的存放目錄。

  • 8)/usr
    系統資源目錄,Unix System Resource,即Unix系統資源的縮寫。該目錄是系統核心所在,包含了所有的共享文件。它是 unix 系統中最重要的目錄之一,涵蓋了二進制文件,各種文檔,各種頭文件,還有各種庫文件;還有諸多程序,例如 ftp,telnet 等等。這是最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。
    /usr/bin 眾多的應用程序
    /usr/sbin 超級用戶的一些管理程序
    /usr/doc linux文檔
    /usr/include linux下開發和編譯應用程序所需要的頭文件
    /usr/lib 常用的動態鏈接庫和軟件包的配置文件
    /usr/man 幫助文檔
    /usr/src 源代碼,linux內核的源代碼就放在/usr/src/linux里
    /usr/local/bin 本地增加的命令
    /usr/local/lib 本地增加的庫

  • 9)/lost+found
    這個目錄平時是空的,系統非正常關機而留下“無家可歸”的文件(windows下*.chk)就在這里

補充:開發自啟動執行應用程序
linux內核啟動完之后,會自動執行以下兩個腳本文件:
/etc/init.d/rcS
/etc/profile


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM