ubuntu下配置NFS和TFTP连接omapl-138开发板

来源:互联网 发布:茶氨酸 知乎 编辑:程序博客网 时间:2024/05/21 15:44
网上各种做法扑朔迷离,一般来说有这么两种方式:
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 文件名



原创粉丝点击