我是一名嵌入式开发人员,工作中经常需要在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 -a f42073
按提示输入samba用户访问密码。
5. 在windows端通过映射网络驱动器打开
好了 今天先分享到这,如果文中有错误,欢迎指正!