根文件系統/proc的完善
- 硬件平臺:韋東山嵌入式Linxu開發板(S3C2440.v3)
- 軟件平臺:運行於VMware Workstation 12 Player下UbuntuLTS16.04_x64 系統
- 參考資料:《嵌入式Linux應用開發手冊》、https://www.iteye.com/blog/luckyclouds-675711
- 開發環境:Linux 2.6.22.6 內核、arm-linux-gcc-3.4.5-glibc-2.3.6工具鏈
目錄
一、前言
在上一篇博文,已經成功構建了最小的根文件系統,但是這個文件系統所實現的功能不全。
如:當我們(在燒寫在開發版上的根文件系統)輸入ps
命令時,會出現下面的情況:提示不可打開/proc
。
嘗試一下手工新建一個/proc
的目錄mkdir proc
,可以看到依舊不會顯示當前進程 (process) 的狀態。
再輸入指令mount -t proc none /proc
,可以看到正確顯示了當前進程 (process) 的狀態。
提問:爲什麼會這樣呢?
回答:
/proc
是一種僞文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,用戶可以通過這些文件查看有關係統硬件及當前正在運行進程的信息。mount -t proc none /proc
作用是把proc這個虛擬文件系統掛載到/proc目錄,所以當我們再次執行ps
指令的時候,就會成功顯示當前進程 (process) 的狀態
如果我們需要執行
ps
指令,則必須得通過指令來手工掛載/proc
,太麻煩了。
所以我們需要進一步完善根文件系統。
二、/proc
完善方法一:
1、新建/proc子目錄
這個時候操作的是在PC機上的根文件系統,即上一篇博文的/first_fs
文件夾
在/first_fs
文件目錄下新建/proc
子目錄mkdir proc
2、修改配置文件,添加腳本
在/first_fs/etc/inittab
中加入::sysinit:/etc/init.d/rcS
3、創建腳本文件,添加掛載命令
在/first_fs
目錄下
①、創建目錄mkdir etc/init.d
②、添加腳本vi eic/init.d/rcS
,掛載命令爲mount -t proc none /proc
③、添加rcS
的屬性chmod +x etc/init.d/rcS
三、/proc
完善方法二:
上面介紹了第一種可以通過添加腳本vi eic/init.d/rcS
,添加掛載命令爲mount -t proc none /proc
實現掛載。
這裏我們介紹一下第二種掛載/proc
的方法:掛載命令爲mount -a
mount -a
:讀出/etc/fstab
目錄下的內容,根據文件中的內容來進行掛載。
1、在腳本文件中,添加掛載命令
執行vi eic/init.d/rcS
,掛載命令爲mount -a
2、新建/etc/fstab
文件
執行vi etc/fstal
,輸入proc /proc proc defaults 0 0
3、生成映像文件
在/first_fs
的上一級目錄執行mkyaffs2image first_fs first_fs.yaffs2
四、結果
使用USB下載口,燒寫first_fs.yaffs2
到開發版,可以看到系統一開始就可以執行ps
/proc也成功掛載