Linux開發十九
nfs文件系統
象棋小子 1048272975
nfs即網絡文件系統,通過網絡,對在不同主機上的文件進行共享。嵌入式開發中,往往需要構建調試文件系統,在主機端以nfs文件系統的方式先調試構建文件系統,將極大地方便開發。
1. nfs文件系統
nfs需要主機端以及板端的nfs服務支持。
1.1. 主機端nfs配置
主機端以/nfs/rootfs目錄作爲文件共享目錄,該目錄必須具備讀寫權限。打開/etc/exports文件加入目錄共享。
/nfs/rootfs 192.168.0.*(rw,async,no_root_squash)
關閉防火牆
service iptables stop
重啓nfs服務,如果沒有nfs服務,需要先安裝nfs服務。
service rpcbind start
service nfs restart
配置ip地址,並且自掛載以確認主機nfs服務工作正常。
ifconfig eth0 192.168.0.10 up
mkdir /mnt/nfs
#mount –t nfs 192.168.0.10:/nfs/rootfs /mnt/nfs
1.2. 板端nfs配置
在前面的章節中,Linux內核集成了initramfs根文件系統,也可以直接採用nfs作爲根文件系統。Linux內核配置支持nfs文件系統後,可以在initramfs根文件系統啓動後,先嚐試掛載nfs文件系統,以確定板端及主機端的nfs服務正常。確認正常後,Linux內核可以去掉initramfs根文件系統,bootloader傳遞掛載nfs根文件系統的啓動參數,實現從nfs掛載根文件系統啓動。
initramfs根文件系統啓動後掛載nfs
mount -t nfs -o nolock 192.168.0.10:/nfs/rootfs /mnt/nfs
bootloader傳遞啓動參數,使nfs作爲根文件系統。
const char BootCmd[] = "noinitrd root=/dev/nfs init=/initconsole=ttySAC0 nfsroot=192.168.0.10:/nfs/rootfs,nolock rw ip=192.168.0.20:192.168.0.10:192.168.0.10:255.255.255.0::eth0:off";
2. 內核配置
Linux配置支持nfs文件系統,選中Filesystems->Network File Systems->NFS client support。
3. 主機端構建根文件系統
在主機/nfs/rootfs目錄中構建板端根文件系統,把交叉編譯工具的加載器以及動態庫複製到根文件系統的lib目錄。
cp *.so* /nfs/rootfs/lib –d
重新以共享庫的方式交叉編譯busybox,並把庫、配置文件、可執行文件等拷貝到/nfs/rootfs根文件系統中。
減少對flash的讀寫,把/tmp、/dev目錄掛接在tmpfs設備上。打開/etc/fstab文件,加入/tmp、/dev目錄的掛載。
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
etc/init.d/rcS 文件加入mdev的支持,從而不用手動創建設備節點。
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
可以添加/etc/mdev.conf配置文件,實現設備的自動掛載/卸載等。支持nfs文件系統後,就可以在主機端構建配置根文件系統,當驗證通過後,再把構建好的根文件系統製作成flash燒錄鏡像並燒錄,可以極大地加快開發的進度。
4. 附錄
https://pan.baidu.com/s/1slczwhJ
bootloader源碼以及使用說明
https://pan.baidu.com/s/1eRDJtNs
Qt5.8官網源碼
https://pan.baidu.com/s/1nuGmSqt
本系列例程的根文件系統
https://pan.baidu.com/s/1i5btLGT
opev3.2.0官網源碼
https://pan.baidu.com/s/1pLpuHw3
yaffs官網源碼
https://pan.baidu.com/s/1bpkZynt
busybox-1.26.2官網源碼
https://pan.baidu.com/s/1i4EtjfR
tslib官網源碼
https://pan.baidu.com/s/1i5MGRhb
mplayer-1.3.0官網源碼
https://pan.baidu.com/s/1sl0fXlr
基於S3C2416修改的linux-4.10.10源碼