RK3399—板端挂载NFS

硬件平台: firefly rk3399
操作系统: Ubuntu 16.04(官方SDK)
开发环境: Ubuntu 16.04


1 前言

  firefly rk3399板子重新刷了内核和文件系统后,挂载nfs失败。

  网络文件系统(Network File System),简称NFS,最初是由SUN公司推出的UNIX协议(pressentation layer protocol),用于不同计算机之间通过网络共享各自的资源。NFS最大的优点是NFS客户端可以将NFS服务器的共享目录映射到本地,使得客户端可以以本地磁盘访问的方式透明地访问服务器端共享目录、文件,方便快捷。


2 rk3399挂载nfs

  rk3399挂载nfs前提条件:

  • 开发编译系统(Ubuntu16)已安装nfs服务,参考该文章
  • 板端连接网络,并能与开发编译系统相互ping通,可以通过以太网或者WiFi连接;通过WiFi方式连接,参考该文章

2.1 板端安装nfs

 挂载命令,开发主机Ubuntu16 ip地址为“192.168.0.106”,允许的挂载目录为"/home/nfs",则挂载执行命令如下。

/* 执行挂载 */
 sudo mount -t nfs -o nolock,tcp 192.168.0.106:/home/nfs /home
  • mount,挂载命令
  • nfs,使用协议
  • nolock,非阻塞模式
  • tcp,指定nfs使用tcp协议挂载,不填写则使用默认的udp协议
  • 192.168.0.106,开发主机ip地址
  • /home/nfs,需挂载的开发主机目录,需要主机设定好,参考该文章
  • /home,挂载目标板端目录,挂载成功后,该目录原有的文件内容会被隐藏,只能看到开发主机放置到/home/nfs目录的文件

  由于更换了内核和文件系统,挂载应该是不成功的,并提示以下信息。此时说明板端缺少nfs组件。

mount: wrong fs type, bad option, bad superblock on 192.168.0.106:/home/nfs,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

  nfs组件属于文件系统的一部分功能,如果文件系统未安装nfs,原则上需要重新配置文件系统,然后编译、更新文件系统,这一系列步骤会比较繁琐。在保证板端联网的情况下,可以通过网络源直接安装板端nfs组件。执行“sudo apt-get install nfs-common”安装nfs组件。

/* 执行安装nfs组件 */
sudo apt-get install nfs-common

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package nfs-common is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'nfs-common' has no installation candidat

  根据上述提示信息,nfs安装源不可用,需更换安装源或者更新软件源列表,分别执行sudo apt-get update更新软件源列表,和sudo apt-get upgrade更新软件,更新与网络环境有关,需耐心等待一会。

sudo apt-get update
sudo apt-get upgrade

apt-get update用于更新软件列表,即是更新 /etc/apt/sources.list /etc/apt/sources.list.d中列出的源的地址;apt-get upgrade用于更新已安装的软件包,更新后的软件版本为本地索引目录的版本;两个命令一般是结合一起使用,先执行apt-get update,再执行apt-get upgrade

  待更新完毕,执行cat /proc/filesystems查看nfs组件是否安装成功。

/* 查看nfs是否安装 */
firefly@firefly:~$ cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   ramfs
nodev   bdev
nodev   proc
nodev   cpuset
nodev   cgroup
nodev   cgroup2
nodev   tmpfs
nodev   devtmpfs
nodev   configfs
nodev   debugfs
nodev   tracefs
nodev   securityfs
nodev   sockfs
nodev   pipefs
nodev   rpc_pipefs
nodev   devpts
        ext3
        ext2
        ext4
        squashfs
        vfat
        iso9660
nodev   nfs
nodev   nfs4
        ntfs

  nfs组件安装成功后,再执行“sudo apt-get install nfs-common”就可以成功安装nfs组件,接着再执行挂载命令,即可将挂载成功。

开发主机挂载目录:

/* 查看允许挂载目录 */
acuity@ubuntu:/home/nfs$ showmount -e
Export list for ubuntu:
/home/nfs     *
/opt/nfs_temp *

/* 查看挂载目录内容 */
acuity@ubuntu:/home/nfs$ ls
test

rk3399板端挂载:

/* 执行挂载 */
firefly@firefly:~$ sudo mount -t nfs -o nolock,tcp 192.168.0.106:/home/nfs /home

/* 查看是否挂载成功 */
firefly@firefly:~$ ls /home/
test

2.3 挂载失败的可能原因

【1】网络不通,板端和开发主机需相互ping通
【2】开发主机防火墙限制,可以关闭防火墙
【3】如果开发主机是虚拟机,Windows的防火墙也会限制,可以关闭Windows防火墙
【4】rk3399终端nfs组件未安装成功,重新安装

猜你喜欢

转载自blog.csdn.net/qq_20553613/article/details/107133279