NFS是Network FileSystem的縮寫,NFS是基於UDP/IP協議的應用。它的最大功能就是能夠經過網絡讓不一樣的機器,不通的操做系統彼此共享文件,linux
能夠經過NFS掛載遠程主機的目錄,訪問該目錄就像訪問本地目錄同樣,因此也能夠簡單的將它看作一個文件服務器。ubuntu
經過NFS服務,咱們能夠實如今線調試文件系統或應用程序,而不用像傳統的方式生成文件系統鏡像,而後燒寫到iTop-4412的eMMC裏,在啓動開發板。服務器
經過NFS服務能夠提升咱們的調試效率。網絡
Android或者Qt文件系統太大,啓動過慢,最小linux系統卻很是適合使用NFS網絡文件系統來調試。測試
安裝Ubunut NFS服務spa
-- apt-get install nfs-kernel-server操作系統
安裝過程彈出對話,選擇Y,回車繼續安裝調試
配置/etc/exportsrest
-- 最後一行添加/home/minilinux/ *(rw,sync,no_root_squash)server
-- /home/minilinux/表示要共享的目錄,根據實際狀況修改
-- *:表明容許全部的網絡斷訪問
-- rw:是可讀寫權限
-- sync:是資料同步寫入內存和硬盤
-- no_root_squash:是Ubunut nfs客戶端分享目錄使用者的權限,若是客戶端使用的是root用戶,那麼對於該共享目錄而言,該客戶端就具備root權限
重啓portmap服務
-- /etc/init.d/portmap restart
重啓nfs服務
-- /etc/init.d/nfs-kernel-server restart
例如咱們把/home/minilinux掛載到/mnt目錄下
-- mount -t nfs localhost:/home/minilinux/system /mnt
-- 與明亮對應的是最小文件系統在/home/minilinux目錄下,根據實際狀況設置
使用df命令查看文件是否被掛載
進入內核目錄(),配置爲QtE的config文件
-- cp -r config_for_linux_scp_elite.config
進入配置界面,配置內核
-- make menuconfig
「Networking support」 -> "Networking options" -> 選上 "IP:kernel level autoconfiguration"
返回到make menuconfig的初始界面
-- "File systems" -> "Network File Systems"
-- 選中「NFS client support」, "NFS client support for NFS version 3", "NFS client support for the NFSv3 ACL protocol extension", "NFS client support for NFS version4", "NFS client support for NFSv4.1" , "Root file system on NFS"
返回到make menuconfig的初始配置界面
-- 進入"Boot options" -> "Default kernel command"
配置舉例:
-- root=/dev/nfs rw nfsroot=192.168.1.103:/home/minilinux/system
ip=192.168.1.230:192.168.1.103:192.168.1.1:255.255.255.0:iTOP:eth0:off
rootfstype=ext4 init=/linuxrc console=ttySAC2,115200
配置完畢後保存退出配置內核,編譯內核,下載到開發板
注意下面幾個參數
-- nfs服務器ip
-- 掛載目錄
-- 開發板的IP地址
-- 開發板的網關
-- 子網掩碼
內核啓動後,就自動加載上了。全部修改都是對應好的
PC網絡配置
修改開發板設置並測試
虛擬機的設置
測試三者之間網絡
-- 須要使用網線將開發板和電腦鏈接才能ping通和Ubuntu電腦
實現tftp下載功能
修改內核配置實現NFS
NFS網絡文件系統:內核啓動運行以後,內核裏面直接啓動網絡,而後直接去網絡中找最小linux文件系統。再運行最小linux文件系統,固然文件系統在ubuntu中自動掛載。
NFS共享目錄:內核啓動後,開發板運行的是EMMC上的最小文件系統,最小linux文件系統再去啓動網絡,經過網絡訪問ubuntu,而後訪問共享文件目錄。
登陸root帳戶
安裝NFS服務
-- apt-get install nfs-kernel-server
修改配置
-- 打開/etc/exports
-- 最後一行添加:/home/topeet/linux/ *(rw,sync,no_root_squash)
-- Ubuntu上須要新建/home/topeet/linux目錄
-- 參數的具體含義參考手冊
重啓NFS服務
-- /etc/init.d/nfs-kernel-server restart
配置確認文件
-- 做者是SCP核心板+精英版
配置內核
進入Networking support -> 選中Networking options而後進入
-- 選中IP:kernel level autoconfiguration
進入filesystems -> 選中Network File Sytem而後進入,選中如下項
-- "NFS client support" , "NFS client support for NFS version 3", "NFS client support for the NFSv3 ACL protocol extension",
"NFS client support for NFS version 4", "NFS client support for NFSv4.1", "Root file system on NFS"一共六個選項
保存退出
編譯內核燒寫
-- 注視掉網卡調試信息drivers/net/usb/dm9620.c,關鍵詞LEN_PLOAD,注視掉三行打印信息
-- 編譯make zImage
-- 燒寫新的內核
確保Ubuntu能夠聯網
-- 最小網絡PC主機須要和虛擬機Ubuntu之間可以ping通
確保最小linux系統和Ubuntu之間能夠ping通
-- 針對具體網絡設置IP和網關
-- 在/etc/eth0-setting文件中修改
-- 修改以後使用ifconfig eth0 down和ifconfig eth0 up 重啓網卡或者重啓開發板
最小系統
-- mkdir /mnt/nfs新建目錄
掛載NFS目錄
-- mount -t nfs -o nolock 192.168.3.84:/home/topeet/linux /mnt/nfs
-- mount -t nfs -o nolock 192.168.2.148:/home/topeet/chen/linux /mnt/nfs