1. 根文件系統簡介
根文件系統首先是內核啟動時所 mount(掛載)的第一個文件系統,內核代碼映像文件保存在根文件系統中,而系統引導啟動程序會在根文件系統掛載之后從中把一些基本的初始化腳本和服務等加載到內存中去運行。
百度百科上說內核代碼鏡像文件保存在根文件系統中,但是我們嵌入式 Linux 並沒有將內核代碼鏡像保存在根文件系統中,而是保存到了其他地方。比如 NAND Flash 的指定存儲地址、EMMC 專用分區中。根文件系統是 Linux 內核啟動以后掛載(mount)的第一個文件系統,然后從根文件系統中讀取初始化腳本,比如 rcS,inittab 等。根文件系統和 Linux 內核是分開的,單獨的 Linux 內核是沒法正常工作的,必須要搭配根文件系統。如果不提供根文件系統,Linux 內核在啟動的時候就會提示內核崩潰(Kernel panic)的提示。
- /bin
看到“bin”大家應該能想到 bin 文件,bin 文件就是可執行文件。所以此目錄下存放着系統需要的可執行文件,一般都是一些命令,比如 ls、mv 等命令。此目錄下的命令所有的客戶都可以使用。 - /dev 目錄
dev 是 device 的縮寫,所以此目錄下的文件都是和設備有關的,此目錄下的文件都是設備文件。在 Linux 下一切皆文件,即使是硬件設備,也是以文件的形式存在的,比如/dev/ttymxc0(I.MX6ULL 根目錄會有此文件)就表示 I.MX6ULL 的串口0,我們要想通過串口0發送或者接收數據就要操作件/dev/ttymxc0,通過對文件/dev/ttymxc0 的讀寫操作來實現串口0的數據收發。 - /etc 目錄
此目錄下存放着各種配置文件,大家可以進入 Ubuntu 的 etc 目錄看一下,里面的配置文件非常多!但是在嵌入式 Linux 下此目錄會很簡潔。 - /lib 目錄
lib 是 library 的簡稱,也就是庫的意思,因此此目錄下存放着 Linux 所必須的庫文件。這些庫文件是共享庫,命令和用戶編寫的應用程序要使用這些庫文件。 - /mnt 目錄
臨時掛載目錄,一般是空目錄,可以在此目錄下創建空的子目錄,比如/mnt/sd、/mnt/usb,這樣就可以將 SD 卡或者 U 盤掛載到/mnt/sd 或者/mnt/usb 目錄中。 - /proc 目錄
此目錄一般是空的,當 Linux 系統啟動以后會將此目錄作為 proc 文件系統的掛載點,proc是個虛擬文件系統,沒有實際的存儲設備。proc 里面的文件都是臨時存在的,一般用來存儲系統運行信息文件。 - /usr 目錄
要注意,usr 不是 user 的縮寫,而是 Unix Software Resource 的縮寫,也就是 Unix 操作系統軟件資源目錄。這里有個小知識點,那就是 Linux 一般被成為類 Unix 操作系統,蘋果的 MacOS也是類 Unix 操作系統。關於 Linux 和 Unix 操作系統的淵源大家可以直接在網上找 Linux 的發展歷史來看。既然是軟件資源目錄,因此/usr 目錄下也存放着很多軟件,一般系統安裝完成以后此目錄占用的空間最多。 - /var 目錄
此目錄存放一些可以改變的數據。 - /sbin 目錄
此目錄頁用戶存放一些可執行文件,但是此目錄下的文件或者說命令只有管理員才能使用,主要用戶系統管理。 - /sys 目錄
系統啟動以后此目錄作為 sysfs 文件系統的掛載點,sysfs 是一個類似於proc 文件系統的特殊文件系統,sysfs 也是基於 ram 的文件系統,也就是說它也沒有實際的存儲設備。此目錄是系統設備管理的重要目錄,此目錄通過一定的組織結構向用戶提供詳細的內核數據結構信息。 - /opt
可選的文件、軟件存放區,由用戶選擇將哪些文件或軟件放到此目錄中。
2. BusyBox
-
修改Makefile
-
改成中文顯示
-
圖形化配置
-
編譯 busybox
-
添加lib庫
3. 根文件系統初步測試
4. 完善根文件系統
- 創建/etc/init.d/rcS 文件
- 創建/etc/fstab 文件
- 創建/etc/inittab 文件