Ubuntu中搭建tftp服务器

第 1  步:安装 tftp

安装 tftp 所需的软件。首先需要安装 tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,

在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa ,安装 tftp-hpa 和 tftpd-hpa。然

后还需要安装 xinetd,在终端下输入 sudo apt-get install xinetd ,安装好 xinetd。

第 第 2  步:配置/etc/xinetd.conf

配置相关服务文件。进入根目录下的 etc 文件夹( cd /etc/ ) ,首先看目录中有没有一个

xinetd.conf 文件,如果没有则新建一个,有的话查看内容,看是否与下面的一致,若不一致则

修改,内容如下:

# Simple configuration file for xinetd

#

# Some defaults, and include /etc/xinetd.d/

defaults

{

# Please note that you need a log_type line to be able to use log_on_success

# and log_on_failure. The default is the following :

# log_type = SYSLOG daemon info

}

includedir /etc/xinetd.d

第 第 3  步:配置/etc/default/tftpd-hpa

配置 tftp 服务器

命令:

sudo vim /etc/default/tftpd-hpa

将内容修改成

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot"

#这是你 tftp 服务器的工作目录,自行修改,注意,在新建工作目录时,最好修改其权限为 777,

命令 sudo chmod 777 /tftpboot

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s"

第 第 4  步:配置/etc/xinetd.d/tftp

然后进入 xinetd.d 文件夹( cd xinetd.d ),查看是否有一个 tftp 文件,如果没有就新建

一个,如果有的话就查看内容是否与下面的一致,不一致则修改,内容如下:

service tftp

{

socket_type = dgram

wait = yes

disable = no

user = root

protocol = udp

server = /usr/sbin/in.tftpd

server_args = -s /tftpboot

#log_on_success += PID HOST DURATION

#log_on_failure += HOST

per_source = 11

cps =100 2

flags =IPv4

}

其中 server_args 一行是配置服务器的文件存放的位置,就是进行 tftp 传输的时候,都是从

该文件夹中搜索文件的

第 第 5  步:修改权限

修改所需文件夹的权限。需要修改的文件夹也就是上一步提到的那个服务器文件存放的文

件夹,以我的配置文件为例,创建一个文件夹( sudo mkdir /tftpboot ),然后把它可以

设置成访问权限最宽松的( sudo chmod 777 /tftpboot ),也可以设置成合适的权限。

第 第 6  步:重启服务

重新启动服务。sudo service tftpd-hpa restart,这也是我经常疏忽的一步,当配置好 tftp 的配

置文件后,需要重新启动一下 xinetd,在终端中输入 sudo /etc/init.d/xinetd reload,重新加载一

下进程,再输入 sudo /etc/init.d/xinetd restart,重启服务。记住,每次修改完配置文件后,都需

要重新启动一下服务。

执行次序:

sudo service tftpd-hpa restart

sudo /etc/init.d/xinetd reload

sudo /etc/init.d/xinetd restart

总结:

通过以上四步就可以建立好 tftp 服务器了,可以在本地先进行一下测试。还是以我的配置

文件为例,首先在/tftpboot 中新建一个文件 file,然后在其中随便输入内容;然后进入一个不是

/tftpboot 的目录下(原因是避免混淆,因为在获取文件是,默认是将想要获取的文件存放在当

前目录下的);再在终端中输入 sudo tftp localhost,进入 tftp 命令符下(可以在其中输入 help

查看命令和命令的作用),输入 get file,如果没有任何提示,就说明传输成功了,然后输入 q

退出 tftp 命令符,在当前目录下就可以看到一个 file 文件,内容是与开始新建的那个 file 的内容

是一致的。同样也可以在 tftp 命令符中输入 put xx,把 xx 文件上传到服务器文件夹中。如果一

切 ok,那就么一个可用的 tftp 服务器就顺利搭建成功了。

对于上面的测试是针对本地测试的,如果想要对其他电脑或者开发板进行 tftp 传输,则在

终端输入 sudo tftp xxx(即目标电脑或目标开发板的 ip 地址),而且还要关闭 ubuntu 自带的防

火墙(书上说的),我是直接把防火墙给卸载了(sudo apt-get remove iptables,或 sudo ufw disable

可以关掉防火墙),因为我觉得对于 Linux 来说,防火墙可能没什么需要把,至少目前为止我

还没有受到过***。。。当然,想要与其他局域网内的电脑或开发板互联进行传输,还要将这

些机器的 ip 改到同一个段内。好了,通过以上的步骤,就可以通过 tftp 协议,在电脑和开发板

之间进行文件传输了,目前的目的就是下载 Linux 内核和文件系统到开发板。如果有朋友发现

了我的不足,都可以给我提出来,我们也可以进行讨论。不过还要强调一点,我的这些配置都

是针对于 ubuntu 的,对于其他的系统可能会有所出入的。


Ubuntu中搭建nfs服务器

环境 ubuntu 10.4 vm 7.1

终端

ifconfig 得到 ubuntu 资料

INETADDR 192.168.1.116

BCAST 192.168.1.255

MASK 255.255.255.0

一 安装 NFS

$ sudo apt-get install nfs-kernel-server

$ sudo apt-get install nfs-common

二 配置/etc/exports

$ sudo vi /etc/exports

文本末添加

/root/rootfs *(rw,sync,no_root_squash,no_subtree_check)

然后在终端执行 $chmod 777 -R /root/rootfs

$ sudo showmount -e

显示 clnt-create : RPC : Program not registered

$ sudo exportfs -r 更新

$ sudo showmount localhost -e

显示

Export list for 192.168.1.116

/root/rootfs *

三 启用

$ sudo /etc/init.d/nfs-kernel-server restart 重启 nfs 服务

显示如下

* Stopping NFS kernel daemon [ OK ]

* Unexporting directories for NFS kernel daemon... [ OK ]

* Exporting directories for NFS kernel daemon... [ OK ]

* Starting NFS kernel daemon [ OK ]

挂载测试

$ mount -t nfs -o nolock localhost:/root/rootfs /mnt

执行后,进入/mnt 目录中,如果可以看到/root/rootfs 中的内容,则说明 nfs 搭建成功!



uboot中设置tftp服务器ip地址(ubuntu ip地址)


tftp 0x4000000 uImage    

从tftp服务器的tftp目录下下载uImage文件到内存的0x4000000处


uboot设置内核以nfs挂载rootfs的方式的参数


setenv bootargs 'gpmi=g console=ttyAM0,115200n8 root=/dev/nfs nfsroot=192.168.1.189:/root/rootfs/rootfs ip=192.168.1.10:192.168.1.189:192.168.1.0:255.255.255.0::eth0:off'