10大优享服务
62项会员特权
500
雇佣
嵌入式软件
收藏
编译LINUX 2.6.31.8 环境下的NFS模块
任务结束
需求描述:

NFS是一种在Unix/Linux下广泛使用的网络文件系统。Linux的内核已经内置了对NFS客户端和服务器的支持。但是播放机的内核没有打开NFS服务器支持,因此我们需要自己编译相关的模块。另外我们还需要相应的辅助程序:portmapnfs-utils。其中nfs-utils要求C程序库包含对RPC的支持,然而播放机的uclibc没有打开RPC支持。目前已经有的程序为

/etc//S60nfs
/sbin/portmap
/usr/sbin/exportfs
/usr/sbin/     
/usr/sbin/
/usr/sbin/

缺少 

lib/modules/2.6.31.8/
lib
/modules/2.6.31.8/

需要做的操作是

1. 关闭模块版本检查,使得我们编译的模块可以在原厂内核上加载。
配置菜单位置: Loadable module support  ---> [ ]  Module versioning support (EXPERIMENTAL)

2. 打开NFS服务器支持,选择把它编译成模块。
配置菜单位置:File systems  --->  Network File Systems  ---> [M]  NFS server support

3. 打开或关闭内核调试。这个一定要与你的播放机内核的实际配置保持一致,否则编译出的模块会无法加载。
Kernel hacking  --->  [?] Kernel debugging

然后执行make进行编译。编译完成后我们得到以下两个模块:
fs/exortfs/
fs/nfsd/

以及ULIBC的重新编译和替换

二、打开uClibc对RPC的支持
NFS的通讯协议是基于ONC RPC(一种远程过程调用协议)的。nfs-utils工具调用了C函数库的RPC函数,因此要求uClibc必需提供这些函数。原厂固件中的uClibc关闭了RPC支持,我们只能用自己编译的支持RPC的uClibc来替换原厂的uClibc。
我们只需在配置buildroot时指定uClibc的配置文件,这个配置文件应该包括下面两项:

UCLIBC_HAS_RPC=y
UCLIBC_HAS_FULL_RPC
=y

附件:
补丁:
配置文件:
编译好的uClibc:

编译好的模块替换对应文件

2. 用自己编译的uClibc替换原厂的uClibc,放在/lib下:

例如 /lib/ -> libm-0.9.28.so


登录查看详细需求描述

任务结束

一品威客网已聚集超千万专业人才,为雇主提供一站式优质服务