技术天地

高性能FTP服务器在英创Linux工控主板上的移植    发布时间:2014-10-22    被阅览数:

  ftp是TCP/IP网络上两台设备传送文件的协议,用户在嵌入式Linux系统的开发中,有时候需要搭建一个ftp服务器,以便实现对设备的访问和文件传输等功能。英创工控主板已经自带了一款busybox中的ftpd服务器,但是不能支持用户名和密码的管理,无法完全满足一些工业应用的需求,针对这一点英创公司移植了一款小巧的ftp服务器stupid-ftpd:

 

  启动方式 功能区别
  ftpd   开机自动启动   不支持用户名和密码管理
  stupid-ftpd   需要手动启动   支持用户名和密码管理,并且能控制操作权限

 

  可以看出,相对busybox中的ftpd服务器,stupid-ftpd的功能更加全面,接下来就介绍在英创Linux工控主板上移植stupid-ftpd的过程。

 

  stupid-ftpd的下载地址:http://sourceforge.net/projects/stupid-ftpd/files/

 

  将下载好的stupid-ftpd-1.5beta.tar.gz放到工作目录下,首先解压:
  #tar vxzf stupid-ftpd-1.5beta.tar.gz,并进入解压目录,修改Makefile,只需要修改两项,将编译工具修改为英创公司提供的交叉工具链,并在编译选项中加上静态编译:
  CC=arm-none-linux-gnueabi-gcc
  CFLAGS=-O2 -Wall -Wstrict-prototypes -static

 

  修改好后,直接执行make,编译完成,生成stupid-ftpd.Linux6可执行程序和所需要的配置文件stupid-ftpd.conf。将这两个文件拷贝至板卡的文件系统中就完成了移植工作,接下来就是如何使用。

 

  ftp服务器运行需要配置文件stupid-ftpd.conf,配置文件可以设置ftp服务器的用户名和密码,英创公司已经将一个配置文件的范例放在/etc目录下,可由用户自行修改,建议先将英创公司提供的范例stupid-ftpd.conf复制到/mnt/nandflash目录下再进行修改,这样就算出错也能够改回原来的配置。

 

  可以使用vi打开配置文件:#vi /mnt/nandflash/stupid-ftpd.conf进行编辑:

 

  首先需要修改FTP服务器的根目录:

 

 

  如图所示,在配置文件的第34行可以修改ftp服务器的根目录,由于英创工控主板提供给用户操作的目录都在/mnt目录下,为了避免修改到其他目录的文件,这里建议用户将根目录设置为/mnt目录。

 

  接下来来配置用户名和密码等功能:

 

 

  可以看到配置用户名和密码只需要修改第106行的这段话,它的格式为:


  user= 中间以空格区分。
  =用户名,=密码,=ftp服务器的目录,=最大登录用户,=标志位,允许以下操作:
  D - download 允许下载文件
  U - upload + making directories 允许上传文件和创建新目录
  O - overwrite existing files 允许覆盖已存在文件
  M - allows multiple logins 允许多用户登录
  E - allows erase operations 允许擦除操作
  A - allows EVERYTHING(!) 允许所有功能

 

  在英创公司提供的范例配置中,user=emtronix 123 /nandflash 5 A对照以上说明,就是用户名为emtronix,密码为123,ftp服务器目录为/mnt/nandflash(在前面的介绍中已经将/mnt目录设置为ftp服务器的根目录),最大用户数为5,并且允许所有的功能。用户只需要根据自己的需求自行修改这一行就能够达到用户名和密码的管理操作。

 

  配置好以后,就能够启动ftp服务器了,首先需要关掉之前提到的主板自带的ftp服务器,使用命令

  #pkill inetd

  即可,然后就能够开启stupid-ftpd了,ftp服务器所使用的端口默认为21,所以还需要21端口没有被占用。

 

  使用命令

  # stupid-ftpd.Linux6 -f /mnt/nandflash/stupid-ftpd.conf,-f后面跟的参数为修改好的配置文件。这样就启动了ftp服务器,可以使用开发主机来测试:

 

 

  可以看到,通过设置的用户名和密码,已经成功连接到/mnt/nandflash目录下了,至此就能够正常使用具有用户名和密码管理的ftp服务器了。

 

  如果需要关闭ftp服务器,调用命令

  #pkill stupid-ftpd

  即可。

Go Top