linux 搭建tftp&nfs&samba服務

我是一名嵌入式開發人員,工作中經常需要在windows主機與linux主機進行文件傳輸,共享;或是linux 主機與arn linux 開發板之間進行文件傳輸。所以搭建tftp,nfs,samba服務是必須的。言歸正傳,開始記錄我的簡單說明和步驟。

開發環境:

PC :Windows 7, PC: linux Ubuntu 12.04.5 LTS(版本有點低哈哈),arm os:linux

一 :tftp 服務搭建 (主要是在linux主機與arm開發板之間進行文件傳輸)

我很傾向在u-boot階段應用tftp工具來更新/燒寫我的arm 開發板的flash中的鏡像。tftp基於udp,有人認爲在u-boot階段應用tftp存在系統變磚的風險。但是如果是一名測試工程師或是研發人員,你總會有辦法恢復;至於在實際應用中,只要你不把u-boot毀掉,就沒有大問題,你不可能總有條件跑到現場通過存儲設備去引導系統燒寫。

網絡服務通常是基於server-client架構,所以談到搭建各種服務會涉及到兩方面:server端配置與client端配置。

tftp 服務器端配置:

1.  安裝ttfpd(server),tftp(client),(xinetd)

f42073@ubuntu:~$ sudo apt-get install tftpd tftp xinetd

按提示進行。

2. 在我的工作目錄創建tftpboot文件夾,並修改tftpboot文件夾的訪問權限

f42073@ubuntu:~$ mkdir tftpboot

f42073@ubuntu:~$ chmod 777 tftpboot

3. 修改/etc/xinetd.d/tftp 文件,如果文件不存在則創建:

f42073@ubuntu:~$ cd /etc/xinetd.d/

f42073@ubuntu:/etc/xinetd.d$ sudo touch tftp

f42073@ubuntu:/etc/xinetd.d$ sudo chmod u+x tftp

f42073@ubuntu:/etc/xinetd.d$ vim tftp

配置如下:



4. 啓動tftp服務  

f42073@ubuntu:~/service$ sudo service xinetd restart

5.  f42073@ubuntu: ~$sudo apt-get install tftp-hpa tftpd-hpa

6. f42073@ubuntu:~$ vim /etc/default/tftpd-hpa 配置如下


7.  f42073@ubuntu: ~$sudo service tftpd-hpa restart

8. 可以在本機進行下回環測試

f42073@ubuntu:~/service$ tftp 127.0.0.1

tftp> get test.txt

tftp>q

===9. 客戶端測試:arm-linux===

接下來就可以在arm開發板的u-boot或是linux環境下應用tftp工具進行燒寫flash或是下載文件了,以下是在u-boot下應用tftp的示例。

測試目標板:LS1012A  

linux 主機serverip 192.168.2.149

=> setenv ipaddr 192.168.2.85

=> setenv serverip 192.168.2.149

=> setenv ethaddr 00:04:9f:04:6e:c4

=> setenv eth_act pfe_eth0

=> saveenv

=> ping $serverip
Speed detected 3e8
Using pfe_eth0 device

host 192.168.2.149 is alive

=> setenv rootfs_bhr ls1012/ls1012a-rdb-bhr/jffs2-256k-openwrt-ls1012a-rdb-bhr

=> setenv update_rootfs "tftp a0000000 $rootfs_bhr && sf erase 0x1600000 0x2a00000 && sf write 0xa0000000 0x1600000 $filesize"

=> run update_rootfs

在linux 下的應用就easy了不再舉例

==============================

二 :搭建nfs服務

nfs服務器端配置:

1. 安裝 nfs-kernel-server(server) , nfs-common(client,這個在PC linux 上視需求而定)

f42073@ubuntu:~$ sudo apt-get install nfs-kernel-server nfs-common

2. pc linux 端創建nfs共享目錄

f42073@ubuntu:~$ sudo mkdir nfs-data

3. f42073@ubuntu:~$ sudo vim /etc/exports

最後一行是我添加的內容



4. satrt nfs 服務

f42073@ubuntu:~$ exportfs -rv

f42073@ubuntu:~$ sudo /etc/init.d/portmap restart

f42073@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server restart

5. 釋放一個rootfs文件到nfs-data目錄

f42073@ubuntu:~$ tar -xvjf rootfs.tar.bz2  -C ~/nfs-data/

6. 客戶端測試:arm-linux

===客戶端linux 環境下測試:===

在client 端 ping server端測試網絡連通

root@OpenWrt:/# ping 192.168.2.149 -c 3

root@OpenWrt:/# mount -t nfs -o nolock 192.168.2.149:/nfs_data /mnt

root@OpenWrt:/# ls -l mnt

後續打算深入瞭解nfs與RPC通訊。

===客戶端u-boot到linux測試===

=> setenv ipaddr 192.168.2.85

=> setenv serverip 192.168.2.149

=> setenv ethaddr 00:04:9f:04:6e:c4

=> setenv eth_act pfe_eth0

=> saveenv

=> ping $serverip
Speed detected 3e8
Using pfe_eth0 device

host 192.168.2.149 is alive

 => setenv nandargs "setenv bootargs console=ttymxc0,115200 cma=64M
root=/dev/nfs ip=192.168.2.85:192.168.2.1:255.255.255.0 nfsroot=192.168.2.149:/n

fs-data,v3,tcp rootfstype=yaffs2,calibrate=${calibrate}"

=> run bootnand

進入到linux後從nfs掛載文件系統:

先闡明下我的nand flash佈局


擦除文件系統:

root@OpenWrt:/# flash_erase /dev/mtd5 0 0

root@OpenWrt:/# mkdir /mtd5

root@OpenWrt:/# mount –t yaffs /dev/mtdblock5 /mtd5

reboot 開發板。

三: Samba服務(我的PC linux 與PC windows文件共享)

pc linux的配置:

1. f42073@ubuntu:~$ sudo apt-get install samba smbclient

2. f42073@ubuntu:~$ sudo vim /etc/samba/smb.conf 編輯結果如下:



3. f42073@ubuntu:~$ smbd –D –s /etc/smb.conf

4. f42073@ubuntu:~$ sudo smbpasswd f42073

按提示輸入samba用戶訪問密碼。

5. 在windows端通過映射網絡驅動器打開


好了 今天先分享到這,如果文中有錯誤,歡迎指正!















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