網絡文件系統(NFS,Network File System)是一種將遠程主機上的分區(目錄)經網絡掛載到本地系統的一種機制,通過對網絡文件系統的支持,用戶可以在本地系統上像操作本地分區一樣來對遠程主機的共享分區(目錄)進行操作。
在嵌入式Linux 的開發過程中,開發者需要在Linux 服務器上進行所有的軟件開發,交叉編譯後,通用FTP 方式將可執行文件下載到嵌入式目標系統運行,但這種方式不但效率低下,且無法實現在線的調試。因此,可以通過建立NFS,把Linux 服務器(PC端)上的特定分區共享到待調試的嵌入式目標系統(開發板)上,就可以直接在嵌入式目標系統(開發板)上操作Linux 服務器(PC端),同時可以在線對程序進行調試和修改,大大的方便了軟件的開發。因此,NFS 的是嵌入式Linux 開發的一個重要的組成部分,本部分內容將詳細說明如何配置嵌入式Linux 的NFS 開發環境。
嵌入式Linux 的NFS 開發環境的實現包括兩個方面:
一是Linux 服務器端的NFS 服務器支持;
二是嵌入式目標系統的NFS 客戶端的支持。
因此,NFS 開發環境的建立需要配置linux 服務器端和嵌入式目標系統端。
一、Linux 服務器端NFS 服務器的配置
關閉防火牆:
編輯/etc/exports文件
以root 身份登陸Linux 服務器,編輯/etc 目錄下的共享目錄配置文件exports,指定共享目錄及權限等。
使exports目錄生效,並查看已生效目錄
重啓nfs服務,若你使用的linux是ubuntu的話,將報如下錯誤
myl@myl:~$ service nfs restart
nfs: unrecognized service
解決方法:在ubnutu10.10(8.04一樣)下就是沒有命令:service nfs start,取而代之的是:service nfs-kernel-server start
sudo service nfs-kernel-server restart
設置並查看本機ip(192.168.1.203)
二.開發板上的設置
板子啓動時迅速按任何鍵,進入uboot菜單,再按q進入shell模式
查看環境變量
修改/設置環境變量
重啓板子,此處記得ifconfig,查看下你的ip地址有沒變化,有可能重啓後板子又變成路由器自動分配的地址了。(此時一般報錯NFSmount failed, reason given by server: Permission denied ...)掛載nfs目錄,
以後在主機上編譯過的文件直接放在/root/nfs目錄下,在開發板就可以相應地從/mnt/nfs目錄中得到。
參考:
在開發過程中,來回輸入命令非常煩人,我寫了兩個簡單的腳本來完成nfs的啓動,掛載。
host啓動nfs:
snfs(腳本名)
#!/bin/bash
ifconfig eth0 192.168.1.203
/etc/rc.d/init.d/portmap start //該命令在本人機器上無法運行
/etc/rc.d/init.d/nfs start
嵌入式目標機掛載nfs:
mnfs:(腳本名)
#!/bin/sh
mount -t nfs 192.168.1.203:/root/nfs /mnt/nfs -o nolock
echo “nfs ok!”
當目標機出現