vsFTP server 移植到DavinCi

2024-04-13 06:18
文章标签 移植 server vsftp davinci

本文主要是介绍vsFTP server 移植到DavinCi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                                      vsFTP server 移植到 DavinCi

+-----------------------------------------------------------------------------+
                                              
第一部分 文档说明  
+-----------------------------------------------------------------------------+

1
作用
############
   
如果要在网络中建立一个文件的集中位置,为用户提供访问,那就一定非FTP 莫属了,它也是Internet 上历史悠久的通信协议,在跨平台的集成上,FTP 可说是最稳定且使用最方便的重要工具,而在煤炭车辆智能分型记录仪项目中,设备采用嵌入式系统结构,内置FTP 服务器,抓拍机会向FTP 服务器上传数据文件,车辆数目以及分类记录。因此本文档说明如何移植vsFTP 服务器到DaVinCi 处理器的MontaVista Linux 系统。

2
版权
############
   
版权: 西安XX 科技有限责任公司
 
3
组织与作者
############
3.1
组织
============
   
研发一部
 
3.2
作者
============
3.2.1
作者
------------
   
姓名: 方长存
   
维护版本: 0.1
 
4
产生时间
############
   
时间: 2010-03-25
 
5
版本
############
   
版本: 0.1
 
6
修订过程
############
6.1
0
============
6.1.1
0.1
------------
   
说明文档的组成, 基本格式, 以及编辑工具以及文档要求.
 
+-----------------------------------------------------------------------------+
                                          
第二部分 文档正文
+-----------------------------------------------------------------------------+
1.
下载源码包并解压
############
1.1
下载
============
  
vsftpd 官方网站:http://vsftpd.beasts.org/ 下载vsftpd-2.1.0.tar.bz2 源码包,使用当前的最新版本:vsftpd-2.1.0
  
将下载到的文件放在当前用户有权访问的路径下,比如/opt 目录下。
  
1.2
解压
============
[fang@fang opt]$ tar –jxvf vsftpd-2.1.0.tar.bz2
[fang@fang opt]$ cd vsftpd-2.1.0/
 
2.
交叉编译(for DaVinCi
############
2.1
修改两个文件:
============
2.1.1
修改Makefile,Makefile 规则中的编译器修改为自己DaVinCi 架构上的编译器:
------------
即修改CC 这一行的gcc 为自己DaVinCi 架构上的交叉编译器arm_v5t_le-gcc ,。
修改文件前先备份初始文件,以便在出错时对比和恢复:
[fang@fang vsftpd-2.1.0]$ cp Makefile Makefile.bak
[fang@fang vsftpd-2.1.0]$ vi Makefile
将文件中
CC = gcc
这一行修改为:
CC = /opt/arm/v5t_le/bin/arm_v5t_le-gcc
(此为编译器的绝对路径)
保存退出即可。

2.1.2
修改vsf_findlibs.sh
------------
在这个文件中将所用的库都改为你所使用编译器里面的库
我用到了两个库:libpamlibcap
我所使用的编译器所在路径为/opt/arm/v5t_le/bin/arm_v5t_le-gcc
其中这个编译器的库在/opt/arm/v5t_le/target/lib/opt/arm/v5t_le/target/usr/lib 这两个目录里面:
首先,找到libpam 库所在位置:
# Look for PAM (done weirdly due to distribution bugs (e.g. Debian) or the
# crypt library.
if find_func pam_start sysdeputil.o; then
  locate_library /opt/arm/v5t_le/target/lib/libpam.so.0 && echo "/opt/arm/v5t_le/target/lib/libpam.so.0";
  locate_library /opt/arm/v5t_le/target/usr/lib/libpam.so && echo "-lpam";
locate_librarylibpam 库改为你自己所在的路径,我这里是/opt/arm/v5t_le/target/lib//opt/arm/v5t_le/target/usr/lib/

接下来,找到libcap 库所在位置:
# Look for libcap (capabilities)
#if locate_library /arm/v5t_le/target/usr/lib/libcap.so.1; then echo "/arm/v5t_le/target/usr/lib/libcap.so.1";
#else
  locate_library /arm/v5t_le/target/usr/lib/libcap.so && echo "-lcap";
locate_library /arm/v5t_le/target/lib/libcap.so && echo "-lcap";
#fi
locate_librarylibcap 库改为你自己所在的路径,我这里是仅是/opt/arm/v5t_le/target/usr/lib/
   
2.2
执行动态编译:
============
2.2.1.
执行make 命令进行动态编译:
------------
[fang@fang vsftpd-2.1.0]$ make

2.2.2.
编译成功后的说明
------------
若编译成功,则在当前目录即/opt/vsftpd-2.1.0/ 下会生成vsftpd 可执行文件

3.
处理动态库依赖并拷贝所需文件到板子
############
3.1
查看vsftpd 所依赖的库
============
[fang@fang vsftpd-2.1.0]$ ../arm/v5t_le/bin/arm_v5t_le-readelf -d vsftpd
这条命令运行后我的显示如下:
Dynamic section at offset 0x161b4 contains 26 entries:
  Tag        Type                          Name/Value
  0x00000001 (NEEDED)                     Shared library: [libpam.so.0]
  0x00000001 (NEEDED)                     Shared library: [libcap.so.1]
  0x00000001 (NEEDED)                     Shared library: [libc.so.6]
  0x0000000c (INIT)                       0x9a30
  0x0000000d (FINI)                       0x1ae18
  0x00000019 (INIT_ARRAY)                 0x261a8
  0x0000001b (INIT_ARRAYSZ)               4 (bytes)
  0x0000001a (FINI_ARRAY)                 0x261ac
  0x0000001c (FINI_ARRAYSZ)               4 (bytes)
  0x00000004 (HASH)                       0x81fc
  0x00000005 (STRTAB)                     0x8fa0
  0x00000006 (SYMTAB)                     0x8660
  0x0000000a (STRSZ)                      1319 (bytes)
  0x0000000b (SYMENT)                      16 (bytes)
  0x00000015 (DEBUG)                      0x0
  0x00000003 (PLTGOT)                     0x262ac
  0x00000002 (PLTRELSZ)                   1048 (bytes)
  0x00000014 (PLTREL)                     REL
  0x00000017 (JMPREL)                     0x9618
  0x00000011 (REL)                        0x9610
  0x00000012 (RELSZ)                      8 (bytes)
  0x00000013 (RELENT)                     8 (bytes)
  0x6ffffffe (VERNEED)                    0x95f0
  0x6fffffff (VERNEEDNUM)                 1
  0x6ffffff0 (VERSYM)                     0x94c8
  0x00000000 (NULL)                       0x0
由此可看出所依赖的库为libpam.so.0libcap.so.1libc.so.6 ,需将这3个库拷贝到板子根目录下的lib 目录下。

.2 拷贝依赖库到板子的具体操作如下:
============
.2.1 telnet 登录板子:
------------
[fang@fang vsftpd-2.1.0]$ telnet 192.168.0.10
显示如下:
Trying 192.168.0.10...
Connected to 192.168.0.10.
Escape character is '^]'.

MontaVista(R) Linux(R) Professional Edition 4.0 (0501140)
Linux/armv5tejl 2.6.10_mvl401-davinci_evm_gsv

192.168.0.199 login:
(输入用户名root
Password:
(输入密码:xx_admin
Linux 192.168.4.74 2.6.10_mvl401-davinci_evm #46 Fri Jul 11 01:17:42 CST 2008 armv5tejl GNU/Linux

Welcome to MontaVista(R) Linux(R) Professional Edition 4.0 (0501140).

root@192.168.0.199:~#
出现以上信息说明已经成功登录

.2. 2 将以上3个库(在/opt/arm/v5t_le/target/usr/lib )拷贝到板子根目录下的lib 目录下:
------------
必要解释:
首先,查看这3个库文件:
[root@fang vsftpd-
vsFTPd 服务器初学者指南(欢迎大家参与补充)》   http://www.linuxsir.org/main/?q=node/152#6

VSFTPD 服务器安装配置》http://debian.linuxsir.org/doc/inthedebianway/vsftpd/index.html2.1.0]# cd /opt/arm/v5t_le/target/usr/lib/
[root@fang lib]# ls -l libcap.so.1
lrwxrwxrwx. 1 fang fang 14 2010-03-25 17:43 libcap.so.1 -> libcap.so.1.10

[root@fang lib]# cd /opt/arm/v5t_le/target/lib/
[root@fang lib]# ls -l libpam.so.0
lrwxrwxrwx. 1 fang fang 14 2010-03-25 17:43 libpam.so.0 -> libpam.so.0.76

[root@fang lib]# ls -l libc.so.6
lrwxrwxrwx. 1 fang fang 13 2010-03-25 17:43 libc.so.6 -> libc-2.3.3.so
由此可看出:
/opt/arm/v5t_le/target/lib/
下面的libpam.so.0 实际上是该目录下libpam.so.0.76 的一个符号链接,
/opt/arm/v5t_le/target/usr/lib/
下面的libcap.so.1 实际上是该目录下libcap.so.1.10 的一个符号链接,
/opt/arm/v5t_le/target/lib/
下面的libc.so.6 实际上是该目录下libc-2.3.3.so 的一个符号链接,
故拷贝时须拷贝原始库文件。
root@192.168.0.199:~# scp -rp fang@192.168.0.108:/opt/arm/v5t_le/target/lib/libpam.so.0.76 /lib
root@192.168.0.199:~# scp -rp fang@192.168.0.108:/opt/arm/v5t_le/target/usr/vsftpd.conflib/libcap.so.1.10 /lib
root@192.168.0.199:~# scp -rp fang@192.168.0.108:/opt/arm/v5t_le/target/lib/libc-2.3.3.so /lib

.3 同时拷贝可执行程序vsftpd 和配置文件vsftpd.conf 到板子文件系统相应位置下
============
root@192.168.0.199:~# scp -rp fang@192.168.0.108:/opt/vsftpd-2.1.0/vsftpd
 /usr/sbin
root@192.168.0.199:~# scp -rp fang@192.168.0.108:/opt/vsftpd-2.1.0/vsftpd.conf /etc

. 修改相应的配置文件
############
在将vsftpdvsftpd.conf 文件拷贝到板子上之后我们就需要来修改这个配置文件了。
煤炭记录仪板子vsftpd.conf 文件具体修改以下内容:
root@192.168.0.199:~# vi /etc/vsftpd.conf
ftp_username=ftp       
        (添加此行)
local_enable=YES       
         (去掉此行前面的# ,本地帐户能够登陆)
write_enable=YES       
         (去掉此行前面的# ,本地帐户登陆后有权删除和修改文件)
local_umask=000    
            ( 去掉此行前面的# 并将077 改为000 修改,FTP 上本地的文件权限,默认是077
dirmessage_enable=YES  
         (去掉此行前面的# ,切换目录时,显示目录下.message 的内容)
xferlog_std_format=YES     
       ( 去掉此行前面的#
ascii_upload_enable=YES    
       ( 去掉此行前面的# ,启用上传的ASCII 传输方式)
ascii_download_enable=YES           (
去掉此行前面的# ,启用下载的ASCII 传输方式)
listen_port=21                 
   ( 添加此行,定FTP 服务器监听的端口号, 此选项在standalone 模式下生效, 默认:21
local_root=/media/ftp_share        
(添加此行)
secure_chroot_dir=/media/ftp_share 
(添加此行)
chroot_local_user=YES        
    (添加此行,将所有用户限定在ftp 的家目录内)
修改完后保存退出即可。

.vsftpd 建创建目录和用户。
############
创建ftp 家目录:
root@192.168.0.199:/etc#mkdir /media/ftp_share 
修改文件的权限: 
root@192.168.0.199:/etc#chmod 755 /media/ftp_share 

首先有一个本地用户,这样可以通过本地用户进行访问;其次要匿名登陆,需要ftp 用户(具体用户名和配置文件有关);
root@192.168.0.199:/etc#useradd -g ftp –d media/ftp_share –s /bin/sh test         
root@192.168.0.199:/etc#passwd test                                
Enter new UNIX password:
(输入ftp 用户test 的密码:test                             
Retype new UNIX password:
(再次确认密码:test                               
passwd: password updated successfully                  

查看/etc/passwd 文件,会看到我们刚创建的ftp 用户
root@192.168.0.199:/etc# cat passwd
会看到显示的信息中包含该行:
test:x:1000:14::/media/ftp_share:/bin/sh

6.1
、配置并启动vsFTP 服务器
############
系统启动时会调用/etc/rc.d/rc3.d/ 中的文件,据此启动相应的服务,它们都是链接文件,
链接到/etc/init.d/ 中的一个启动脚本(shell 脚本)vsftpd
在这个脚本里面写了vsftpd 服务器的启动关闭等执行情况,启动关闭的命令是在这个脚本里面书写。
现在建立一个开机启动的链接文件:
/etc/rc.d/rc3.d/ 目录下执行:
root@192.168.0.199:/etc/rc.d/rc3.d# ln –s ../init.d/vsftpd S60vsftpd
这样在启动系统的时候就可以自动启动ftp 服务器了。

+-----------------------------------------------------------------------------+
|                        
第三部分 文档参考                                   |
+-----------------------------------------------------------------------------+
1
书籍参考
##########
vsFTPd 服务器初学者指南》   http://www.linuxsir.org/main/?q=node/152#6

VSFTPD 服务器安装配置》  http://debian.linuxsir.org/doc/inthedebianway/vsftpd/index.html
 
2
文档参考
##########
《移植vsftpd FTP 服务器到ARM-Linux 系统(煤炭项目)》

 

 

这篇关于vsFTP server 移植到DavinCi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/899350

相关文章

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

red5-server源码

red5-server源码:https://github.com/Red5/red5-server

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控

ERROR 2003 (HY000): Can't connect to MySQL server on (10061)

在linux系统上装了一个mysql-5.5,启动后本机都是可以访问的,操作都正常,同时建了一个%的用户(支持远程访问), root@debian:/# mysql -u loongson -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id

RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)

目录 概述 1 RT-Thread 1.1 RT-Thread的版本  1.2 认识Nano版本 2 STM32F446U上移植RT-Thread  2.1 STM32Cube创建工程 2.2 移植RT-Thread 2.2.1 安装RT-Thread Packet  2.2.2 加载RT-Thread 2.2.3 匹配相关接口 2.2.3.1 初次编译代码  2.2.3.