预备知识:
NFS是什么?
NFS:Network File System(网络文件系统),NFS只是一种文件系统,本身并没有传输功能,是基于RPC协议实现的,为C/S架构。也就是说,NFS也只是文件系统而已,与jffs2,yaffs,ext4等是一类东西。但是NFS的特殊之处在于,它可以通过网络来挂载,而不用烧写到设备上。这就跟网吧里使用PXE启动来搭建无盘系统一样:每台电脑并没有安装硬盘,而是直接通过PXE启动服务器上的系统,看起来每台电脑都有硬盘,其实都是挂载服务器上的硬盘。
NFS怎么用?
前边已经介绍过,NFS是C/S架构,也就是说,使用NFS需要搭建服务器和客户端。客户端很简单,自带的uboot已经添加了对NFS客户端的支持,我们只需要管NFS服务器。这个服务器其实跟TFTP、Samba服务器、Ftp服务器也是一类的东西,直接在Ubuntu上使用命令安装即可,
前提条件:
1. 开发板上要烧写好文件系统
2. 能正常开机进入Linux系统
3.uboot中启动参数类似这种 bootargs=noinitrd
root=/dev/mtdblock3
init=/linuxrc
console=ttySAC0
接着按如下步骤执行
1.在ubuntu上搭建(下载)、配置和重启NFS服务器
安装: sudo apt-get install nfs-kernel-server
配置 :sudo vi /etc/exports 在文件里添加
就是在文件里添加了如下语句
/work/nfs *(rw,sync,no_root_squash)
/var/lib/tftpboot *(rw,sync,no_root_squash)
或者下面的语句
/work/ *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
/work/rootfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
/work/nfs_root *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
重启NFS服务器
sudo /etc/init.d/nfs-kernel-server restart
简单解释各个参数的意义:
/work/nfs :允许客户端挂载的目录,可添加任意多个,如果不设置,服务器将不允许客户端挂载。
* :允许所有IP的主机挂载该目录
括号内的 :一些权限设置,比如是否能够读写(可百度,更详尽)
现在NFS服务器就可以用了。
2 查看开发板和Ubuntu的IP,设置开发板IP并ping通NFS服务器
3.把你想拷贝到开发板上的文件都复制到刚才设置的目录里,例如拷贝到 /work/nfs,然后在开发板上执行挂载命令
mount -t nfs -o nolock,vers=2 192.168.1.19:/work/nfs /mnt
解释一下:
mount :挂载命令
nfs :使用的协议
nolock :不阻塞
vers : 使用的NFS版本号
IP : NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
/work/nfs: 要挂载的目录(Ubuntu的目录)
/mnt : 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)
现在进入开发板上的/mnt目录,用ls命令 就可以看到Ubuntu上要传输的文件了