编译portmap和nfs-utils

    技术2026-09-20  7

    为了在播放机上实现NFS服务器的功能,我们已经在uClibc中打开了完整RPC支持,并且在新编译的内核中打开了NFS服务器支持。此外还有两个软件包也是提供NFS服务所必需的:portmap和nfs-utils。portmap为RPC程序提供端口映射服务,nfs-utils则是使用内核NFS服务器的支持程序。编译portmap1. 下载portmap_5beta: ftp://ftp.porcupine.org/pub/security/portmap_5beta.tar.gz2. 打这个补丁: portmap_5beta.patch.zip (补丁来自buildroot-2009.11,我只是把多个补丁合并成一个)3. $ make CC=mipsel-linux-gcc4. $ mipsel-linux-strip portmap编译nfs-utils1. 下载nfs-utils-1.1.1: http://nchc.dl.sourceforge.net/project/nfs/nfs-utils/1.1.1/nfs-utils-1.1.1.tar.gz2. 打这个补丁: 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

    最新回复(0)