我正在尝试在两台 Linux 机器(嵌入式)之间设置 NFS。
Foo(server) -> Bar(client)
我在两台机器上都安装了 nfs-utils (1.3.3) 和依赖项。这里是/etc/出口文件在 Foo 上。
/public 10.0.1.0/24(rw,insecure,async,no_subtree_check,no_root_squash,nohide)
/民众位于本地文件系统上并且未加密。
FOO# findmnt -T /public
TARGET SOURCE FSTYPE OPTIONS
/ ubi0:rootfs ubifs rw,relatime
并启动守护进程:
FOO# /etc/init.d/S21-nfsd start
Mounting proc/fs/nfsd: [OK]
exportfs: /public does not support NFS export
Starting /sbin/portmap: [OK]
Starting /usr/sbin/rpc.statd: [OK]
Starting /usr/sbin/rpc.mountd: [OK]
Starting /usr/sbin/rpc.nfsd: [OK]
FOO# exportfs
/public 10.0.1.0/24
FOO# cat /proc/fs/nfs/exports
# Version 1.1
# Path Client(Flags) # IPs
有了上述内容,我不确定该相信哪一个/民众确实出口了。
该目录具有完全权限:
FOO# ls -ld /public
drwxrwxrwx 2 root root 160 Jan 13 1990 /public
在客户端上我尝试挂载 NFS 共享:
BAR# mount -t nfs -vvvv FOO:/public /public
mount: FOO:/public failed, reason given by server: Permission denied
mount: mounting FOO:/public on /public failed: Bad file descriptor
我在两台机器上都使用 root 帐户,并且 uids 匹配:
FOO# id
uid=0(root) gid=0(root) groups=0(root)
BAR# id
uid=0(root) gid=0(root) groups=0(root)
两台机器都支持内核,FOO->kernel 2.6.35,BAR->kernel 4.1.18:
FOO# zcat /proc/config.gz|grep "NFS"
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V3_ACL is not set
# CONFIG_NFS_V4 is not set
CONFIG_ROOT_NFS=y
CONFIG_NFSD=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
BAR# zcat /proc/config.gz | grep "NFS"
CONFIG_KERNFS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V2=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
# CONFIG_NFS_SWAP is not set
# CONFIG_NFS_V4_1 is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFSD is not set
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
我的问题出在哪里?客户端?服务器端?
答案1
Linux 内核FOO
版本为 2.6.35 (从2011年底开始)。它支持 UBIFS(根分区上的文件系统,自 2008 年内核版本 2.6.27 起),但内核对导出 NFS 的支持是从 UBIFS 上安装的在 2016/2017 年期间的某个时候添加。
这意味着您的FOO
系统将无法导出,/public
直到其内核升级到更高版本的内核,或者直到您将目录移动到其他文件系统。