ubuntu下配置NFS和TFTP連接omapl-138開發板

網上各種做法撲朔迷離,一般來說有這麼兩種方式:
1、通過在主機/虛擬機、開發板上分別佈置服務器、客戶端,使用mount命令直接加載·開發板上的已有·的

文件系統;
2、只在主機/虛擬機上安裝nfs服務器,在開發板的內核支持nfs的前提下,通過修改啓動參數,讓開發板掛載

主機/虛擬機上·的文件系統。
因爲不清楚在開發板上佈置客戶端的步驟(網上這種做法的沒找到提及開發板的操作,多數只說明瞭主機/虛
擬機上的環境搭建),所以我最後是採用了第二種做法。
這裏用ifconfig eth0 192.168.1.68配置宿主機ip,開發板的ip配置爲192.168.1.66,
主機ip可以配置爲192.168.1.67,兩兩可以互ping。(主要是宿主機和板子可以互ping)

ubuntu10.4    開啓NFS/TFTP
涉及文件
portmap hosts.deny hosts.allow
涉及操作(按順序如下)
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart
  安裝server    和client
Ubuntu    上默認是沒有安裝NFS 服務器的,   首先要安裝NFS 服務程序:
$ sudo apt-get install nfs-kernel-server
(   安裝nfs-kernel-server 時,apt 會自動安裝nfs-common 和 portmap)
這樣, 宿主機就相當於NFS Server。
同樣地, 目標系統作爲NFS 的客戶端,   需要安裝NFS    客戶端程序。如果是Debian/Ubuntu 系統

則需要安裝nfs-common。(這裏我的開發板不止ubuntu系統導致後面我用
mount -t nfs -o nolock 192.168.1.68:/opt/nfs /mnt 一直不能掛載,有誰知道可以和我說下)
$ sudo apt-get install nfs-commmon
nfs-common    和nfs-kernel-server    都依賴於portmap!
這樣就安裝完了,下面進行配置
配置NFS
配置portmap(默認的配置也可以)
方法1: 編輯/etc/default/portmap,    將最後一行註釋掉.
方法2: $ sudo dpkg-reconfigure portmap ,    對Should portmap be bound to theloopback address?    選N.
配置/etc/hosts.deny
(   禁止任何host(主機)   能和你的NFS    服務器進行NFS 連接),加入:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
配置/etc/hosts.allow
允許那些你想要的主機和你的NFS    服務器建立連接。下列步驟將允許任何IP    地址以192.168.197
開頭的主機(   連接到NFS 服務器上),   也可以指定特定的IP    地址。參看man 頁
hosts_access(5), hosts_options(5)。加入:
### NFS DAEMONS
portmap: 192.168.1.
lockd: 192.168.1.
rquotad: 192.168.1.
mountd: 192.168.1.
statd: 192.168.1.
/etc/hosts.deny    和/etc/hosts.allow    設置對portmap 的訪問. 採用這兩個配置文件有點類
似"mask"的意思. 現在/etc/hosts.deny    中禁止所有用戶對portmap 的訪問. 再
在/etc/hosts.allow    中允許某些用戶對portmap 的訪問.
配置/etc/exports

NFS 掛載目錄及權限由/etc/exports 文件定義
比如我要將將我的home 目錄中的/opt/nfs   目錄讓192.168.1.*   的IP 共享,則在該文件末尾添加下列語句:
/opt/nfs *(rw,sync,no_root_squash)

*表示所有ip地址可以訪問此文件夾

至此配置完成,   下面啓動NFS
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nfs-common restart
sudo /etc/init.d/nfs-kernel-server restart
測試NFS

Ubuntu 下
sudo mount localhost:/opt/nfs /mnt
ls /mnt
看是否已經掛載成功(我這裏可以掛載成功)

開發板下
mount -t nfs -o nolock 192.168.1.68:/opt/nfs /mnt;這裏ip爲宿主機,
ls /mnt
看是否已經掛載成功(192.168.1.68    是Ubuntu    的IP 地址)

/mnt是開發板的目錄(我這裏測試不成功,應該是開發板這邊沒有配置好吧)

換另一種方法,直接從ubuntu宿主機里加載文件系統到板子:
測試NFS
在斷電情況下連接ICETEK-OMAPL138-KB-AZ 板:ICETEK-OMAPL138-KBA 板的串
口J13 到開發主機COM1;連接ICETEK-OMAPL138-KBA 板的網口J5 到開發主機網
卡,撥碼開關U15 的狀態撥爲1000。
在開發主機的Windows 系統中啓動超級終端【Davinci】
接通ICETEK-OMAPL138-KB-AZ 板電源
按回車鍵暫停linux 的起動
輸入setenv bootcmd 'nand read.e 0xc0700000 0x200000 0x400000; bootm'
輸入setenv bootargs 'console=ttyS2,115200n8 noinitrd rw ip=192.168.1.3 root=/dev/nfs
nfsroot=192.168.1.103:/opt/nfs,nolock mem=32M@0xc0000000
mem=64M@0xc4000000'

輸入boot
觀察【Davinci】中的輸出的起動信息。
輸入root 登錄
輸入cd / 進入根目錄輸入cd / 進入根目錄
輸入ls 列出根目錄文件, 列出的即爲/opt/nfs 目錄下的


TFTP 安裝配置

1:sudo apt-get install tftp tftpd openbsd-inetd
特別指出很多文章裏用的是netkit-inetd,但是實際下載時發現
這個軟件是下不到的,特改用openbsd-inetd,實驗效果不錯。

2:在根目錄下創建文件夾 tftpboot
cd /
sudo mkdir tftpboot      建立文件夾
sudo chmod 777 tftpboot  更改文件夾權限

3: sudo gedit /etc/inetd.conf  修改成如下樣子

tftp  dgram    udp    wait    nobody    /usr/sbin/tcpd    
/usr/sbin/in.tftpd   /tftpboot 

4: sudo gedit /etc/xinetd.d/tftp  修改成如下樣子(如果沒有tftp文件就創建它)

service tftp
{
disable         =no
socket_type     =dgram
protocol        =udp
wait            =yes
user            =root
server          =/usr/sbin/in.tftpd
server_args     =-s /tftpboot -c 
source          = 11
cps             = 100 2
}

5: sudo gedit /etc/default/tftpd-hpa  修改成如下樣子

RUN_DAEMON="no"

OPTIONS="-s /tftpboot -c -p -U tftpd"

6:sudo /etc/init.d/openbsd-inetd reload   
sudo /etc/init.d/xinetd restart
sudo in.tftpd -l /tftpboot 

7: 在tftpboot文件夾下新建測試文件 aaa


cd /tftpboot 
sudo touch  aaa
sudo chmod  777  aaa

9: 開始測試tftp服務
cd  /home
tftp  192.168.1.68
get  /tftpboot/aaa
如果沒有出現錯誤代碼且在home目錄下出現aaa文件則證明tftp服務建立成功


10.開始測試目標板

ubuntu裏輸入
gedit /tftpboot/test.txt

目標板輸入
tftp -g -r test.txt 192.168.1.68

-l   是local的縮寫,後跟存在於Client的源文件名,或下載Client後重命名的文件名。
-r   是remote的縮寫,後跟Server即PC機tftp服務器根目錄中的源文件名,或上傳Server後重命名後的文件名。
-g  是get的縮寫,下載文件時用,
-p  是put的縮寫,上傳文件時用,
 tftp 默認佔用的是69端口。


注意: 1:如果出現permission denied 錯誤  則是操作者權限不夠,
需要提升權限
su  root
輸入密碼後就可以正常進行tftp傳輸操作了

2:如果出現Access violation錯誤 則是文件權限沒有解開,
將要操作的文件操作權限全解開就可以了
chmod 777 文件名



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章