通过ftp实现Ubuntu与Linux嵌入式开发板的文件传输功能

2019-07-12 15:55发布

      正在进行一个嵌入式Linux开发板的项目,用到了ftp功能。先简单介绍一下我这边的硬件:PC机和Linux开发板(AM4378);还有软件:PC机下装了虚拟机,Ubuntu的版本是12.04,Linux开发板的内核版本为4.1.18。我的Linux开发板是通过buildroot编译的文件系统,因此在加入ftp功能直接到busybox中配置。如果本身你的开发板已经有了ftpd、ftpget和ftpput这些功能,请直接看第二节。详细配置过程如下: 一、开发板开启ftp功能 1.编译文件系统时需要通过busybox的配置加入ftp功能(需要在文件系统编译完成后才能进行该步骤),配置方法如下: ①进入busybox的配置目录 #cd /home/437workspace/Filesystem/myir-buildroot/output/build/busybox-1.25.1 ②配置busybox选项 #make menuconfig (添加) Networking Utilities  ---> [*] ftpd [*] ftpget [*] ftpput [*] inetd   ③将步骤②配置获得的.config配置文件替换文件系统中关于busybox的配置文件 #cp -r /home/437workspace/Filesystem/myir-buildroot/output/build/busybox-1.25.1/.config /home/437workspace/Filesystem/myir-buildroot/package/busybox/busybox.config ④切换到文件系统编译目录 #cd /home/437workspace/Filesystem/myir-buildroot ⑤重新编译文件系统 #make 2.将重新生成的文件系统载入开发板,此时可在开发板中输入以下指令:ftpd、ftpget和ftpput,说明busybox配置成功。 3.开发板配置ftp目录,该目录作为ftp服务传输文件的路径。 ①创建配置文件 # vi /etc/inetd.conf 在配置文件中写入以下内容: 21 stream tcp nowait root ftpd ftpd -w /ftpdir ②创建ftp目录 #mkdir /ftpdir ③将配置文件执行到脚本中 # inetd ④测试ftp进程,可以查询到inetd进程已经启动 #ps 二、Ubuntu开启ftp功能 1.安装文件 #sudo apt-get install vsftpd 2.修改ftp配置文件 #sudo vi /etc/vsftpd.conf 将以下两行的注释去除: #local_enable=YES #write_enable=YES 改为 local_enable=YES write_enable=YES 3.重启ftp服务 #service vsftpd restart 三、开发板和Ubuntu文件传输 在ftp传输中,对Ubuntu的文件访问是自由的,即只要启动ftp服务,用户可以自由传输Ubuntu的所有文件(有时候需要保证文件夹具有访问权限),但是对开发板而言,用户只能在其指定的文件夹下进行文件的传输。 1.用户在Ubuntu中操作 从Ubuntu登录到开发板(务必确保Ubuntu和开发板在同一网段),然后可以访问开发板上的文件,也可以向开发板传输文件。在访问开发板上的文件时,用户只能对开发板上路径/ftpdir下的文件进行操作。从开发板上获取到的文件会保存在当前Ubuntu操作目录下。 #put+Ubuntu文件路径名+开发板文件名(不能包含路径,传输的文件将会保存至/ftpdir路径) #get+开发板/ftpdir路径下的文件+Ubuntu文件路径名 2.用户在开发板中操作 用户可以从开发板向Ubuntu任意路径下传输文件,也可以从Ubuntu任意路径下获取文件,但是Ubuntu下的路径必须有访问权限。 #ftpput+[-u]+Ubuntu用户名+[-p]+登录密码+Ubuntu的IP地址+Ubuntu文件路径名(为了防止出错最好写全路径)+开发板/ftpdir路径下的文件 #ftpget+[-u]+Ubuntu用户名+[-p]+登录密码+Ubuntu的IP地址+保存的文件名(将会保存至开发板/ftpdir路径下)+Ubuntu文件路径名