硬件平台: 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前提条件:
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组件未安装成功,重新安装