ubuntu14.04 搭建 tftp 服務器

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 步:配置 tftp 服務器
命令:sudo vim /etc/default/tftpd-hpa
將內容修改成

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"          //讀者可自行創建你的工作目錄,作者當前創建的工作目錄是/tftpboot

/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 文件,如果沒有就新建一個(命令:touch 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服務器是否搭建成功
通過以上步驟就可以建立好 tftp 服務器了,可以在本地先進行一下測試。還是以我的配置文件爲例,首先在/tftpboot 中新建一個文件 1.txt,然後在其中隨便輸入內容;然後進入一個不是**/tftpboot** 的目錄下(原因是避免混淆,因爲在獲取文件是,默認是將想要獲取的文件存放在當前目錄下的,在此作者是在/home/gec下進行測試);再在終端中輸入 sudo tftp localhost進入 tftp 命令符下(可以在其中輸入 help查看命令和命令的作用),入 get /tftpboot/1.txt,如果沒有任何提示,就說明傳輸成功了,然後輸入 q之後回車退出 tftp 命令符,在當前目錄下就可以看到一個 1.txt文件,內容是與開始新建的那個 1.txt 的內容是一致的。同樣也可以在 tftp 命令符中輸入 put xx把 xx 文件上傳到服務器文件夾中。如果一切 ok,那就麼一個可用的 tftp 服務器就順利搭建成功了。

在這裏插入圖片描述

對於上面的測試是針對本地測試的,如果想要對其他電腦或者開發板進行 tftp 傳輸,則在終端輸入 sudo tftp ip(即目標電腦或目標開板的 ip 地址),而且還要關閉 ubuntu 自帶的防火牆,我是直接把防火牆給卸載了(sudo apt-get remove iptables,或 sudo ufw disable可以關掉防火牆)。

當然,想要與其他局域網內的電腦或開發板互聯進行傳輸,還要將這些機器的 ip 改到同一個段內。好了,通過以上的步驟,就可以通過 tftp 協議,在電腦和開發板之間進行文件傳輸了前提是開發板要能和主機UbuntuPing通,然後在uboot中就可以利用命令tftp 0x30000000 zImage,下載放在/tftpboot即tftp的工作目錄下的鏡像進行調試,免去了利用fast boot下載的繁瑣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章