首先检查tftp是否已经安装,在控制台输入命令:netstat -a | grep tftp,如果输出udp 0 0 *:tftp
则表明tftp已经安装。否则则输入以下命令 :
sudo apt-get install tftpd-hpa tftp-hpa
这一条命令实际上将服务端和客户端一起安装了。
在安装结束之后需要进行设置,这里有两种方法。实际上市两种启动精灵进程的方式。所谓精灵进程就好比windows下面的service一样。先让我们一心一意的把tftp安装好之后再进行讨论吧。首先介绍两种配置方式。
第一种,利用xinet进行配置,这需要已经安装了xinet服务。
cd /etc/xinetd.d/
vi tftp
输入
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
存盘退出(至于上面各个参数的含义不是我们现在所需要讨论的)。然后建立tftp服务文件目录。
mkdir /tftpboot接下来,重新启动服务。
/etc/init.d/xinetd restart
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" //这里是你的tftpd-hpa的服务目录 //可以改成你想要的那个tftpboot
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s" //这里是选项
下面启动tftp。
sudo service tftpd-hpa restart(注意这一句和上面启动服务的差异)
————————————————————————————————————————
————————————————————————————————————————
通过上面的一些步骤,我们已经安装好tftp服务了。但是看到上面的这些配置,想必都有一些头晕吧。
首先,切换一下思维回到windows系统下面。首先打开任务管理器,一般情况下我们会看到一大堆的svchost进程。其实这里的svchost应该是service host的缩写。而MSDN对这个程序的解释如下:
Svchost.exe是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。Svchost.exe文件位于%SystemRoot%\System32文件夹中。启动时,Svchost.exe 将检查注册表的服务部分,以构建需要加载的服务的列表。可以同时运行多个 Svchost.exe 实例。每个Svchost.exe 会话可以包含一组服务,以便可以根据 Svchost.exe的启动方式和位置运行不同的服务。这样可以更好地进行控制和调试。
Svchost.exe 组由以下注册表项标识:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost
此注册表项下的每个值都代表单独的 Svchost 组,并在您查看活动进程时作为单独的实例显示。每个值均为 REG_MULTI_SZ 值,并且包含在该 Svchost 组下面运行的服务。每个 Svchost 组都可以包含一个或多个从以下注册表项(该注册表项的 Parameters 项包含一个 ServiceDLL 值)中提取的服务名称:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\服务
再来看看xinet程序的真正名称吧——eXtended InterNET daemon。这个是不是和上面的service host有些类似了。其实xinet是Linux下面的一个超级精灵程序,这个程序在系统当中等待客户服务,然后根据/etc/xinet文件夹下面的相关配置来启动该相应的服务,当然上面的参数yes可以设置成自动启动和手动启动两种方式,这不就是和注册表项HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\服务下面的start键值功能很类似了吗。所以上面的/etc/init.d/xinetd restart实际上是执行/etc/init.d文件夹下面的xinetd脚本文件,这个脚本文件当中执行真正的xinet程序重启,然后由xinet程序启动/etc/xinet文件夹里面的服务(文件夹里面实际上是一些启动服务的配置文件)。再来看看第二种方式:关于这种方式,首先要谈谈Linux的启动过程。首先Linux启动的时候是根据/etc/init下面的.conf文件启动相应的程序,然后才转到/etc/init.d里面根据相应的参数启动相应的服务。不过因为Linux下面有相应的run level,所以为了简便,在init.d文件夹下面存放的是在每一个run level都要启动的服务,而在相应的rcn.d文件夹里面存放的则是在相应的run level下面应该启动和停止的服务。比如在run level下面需要启动的服务和停止的服务可以在rc2.d文件夹下面找到,而需要启动的服务以s开头,后面的数字表明这个服务启动的顺序。反之k开头表示停止的服务,后面的数字表示挺值得顺序,数值越大,越在后面停止和启动。在启动服务的时候,程序会首先搜索/etc/default文件夹作为服务启动的参数。所以这里启动服务的命令是sudo service tftpd-hpa restart。这一句是调用系统的service程序来进行重启。