嵌入式开发中NFS调试环境搭建-V0.2

2010年1月18日 | 由 helight | 1900字 | 阅读大约需要4分钟 | 归档于 programming | 标签 #nfs #开源

嵌入式开发中NFS调试环境搭建-V0.2

作者:许振文

开发环境:S3C4510B+uCLinux-2.4.x+ubuntu7.10

建立的目的:可以直接在开发板上挂载开发主机上的文件系统,减少程序的烧写次数,提高程序开发速度。

NFS(Network File System, 网络文件系统)可以通过NFS把远程主机的目录挂载到本机,使得访问远程主机的目录就像访问本地目录一样方便快捷。 NFS一般是实现linux系统之间实现共享.当然和unix之间也应该可以使用它来实现共享。但如果需要在linux和windows系统之间共享, 就得使用samba了!, NFS是一个RPC服务程序,所以在使用它之前, 先要映射好端口——通过portmap设定. 比如: 某个NFS client发起NFS服务请求时, 它需要先得到一个端口(port).所以它先通过portmap得到port number.所以在启动NFS之前, 需要启动portmap服务!

安装NFS服务程序:

Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序:

sudo apt-get install nfs-kernel-server

(安装nfs-kernel-server时,apt会自动安装nfs-common和portmap) 这样,宿主机就相当于NFS Server。

与NFS相关的几个文件, 命令 1、/etc/exports 对共享目录的管理都是在这个文件中实现的 2、/sbin/exportfs 维护NFS的资源共享.通过它可以使修改后的/etc/exports中的的共享目录生效关于这个命令的使用方法如下:

exportfs [-aruv]

-a :全部mount或者unmount /etc/exports中的内容

-r :重新mount /etc/exports中分享出来的目录

-u :umount 目录

-v :在 export 的?r候,将详细的信息输出到屏幕上。

3、/usr/sbin/showmount 用在 NFS Server 端。主要用查看 RPC共享的连接

4、/var/lib/nfs/xtab NFS的记录文档:通过它可以查看有哪些Client 连接到NFS主机的记录.

下面这几个文件并不直接负责NFS, 实际上它们负责所有的RPC

5、/etc/default/portmap 实际上, portmap负责映射所有的RPC服务端口

6、/etc/hosts.deny 设定拒绝portmap服务的主机

7、/etc/hosts.allow 设定允许portmap服务的主机

添加共享目录:

1.修改/etc/exports。/etc/exports是nfs服务器的核心配置文件。在/etc/exports中添加一个共享目录。

/var/nfs/ *(rw,sync) /var/nfs/是要共享的文件夹,*是表示所有用户都可以挂载这个共享文件夹。这里也可以替换成ip地址,网段(192.168.1.0/24) 或是主机名。(rw,sync)表示以读写方式挂载,并且远程主机同步,sync是NFS的默认选项。关于括号内的参数还有以下几种: rw:可读写的权限; ro:只读的权限; no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。 root_squash:all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。 anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。 anongid:同 anonuid ,但是?成 group ID 就是了! sync:资料同步写入存储器中。 async:资料会先暂时存放在内存中,不会直接写入硬盘。insecure 允许从这台机器过来的非授权访问。

2 使用命令sudo exportfs -r 更新

3.重新启动portmap服务和nfs-kernel-server服务

命令分别为:

/etc/init.d/portmap start

/etc/init.d/nfs-kernel-server restart

uclinux端的配置:

在uclinux端在还需作一些配置才可以使用mount来挂载远程主机的NFS共享目录.配置修改如下:

1)配置内核

选中ramdisk驱动,加入ext2文件系统

Networking options --> (缺省)

Network device support --> (缺省)

File systems --> Network File Systems --> NFS file system support

Provide NFSv3 client support

2)用户程序配置(ramdisk中)

Network Applications --> portmap

BusyBox --> mount(mount nfs support)

测试使用NFS:

测试NFS启动客户端uclinux输入命令:

mount -t nfs 192.168.1.242:/var/nfs /mnt -o nolock

可以使用ls /mnt查看挂载过来的文件。在uclinux下挂载远程主机的共享文件主要是为了实现远程调试。在远程主机上进行交叉编译 之后,在uclinux下直接运行编译好的程序。

特别说明:

该配置可适用于几乎所有的嵌入式开发,这里只是以Uclinux为例来说明!!!