之前无论是查教程,还是下资料,CSDN都给了我莫大的帮助。恰好最近公司要用这个平台搭建FTP服务器,看了网上很多关于移植的例程,要么流程太简洁,不能用;要么流程太复杂,不想看。所幸把这次成功移植的经验分享出来,一为记录,二为帮助需要移植vsftpd的朋友少走些弯路。。
第1步:下载vsftpd-2.3.2.tar安装包。
(注意:A20提供的固件最高只支持到2.3.2)
ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.2.tar.gz
第2步:解压
$ tar -xzvf vsftpd-2.3.2.tar.gz
$ cd vsftpd-2.3.2
第3步:配置
$ vi Makefile
打开Makefile文件后,需要修改两个地方才能保证编译成功;
1)修改第2行CC变量的值,修改后如下:
CC = arm-linux-gnueabi-gcc
(注意:要和A20 demo板用的交叉编译工具对应)
2)修改第8行LIBS变量的值,修改后如下:
LIBS = ‘./vsf_findlibs.sh’-lcrypt
第4步:编译
$ make
make后当前目录下生成vsftpd和vsftpd.conf;然后更改这两个文件的所属权限为root,不然跑不起来;
$ sudo chown root:root vsftpd
$ sudo chown root:root vsftpd.conf
之后把这两个文件拷贝到以下目录:
$ sudo cp vsftpd /home/grj/Test_FTP/CQA20Linux_Qt5.3.2_bv2/lichee/buildroot/target/dragonboard/rootfs/usr/sbin/
$ sudo cp vsftpd.conf /home/grj/Test_FTP/CQA20Linux_Qt5.3.2_bv2/lichee/buildroot/target/dragonboard/rootfs/etc/
然后到etc目录下,新建vsftpd.user_list文件用于存放允许访问的ftp用户,并且修改其所有权为root;
$ touch vsftpd.user_list
$ vi vsftpd.user_list
$ sudo chown root:root vsftpd.user_list
在vsftpd.user_list文件中添加账户ftpadmin,然后保存退出。
接着修改vsftpd.conf文件;
$ vi vsftpd.conf
1) 修改第12行 anonymous_enable=YES为NO
anonymous_enable=NO
2) 关闭第15行的注释 #
local_enable=YES
3) 关闭第18行的注释 #,并添加以下语句
write_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_enable=YES
userlist_deny=NO
接下来进入如下目录
$ cd /home/grj/Test_FTP/CQA20Linux_Qt5.3.2_bv2/lichee/linux-3.4/net/ipv4
修改af_inet.c,屏蔽第297 ~ 302行,如下
297 // if(!current_has_network())
298 // return -EACCES;
300 //if(unlikely(!inet_ehash_secret))
301 //if(sock->type != SOCK_RAM && sock->type 1= SOCK_DGRAM)
302 //build_ehash_secret();
回退到如下目录,
/home/grj/Test_FTP/CQA20Linux_Qt5.3.2_bv2/lichee/buildroot/target/dragonboard/
修改build.sh文件。在第64行添加一个empty空目录。此目录为vsftpd运行的必须项。
mkdir -p rootfs/usr/share/empty/
接下来回到以下目录编译
/home/grj/Test_FTP/CQA20Linux_Qt5.3.2_bv2/lichee/linux-3.4
$ make zImage
然后回到lichee目录下打包
$ ./build_dragonboard.sh
$ ./build_pack.sh
第5步:测试
在demo板上创建ftpadmin账户,输入账户密码;
$ adduser ftpadmin
Changing password for ftpadmin
New password:
Retype password:
Password for ftpadmin changed by root
打开FileZilla Client输入刚刚设置的账户密码登陆即可。
参考前辈的链接:
vsftpd移植到ARM Linux教程
Ubuntu 16.04下vsftpd 安装配置实例(ftp服务器搭建)
vsftpd 服务移植出现 500 oops : socket 解决