NFS(Network File System)网络文件系统,通过 nfs 可以在计算机之间通过网络来分享资源,也就是网络调试,通过网络调试是 Linux 开发中最常用的调试方法。原因是嵌入式 linux开发不像单片机开发,可以直接通过 JLINK 或 STLink 等仿真器将代码直接烧写到单片机内部的 flash 中,嵌入式 Linux 通常是烧写到 EMMC、NAND Flash、SPI Flash 等外置 flash 中,但是嵌入式 Linux 开发也没有 MDK,IAR 这样的 IDE,更没有烧写算法,因此不可能通过点击一个“download”按钮就将固件烧写到外部 flash 中。其远没有 MDK、IAR的一键下载方便,在 Linux 内核调试阶段,如果用这个烧写软件的话将会非常浪费时间,而这个时候网络调试的优势就显现出来了,可以通过网络将编译好的 linux 镜像和设备树文件下载到 DRAM 中,然后就可以直接运行。
我们一般使用 uboot 中的 nfs 命令将 Ubuntu 中的文件下载到开发板的 DRAM 中,在使用之前需要开启 Ubuntu 主机的 NFS 服务,并且要新建一个 NFS 使用的目录,以后所有要通过NFS 访问的文件都需要放到这个 NFS 目录中。
NFS 服务开启
如下命令安装 NFS 服务:
sudo apt-get install nfs-kernel-server rpcbind
创建的 nfs 文件夹供 nfs 服务器使用,以后我们可以在开发板上通过网络文件系统来访问 nfs 文件夹,要先配置 nfs,使用如下命令打开 nfs 配置文件/etc/exports(设置文件权限):
sudo vi /etc/exports
打开/etc/exports 以后在后面添加如下所示内容:
*/home/bj /linux/nfs (rw,sync,no_root_squash)
重启 NFS 服务,使用命令如下:
sudo /etc/init.d/nfs-kernel-server restart
NFS挂载
.把你想拷贝到开发板上的文件都复制到刚才设置的目录里,例如拷贝到 /work/nfs,然后在开发板上执行挂载命令
常用命令屡试不爽
mount -t nfs -o nolock,vers=2 10.0.0.147:/work/nfs /mnt
mount -t nfs -o nolock,vers=2 192.168.1.23:/home/bj/NFS /NFS
mount -n -o nolock 192.168.1.23:/home/bj/NFS/ /NFS/
mount -t nfs -o nolock,nfsvers=3 192.168.1.23:/home/bj/NFS /NFS
解释一下:
mount :挂载命令
nfs :使用的协议
nolock :不阻塞
vers : 使用的NFS版本号
IP : NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
/work/nfs: 要挂载的目录(Ubuntu的目录)
/mnt : 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)