为了在播放机上实现NFS服务器的功能,我们已经在uClibc中打开了完整RPC支持,并且在新编译的内核中打开了NFS服务器支持。此外还有两个软件包也是提供NFS服务所必需的:portmap和nfs-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

(NFS移植到arm上)编译portmap和nfs-utils相关推荐

  1. Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本

    Lua移植到arm上 并实现在arm上 可以让lua脚本调c语言,C语言调用lua脚本 首先参考http://wiki.chumby.com/index.php?title=Lua&print ...

  2. qt5.3.2移植到arm上出undefined reference to '__sync_sub_and_fetch_4的错

    qt5.3.2移植到arm上出undefined reference to '__sync_sub_and_fetch_4的错.解决办法如下, 使用工具:GCC4.4.1 QT源码:qt5.3.2 前 ...

  3. Linux浏览器libgtk-3,终于把WebKit(基于GTK)移植到ARM上

    DirectFB用的命令是: ./configure -host=arm-linux --prefix=$ROOTFS_DIR/usr --with-gfxdrivers=none --enable- ...

  4. pppoe移植到arm上 1.0

    先搭建好pppoe server,这里在windows上面搭建pppoe server,参考 http://www.cnblogs.com/bluebbc/archive/2012/06/05/253 ...

  5. 技术分享 | 国产麒麟 arm 上编译安装 xtrabackup8

    作者:王向 爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理.擅长数据库故障处理.对数据库技术和 python 有着浓厚的兴趣. 本文来源:原创投稿 *爱可生开源社 ...

  6. 交叉编译 for arm-linux-gcc... no,QT4.8.6、tslib库移植到arm上配置出错!求大神指点

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 操作系统:Ubuntu14.04 LTS ; Qt版本:Qt4.8.6 for embedded 交叉编译器:arm-linux-gcc-v6-vfp-2 ...

  7. 【华为云技术分享】手把手教你如何在ARM上源码编译Redis

    一.基础环境信息 OS: Euler OS 2.8 CPU: ARM 二.编译和安装Redis步骤如下 执行如下命令,获取Redis源码. wget http://download.redis.io/ ...

  8. 【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题

    在PC机上利用QT开发的应用程序在 设置字体时,在PC上运行,可根据自己的设置,字体随之变大或变小.而移植到ARM上运行时发现,显示 字 体与所设置的字体不用,字体普遍偏小.经过上网搜索发现,是环境变 ...

  9. qt linux wifi,在linux,arm上的屏幕搜索wifi并连接(qt,多选择,wifi按信号排列)转...

    先上代码!! #include "widget.h" #include "ui_widget.h" #include #include Widget::Widg ...

最新文章

  1. QS世界大学最新排名公布:清华超过耶鲁,MIT仍居榜首,12所中国高校跻身百强...
  2. pip PermissionError: [Errno 13] Permission denied
  3. 记下来 Spring 装配 Bean 的三种方式
  4. Spring MVC @RequestMapping注解详解
  5. MySQL 是如何解决幻读的
  6. 源码装置vsftpd
  7. Educational Codeforces Round 67 E.Tree Painting (树形dp)
  8. WebStorm中常用的快捷键及使用技巧
  9. 怎样避免每次运行都启用宏的麻烦
  10. 计算机如何切换显卡,怎么设置独显-Nvidia显卡双显卡切换就这么简单
  11. 什么是指令集架构ISA【从处理器谈起】
  12. stm32+DS18B20编程教学
  13. 地图与定位(LBS)-MapKit篇
  14. Windows及Linux 下tftp 服务器安装及使用
  15. 世茂集团稳健财务带领企业迈向高质量发展
  16. (啊哈!算法)(第二章)链表
  17. 计算机辅助设计高级绘图员技能鉴定试题(电路类),计算机辅助设计高级绘图员技能鉴定试题(电路类)07-1...
  18. 唠唠Nacos的注册中心
  19. 信息学奥赛一本通 1333:【例2-2】Blah数集 | OpenJudge NOI 3.4 2729:Blah数集
  20. 谷歌翻译彻底凉了?手把手教你复活!

热门文章

  1. 构建Spring Boot程序有用的文章
  2. [LeetCode] Interleaving String
  3. UVA - 10934 Dropping water balloons(装满水的气球)(dp)
  4. 使用junit测试用例
  5. 解决启动Biee控制台乱码问题
  6. 恢复快速启动栏里的“显示桌面”图标
  7. 状态管理工具vuex的基本使用(vuebus的理解)
  8. java 中文字符和unicode编码值相互转化
  9. 未能加载文件或程序集“Poderosa.Core
  10. Access导入文本文件的Schema.ini文件格式