Android挂载QNX的NFS服务问题记录
在QNX开启NFS服务,由QNX上的guest OS–Android作为客户端,将QNX的目录作为网络设备以NFS的方式挂载。过程中主要遇到三个问题,下面分别描述配置方法,配置过程遇到的问题、分析思路以及解决方案。
配置方法
QNX侧
1.1 将netconfig配置文件保存至/etc目录下,netconfig内容如下:
# Entries consist of:
#
# <network_id> <semantics> <flags> <protofamily> <protoname> \
# <device> <nametoaddr_libs>
#
# The <device> and <nametoaddr_libs> fields are always empty.
#
udp6 tpi_clts v inet6 udp - -
tcp6 tpi_cots_ord v inet6 tcp - -
udp tpi_clts v inet udp - -
tcp tpi_cots_ord v inet tcp - -
rawip tpi_raw - inet - - -
local tpi_cots_ord - loopback - - -
1.2 将exprots配置文件推送至/etc路径下,exprots内容如下:
/persist/nfs_server -mask=255.255.255.0 -match=192.168.1.0
exports文件定义了NFS服务端提供给客户端的挂载点,以及相关的挂载权限,以上述配置内容为例,设置的挂载点为/persist/nfs_server,允许的挂载的客户端IP为必须属于192.168.1这个网段,即IP必须满足IP & 255.255.255.0=192.168.1.0。其他可配置的选项还有-norsvd,-ro,-root等,每个选项的详细介绍可以查询QNX官方开发者网站。
1.3 执行rpcbind和nfsd
rpcbind
nfsd -c /etc/exports -t
Android侧
1.1 kernel内核配置NFS client
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_SWAP=y
+CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
+CONFIG_NFS_V4_1_MIGRATION=y
+CONFIG_NFS_USE_LEGACY_DNS=y
+# CONFIG_SUNRPC_DEBUG is not set
1.2 挂载在/data/nfs_client目录
busybox mount -t nfs -o nolock 192.168.1.1:/persist/nfs_server /mnt/nfs_client
挂载时提示“Permission denied”
完成上述配置后,在Android端进行挂载时,遇到了“Permission denied”的错误
busybox mount -t nfs -o nolock 192.168.1.1:/persist/nfs_server /mnt/nfs_client
mount: mounting 192.168.1.1:/persist/nfs_server on /data/nfs_client failed: Permission denied
对QNX侧的/persist/nfs_server和Android侧的/data/nfs_client进行检查,发现权限都已经正确配置
drwxrwxrwx 2 root root 4096 Jan 01 00:01 /persist/nfs_server/
drwxrwxrwx