我是一名嵌入式開發人員,工作中經常需要在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端通過映射網絡驅動器打開
好了 今天先分享到這,如果文中有錯誤,歡迎指正!