正在进行一个嵌入式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文件路径名