LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1236|回复: 5

在嵌入式操作系统(uClinux)上实现nfs网络调试(以coldfire mcf5307为例)

[复制链接]
发表于 2005-5-1 11:24:16 | 显示全部楼层 |阅读模式
我是新手,错误之处,还请大家指教!之所以标题写这么繁琐,我是想多一些关键词,这样如果有人需要,搜索起来就快多了.
大家如果在uClinux下面调试应用程序,如果每次更改都连内核一起下载的话,我想调试过程中好多时间都花在了等待上.于是,就想用网络调试,我不在乎不知道市面上有多少资料是介绍这个的,反正我弄的时候,在网上查了好多天都没有搞通,可能新手的原因吧
1.首先说明,我的潜入式操作系统的IP:192.168.0.99,上面的PC机IP:192.168.0.16
2.如果现在我想把PC上/home/debug共享,并且可以直接调试应用程序,那么需要执行
chmod -R 777 /home/debug,设置这个文件夹下所有文件可读可写可执行
3.配置NFS服务器端

3.1确认主机安装了NFS服务


方法是查看/etc/rc.d/init.d目录下是否有nfs文件,如果有说明主机已经安装了nfs服务。


3.2编辑/etc/exports文件


服务器端在文件/etc/exports中设定允许被访问的文件、目录以及访问的权限。设定格式如下:


欲分享出去的目录 主机名称 或者IP (参数1,参数2)


可以设定的参数主要有以下这些:

rw:可读写的权限;

ro:只读的权限;

sync:资料同步写入存储器中。

async:资料会先暂时存放在内存中,不会直接写入硬盘。


本例中编辑/etc/exports为:

/home/debug  192.168.0.99/255.255.255.0(rw)

3.3使/etc/exports文件的修改生效


在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:

exportfs [-aruv]

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

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

-u :umount 目录

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

具体例子:

exportfs –rv

这个命令行要求全部重新输出一次。我们在每次修改了/etc/exports文件后都要运行一次该命令,或者直接restart nfs也可以,如下所述.
3.4启动NFS服务


现在就可以启动NFS服务了:

/etc/rc.d/init.d/nfs start

如果要停止NFS服务:

/etc/rc.d/init.d/nfs stop

重新启动(停止后再启动,在修改/etc/exports之后使用)命令:

/etc/rc.d/init.d/nfs restart
4.配置客户端


4.1配置内核


进入File Systems  --->选项

选中:
  • NFS file system support
  •     Provide NFSv3 client support


    4.2配置用户选项


    进入Network Applications ---> 选项

    选中:
  • portmap

    进入BusyBox --->选项

    选中:
  • mount
  • mount:support NFS mounts

    完成以上配置后,即可编译产生映像文件。
    5.挂载到主机


    通过以下命令行,挂载到主机上:

    />mount –o nolock 192.168.0.16:/home/debug /var/nfs  (这里的nfs文件夹当然要自己事先建好的)
    命令行的参数是必要的,能够改善NFS下应用程序运行的速度。

    当出现下一个/>时,mount成功。


    接下来,你就可以直接运行应用秤杆程序了,修改了也不用重新下载的
    6.运行主机的应用程序


    运行mount目录下的可执行程序,程序输入:

    />cd /var/nfs

    />./demo     (注意前面要加上“./”)

    Hello World!


    还有要注意的C 上的防火墙一定要关掉.setup里面关,虽然每次setup它又恢复了,\但是实际上关掉过的.
    上面可不是我的原创,东抄西抄的,反正最后能用了,有的贴子发的新手看不懂,苦煞我也.
    还要问一个问题:我在uClinux下用ftp下载,get ,, ,是在可写的文件夹下,可是总是下不了,还会死机,请大侠指教!
    比如我下载一个general.o文件,
    ftp> get general.o
    提示信息:
    local: general.o remote:general.o
    227 Entering Passive Mode (192.168.0.16,32,82)
    No Primary connection
  • 发表于 2005-5-8 18:00:12 | 显示全部楼层
    是不是proxy server 那边你设置出了点问题,你修改那边看看还能解决问题.
    回复 支持 反对

    使用道具 举报

    发表于 2005-5-12 07:38:21 | 显示全部楼层
    几个问题:

    1、mount的时候不用-t nfs吗?

    2、挂载到/var/nfs,修改vendor/General/big/rc了吗?

    我的几点经验:

    1、对于2.4内核,NFS要用portmap;2.6的就不用了

    2、应该用busybox的mount,不过别忘了去掉filesystem applications里边的mount

    3、mount的时候,可以加入-rsize=1024和-wsize=1024,可以提高速度,当然需要多试验几组数据,不过要是1024的倍数
    回复 支持 反对

    使用道具 举报

    发表于 2005-5-12 07:45:31 | 显示全部楼层
    1、上边的经验3,最大是8196(对于NFS v2)

    2、网络调试还要gdbserver哟
    回复 支持 反对

    使用道具 举报

    发表于 2005-5-12 11:41:34 | 显示全部楼层

    Permission denied

    /usr/nfs> mount
    /dev/rom0 on / type romfs (ro)
    /proc on /proc type proc (rw)
    /dev/ram0 on /var type ext2 (rw)
    192.168.10.202:/home/debug on /usr/nfs type nfs (rw,v3,rsize=8192,wsize=8192,hard,udp,nolock,addr=192.168.10.202)

    /usr/nfs> ls
    hello
    sk1.log
    /usr/nfs> ./hello
    ./hello: Permission denied

    为什么出现Permission denied 呢,若把hello放到romfs/bin/下则执行正常
    回复 支持 反对

    使用道具 举报

    发表于 2005-5-12 12:13:41 | 显示全部楼层
    改一下:chmod 777 hello
    就可以了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表