为了在播放机上实现NFS服务器的功能,我们已经在uClibc中打开了完整RPC支持,并且在新编译的内核中打开了NFS服务器支持。此外还有两个软件包也是提供NFS服务所必需的:portmapnfs-utils。portmap为RPC程序提供端口映射服务,nfs-utils则是使用内核NFS服务器的支持程序。

编译portmap
1. 下载portmap_5beta: ftp://ftp.porcupine.org/pub/security/portmap_5beta.tar.gz
2. 打这个补丁: portmap_5beta.patch.zip (补丁来自buildroot-2009.11,我只是把多个补丁合并成一个)
3. $ make CC=mipsel-linux-gcc
4. $ mipsel-linux-strip portmap

编译nfs-utils
1. 下载nfs-utils-1.1.1: http://nchc.dl.sourceforge.net/project/nfs/nfs-utils/1.1.1/nfs-utils-1.1.1.tar.gz
2. 打这个补丁: nfs-utils-1.1.1-uclibc.patch.zip (在网上找到的,来源记不清了,我稍加了修改)
3. 运行配置脚本:

1 ./configure --build=i686-linux --host=mipsel-linux --disable-nfsv4 --disable-gss --disable-uuid --disable-mount --without-tcp-wrappers --with-gnu-ld CC=mipsel-linux-gcc CPP=mipsel-linux-cpp AR=mipsel-linux-ar STRIP=mipsel-linux-strip RANLIB=mipsel-linux-ranlib LD=mipsel-linux-ld

4. $ make
5. 安装到/home/user/dist/nfs-utils目录

1 $ make DESTDIR=/home/user/dist/nfs-utils install-strip

在制作固件时,我们只需要几个编译好的程序:portmap, rpc.statd, rpc.nfsd, rpc.mountd, exportfs。其中portmap 放到/sbin下,其余的放到/usr/sbin下。
此外还需要一个NFS服务启动脚本S60nfs,放在/etc/init.d目录下。下载脚本S60nfs.zip (来自buildroot,我把portmap的启动加进去了)

 1 #!/bin/sh                                
 2 #                                        
 3 # nfs           This shell script takes care of starting and stopping
 4 #               the NFS services. Stolen from RedHat FC5.            
 5 
 6 [ -x /sbin/portmap ] || exit 0
 7 [ -x /usr/sbin/rpc.statd ] || exit 0
 8 [ -x /usr/sbin/rpc.nfsd ] || exit 0 
 9 [ -x /usr/sbin/rpc.mountd ] || exit 0
10 [ -x /usr/sbin/exportfs ] || exit 0  
11 
12 # Don't fail if /etc/exports doesn't exist; create a bare-bones version and continue.
13 [ -r /etc/exports ] || \                                                             
14     { touch /etc/exports && chmod u+rw,g+r,o+r /etc/exports ; } || \                 
15     { echo "/etc/exports does not exist" ; exit 0 ; }                                
16                                                                                      
17 # The /var/lib/nfs directory is actually on a tmpfs filesystem.                      
18 mkdir -p /var/lib/nfs/sm                                                             
19 mkdir -p /var/lib/nfs/sm.bak                                                         
20 touch /var/lib/nfs/etab                                                              
21 touch /var/lib/nfs/rmtab                                                             
22 touch /var/lib/nfs/state                                                             
23 touch /var/lib/nfs/xtab                                                              
24 
25 start() {
26         # Start daemons.
27         echo -n "Starting port mapper: "
28         portmap                         
29         echo "done"                     
30 
31         echo -n "Starting NFS statd: "
32         rpc.statd                     
33         touch /var/lock/subsys/nfslock
34         echo "done"                   
35 
36         echo -n "Starting NFS services: "
37         /usr/sbin/exportfs -r            
38         rpc.statd                        
39         echo "done"                      
40 
41         echo -n "Starting NFS daemon: "
42         rpc.nfsd 2                     
43         echo "done"                    
44 
45         echo -n "Starting NFS mountd: "
46         rpc.mountd                     
47         echo "done"                    
48         touch /var/lock/subsys/nfs     
49 }                                      
50 
51 stop() {
52         # Stop daemons.
53         echo -n "Shutting down NFS mountd: "
54         killall -q rpc.mountd               
55         echo "done"                         
56 
57         echo "Shutting down NFS daemon: "
58         kill -9 `pidof nfsd` 2>/dev/null 
59         echo "done"                      
60 
61         echo -n "Shutting down NFS services: "
62         /usr/sbin/exportfs -au                
63         rm -f /var/lock/subsys/nfs            
64         killall -q rpc.statd                  
65         echo "done"
66 
67         echo -n "Stopping NFS statd: "
68         killall -q rpc.statd
69         echo "done"
70         rm -f /var/lock/subsys/nfslock
71 
72         echo -n "Stopping port mapper: "
73         killall -q portmap
74         echo "done"
75 }
76 
77 # See how we were called.
78 case "$1" in
79   start)
80         start
81         ;;
82   stop)
83         stop
84         ;;
85   restart)
86         stop
87         start
88         ;;
89   reload)
90         /usr/sbin/exportfs -r
91         touch /var/lock/subsys/nfs
92         ;;
93   *)
94         echo "Usage: nfs {start|stop|reload}"
95         exit 1
96 esac
97 
98 exit 0
posted on 2010-03-23 16:24 gouzhuang 阅读(4774) 评论(4)  编辑 收藏 引用 所属分类: 嵌入式Linux

评论

# re: 编译portmap和nfs-utils 2010-03-23 21:58 ccc
继续关注中  回复  更多评论 
  

# re: 编译portmap和nfs-utils 2010-10-28 17:33 kwingart
ls, 如何在1073方案的海美迪300系列固件上实现nfs server啊,后续能出一个指南吗。谢谢分享。
kwing.guo@gmail.com  回复  更多评论 
  

# re: 编译portmap和nfs-utils 2013-05-04 23:15 xlx
这个portmap的补丁是为了解决那个
"cannot find any active local network interfaces"
的问题吗?如果是,希望博主放个修复了这个问题的编译好的portmap出来。  回复  更多评论 
  

# re: 编译portmap和nfs-utils 2013-08-14 10:27 nuc07
exportfs: /xx/xx/path does not support NFS export
运行exportfs时出现上面的提示会是什么原因  回复  更多评论 
  

编译portmap和nfs-utils的更多相关文章

  1. NFS资料

      Linux NFS服务器的安装与配置 http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html Linux NFS服务器的安装与配 ...

  2. 网络文件系统nfs文件系统使用(很全面)

    一.NFS简介 1.NFS就是Network FileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目 ...

  3. 网络文件系统nfs文件系统使用(比较全面)

    一.NFS简介 1.NFS就是Network FileSystem的缩写,它的最大功能就是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles)——可以通过NFS挂载远程主机的目 ...

  4. nfs服务器的搭建和使用

    目录 更新记录 1.nfs介绍 1.1 nfs概念 1.2 nfs工作原理 1.3 nfs通讯过程 2.搭建和测试 NFS 服务器 2.1 搭建NFS服务器 2.2 测试NFS服务器 3.在线调试:N ...

  5. centos7中nfs共享的配置方法

    NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下. 一.nfs为什么需要RPC? 因为NFS支持的功能很多,不同 ...

  6. Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  7. 搭建NFS服务器

    1:yum install -y nfs-utils-* portmap-* 2:NFS安装完毕,需要创建共享目录,共享目录在vi /etc/exports文件里面配置,可配置参数如下: /data/ ...

  8. NFS 文件系统

    NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的. NFS服务的主要配置文件 /etc/exports /etc/exports文件内容格式: <输出目 ...

  9. Linux NFS 服务部署

    系统环境:Oracle Linux 5.7 服务端:192.168.1.111 客户端:192.168.1.171 一.服务端配置 二.客户端配置 一.服务端配置 1.依次启动portmap和nfs服 ...

随机推荐

  1. 之前博客中的代码都放到github上

    之前一直把代码托管在taocode上,现在已经不能用了,所以把代码整理了一下,统一都放在gibhub上了. LALR(1)语法分析生成器:https://github.com/kiven-li/xby ...

  2. EasyNVR H5无插件摄像机直播解决方案前端解析之:监控实时直播的四分屏的前端展示

    完成运行效果图: 一.四分屏展示样式布局 1.通过html.css等来进行样式排版 根据需求的四分屏的样式:来合理的划分出四个大块,分别用于放置四个播放器: 以四等分结构为例进行前端的排版: html ...

  3. ES mapping映射及优化

    mapping映射 主要类型: 同一index下,不同type中如果有相同filed:es进行mapping映射的时候,按照先写进去的指定类型:比如同一index,包含的type中都有key1字段,如 ...

  4. 九度OJ 1008:最短路径问题 (最短路)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8064 解决:2685 题目描述: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费 ...

  5. 列举Python常用数据类型并尽量多的写出其中的方法

    #1 把字符串的第一个字符大写 string.capitalize() #2 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 string.center(width) #3 返回 ...

  6. Nodejs 中常见的加密算法:RSA(1)

    Linux用户(以Ubuntu为例) $ openssl 进入OpenSSL程序 OpenSSL> genrsa -out rsa_private_key.pem 1024 生成私钥 OpenS ...

  7. FI模块与SD、MM的接口配置方法

    [转自 http://blog.itpub.net/195776/viewspace-1023910/] 1 FI/SD 借口配置FI/SD通过tcode VKOA为billing设置过帐科目,用户可 ...

  8. 在win7下使用git和gitlab进行code review

    1.安装 Git-2.6.3-64-bit.exe  下载地址:http://pan.baidu.com/s/1hqGvwnq 2.根据收到的邮件进入gitlab网站,并修改密码登陆 3.新建一个文件 ...

  9. spring-boot5代码

    App.java package com.kfit.spring_boot_mybatis; import org.mybatis.spring.annotation.MapperScan; impo ...

  10. 反向ssh

    参考 https://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel/ https://www.howtoforge.com/reverse-ssh-t ...