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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章