硬件平臺: 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組件未安裝成功,重新安裝