交叉编译环境中虚拟机ubuntu向开发板传送文件的方法

预备知识:

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上要传输的文件了

猜你喜欢

转载自blog.csdn.net/rannar/article/details/82317466
今日推荐