首頁 > 桌上型電腦

LINUX下搭建TFTP開發環境

2019-12-18 04:44:30

嵌入式Linux的ftp最常用來完成開發板和開發環境Linux系統之間的的檔案傳輸功能,避免了頻繁的U盤拷貝的過程。Linux下的tftp開發環境建立包括兩個方面:一是Linux伺服器端的tftp-server支援,二是嵌入式目標系統的tftp-client支援。本文將介紹基於Ubuntu10.04發行版的Linux伺服器端tftp-server的設定和在主機和目標機之間的tftp檔案傳輸方法。

我個人每次都是使用的是root賬戶登陸,避免每條命令之前加sudo,普通使用者登陸登陸的話,需在命令加上sudo。

1

第一步: 安裝tftp所需的軟體(黑色加粗字型為linux命令,下同)? ??搭建TFTP服務所需要安裝的軟體有tftp-hpa,tftpd-hpa以及xinetd,其中:? ? tftp-hpa ? : 是用戶端軟體; ? ? ? ? ? ? ?root# apt-get install tftp-hpa?? ? tftpd-hpa : 是服務程式; ? ? ? ? ? ? ? ? root# apt-get install tftpd-hpa?? ? xinetd ? ? ?: 是新一代進程守護程式。 ?root# apt-get install xinetd

2

第二步: 設定xinetd.conf組態檔

    進入/etc目錄,首先看目錄中有沒有一個xinetd.conf檔案,如果沒有則新建一個,有的話檢視其內容:

    root# cat xinetd.conf

    看是否與下面的一致,內容如下所示:

    若不一致則執行如下命令,修改為相同即可。

    root# gedit xinetd.conf


3

第三步: 設定tftpd-hpa組態檔

    修改tftpd-hpa組態檔的內容: 

    root# gedit /etc/default/tftpd-hpa

    將內容修改成:

    # /etc/default/tftpd-hpa 

    TFTP_USERNAME="tftp" 

    TFTP_DIRECTORY="/tftpboot" 

    TFTP_ADDRESS="0.0.0.0:69" 

    TFTP_OPTIONS="-l -c -s"

    修改成功後,如下圖所示,儲存退出。

    

     註解:TFTP_DIRECTORY="/tftpboot"表示tftp伺服器的工作目錄,使用者可根據自己的實際情況進行更改。

    

      指定了tftp服務的工作目錄後,我們需要在相應的路徑下建立該tftp工作目錄,命令如下:

     root# mkdir –p /tftpboot

    修改工作目錄的許可權為777,777是最鬆的許可權,這樣不僅可以允許別的主機或者目標機下載,同時允許其上傳檔案。命令為:

     root# chmod 777 /tftpboot


4

第四步:設定tftp組態檔

      進入/etc下面的xinetd.d資料夾,檢視是否有一個tftp檔案,如果沒有的話,就新建一個並輸入以下內容,如果有的話就檢視內容是否與下面的一致,不一致則修改,內容如下:

    root# gedit tftp

    service tftp

    {

       disable = no

       socket_type = dgram

       protocol = udp

       wait = yes

       user = root

       server = /usr/sbin/in.tftpd

       server_args = -s /tftpboot -c

       per_source = 11

       cps = 100 2

       flags =IPv4

    }

    修改之後,如圖所示:

    其中server_args一行是設定伺服器的檔案存放的位置,就是進行tftp傳輸的時候,都是從該資料夾中搜尋檔案的。然後儲存檔案,並退出編輯。


5

第五步:重新啟動TFTP

   重新啟動tftpd-hpa,提示如下圖:

   root# service tftpd-hpa restart


6

第六步:重新載入xinetd

   重新載入xinetd進程,提示如下圖:

   root# /etc/init.d/xinetd reload


7

第七步:重新啟動xinetd

    重新啟動xinetd服務,提示如下圖:

    root# /etc/init.d/xinetd restart

每次修改完組態檔後,都需要重新啟動一下服務。

至此,嵌入式Linux系統下搭建TFTP開發環境大功告成,下面介紹如何測試TFTP


1

第一步:新建測試檔案 

      首先在tftp的工作目錄"/tftpboot"中新建一個檔案test,在其中輸入任意內容,例如內容如下圖:


2

第二步:進入測試目錄 

      然後進入任意一個不同於/tftpboot的目錄(例如/opt目錄下),然後在終端中輸入如下命令,進入tftp命令符下,如下圖:

       root# tftp localhost


3

第三步:獲取測試檔案

      輸入如下命令,再按回車,獲取存放在tftp工作目錄/tftpboot中的"test"檔案。如果沒有任何提示,就說明傳輸成功了,如下圖所示:

      root# get test


4

第四步:退出TFTP測試

       輸入 q 退出tftp命令列,如下圖所示:

      

      


5

? ? ? 修改test檔案後,可以在tftp命令中輸入 如下命令,把修改過的test檔案上傳到伺服器資料夾中。? ? ? ?root# put test? ? ? 其效果圖,在此不再給出,讀者可以自行測試。

1

鑑於TFTP服務的安裝過程十分繁複,且容易出錯,下面給出指令碼程式碼,自動安裝該服務。新建一個空檔案,將下面程式碼複製,儲存之後,修改檔案許可權,使之具有執行許可權後,就可以自動搭建嵌入式TFTP開發環境了。以下為指令碼程式碼:#!/bin/bash##################################################### 搭建TFTP服務所需要安裝的軟體有tftp-hpa,tftpd-hpa以及xinetd,##?其中: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## ? tftp-hpa ? ?: 是用戶端軟體; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## ? tftpd-hpa ?: 是服務程式; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?## ? xinetd ? ? ? : 是新一代進程守護程式。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #####################################################function creat_xinetd_conf{echo ?"# 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" > /tmp/xinetd.conf?}function config_xinetd_conf{creat_xinetd_conffilename=/etc/xinetd.confexample=/tmp/xinetd.conftest -f $filename ? ? #返回值為0,代表檔案存在 ?返回值為1,代表檔案不存在if [ "$?" -eq 0 ];thenecho "xinetd.conf檔案存在"diff -E $example $filenamecase $? in1) ? ? #檔案內容有誤rm -rf $filenamemv -f $example $filenameecho "xinetd.conf檔案內容修改成功";;0) ? ? #檔案內容正確?rm -rf $exampleecho "xinetd.conf檔案內容正確";;??*)rm -rf $example ? ??? ?echo "未知錯誤,程式終止";;esacelseecho "xinetd.conf檔案不存在,正在建立該檔案"mv -f $example $filenameecho "xinetd.conf檔案建立成功"fi}#=============================================#function modify_tftpd_hpa{echo "# /etc/default/tftpd-hpaTFTP_USERNAME="tftp"TFTP_DIRECTORY="/tftpboot"TFTP_ADDRESS="0.0.0.0:69"TFTP_OPTIONS="-l -c -s"" > /tmp/tftpd-hparm -rf /etc/default/tftpd-hpamv -f /tmp/tftpd-hpa /etc/default/tftpd-hpaecho "tftpd_hpa 檔案內容修改成功"mkdir -p /tftpbootchmod 777 /tftpboot}#=============================================#function modify_tftp{echo "service tftp{disable = nosocket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /tftpboot -cper_source = 11cps = 100 2flags =IPv4}" > /tmp/tftprm -rf /etc/xinetd.d/tftpmv -f /tmp/tftp /etc/xinetd.d/tftpecho "tftp 檔案內容修改成功"}#=============================================#function test_tftp{echo "This is a test file" > /tftpboot/TESTcd /tmpecho "請在終端命令列中依次鍵入"get TEST"以及"quit""tftp localhostcat /tmp/TEST ? # 返回值為0,表示成功檢視指定的檔案 ?返回值為1,表示不能正常檢視指定的檔案if [ $? -eq 0 ]; thenecho "tftp ?測試成功,可以正常使用"rm -rf /tftpboot/TEST /tmp/TESTelse?echo "tftp ?測試失敗,請檢查tftp設定"rm -rf /tftpboot/TEST /tmp/TESTfi}#=============================================#function step_1 ? ? ?#安裝TFTP相關服務{apt-get update ? ? ? ? ? ? ? ?#安裝軟體之前,先升級一下資料庫,獲取軟體包的最新相關資訊apt-get install tftp-hpa ? ? ?#安裝TFTP服務的用戶端軟甲apt-get install tftpd-hpa ? ? #安裝TFTP服務的伺服器端軟體apt-get install xinetd ? ? ? ?#安裝新一代進程守護程式}function step_2 ? ? ?#設定TFTP相關服務{config_xinetd_conf ? ? ? ? ? ?#設定/etc/xinetd.conf檔案modify_tftpd_hpa ? ? ?? ? ?#修改/etc/default/tftp-hpa檔案modify_tftp ? ? ??? ? ?#安裝TFTP服務的伺服器端軟體}function step_3 ? ? ?#重新啟動TFTP相關服務{service tftpd-hpa restart ? ? #重新啟動tftpd-hpa/etc/init.d/xinetd reload ? ? #重新載入xinetd服務程式/etc/init.d/xinetd restart ? ?#重新啟動xinetd服務程式}function step_4 ? ? ?#測試TFTP相關服務{test_tftp ? ? ?? ? ?#測試tftp服務}echo "選項1 安裝TFTP相關服務"echo "選項2 設定TFTP相關服務"echo "選項3 重新啟動TFTP相關服務"echo "選項4 測試TFTP相關服務"echo "鍵入quit,退出TFTP安裝"echo "請鍵入數值,執行您所需要的操作: "read -r Step?while [ $Step != quit ]do?while [ $Step -lt 1 -o $Step -gt 4 ]doecho "對不起,您輸入的選項有誤,請輸入數位1—4之間的數值!"read -r Step ?donecase "$Step" in1)?read -p "安裝過程中出現的選項,請直接確定,不必更改,按任意鍵繼續安裝"step_1;;2)step_2;;3)step_3;;4)step_4;;*)?echo "出現致命錯誤,請檢查指令碼程式!";;esacecho "操作已完成!"echo "============================="echo " "echo " "echo " "echo " "echo "選項1 安裝TFTP相關服務"echo "選項2 設定TFTP相關服務"echo "選項3 重新啟動TFTP相關服務"echo "選項4 測試TFTP相關服務"echo "鍵入quit,退出TFTP安裝"echo "請鍵入數值,執行您所需要的操作: "read -r Stepecho " "echo " "doneexit
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?## ? xinetd ? ? ? : 是新一代進程守護程式。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #####################################################function creat_xinetd_conf{echo ?"# 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" > /tmp/xinetd.conf?}function config_xinetd_conf{creat_xinetd_conffilename=/etc/xinetd.confexample=/tmp/xinetd.conftest -f $filename ? ? #返回值為0,代表檔案存在 ?返回值為1,代表檔案不存在if [ "$?" -eq 0 ];thenecho "xinetd.conf檔案存在"diff -E $example $filenamecase $? in1) ? ? #檔案內容有誤rm -rf $filenamemv -f $example $filenameecho "xinetd.conf檔案內容修改成功";;0) ? ? #檔案內容正確?rm -rf $exampleecho "xinetd.conf檔案內容正確";;??*)rm -rf $example ? ??? ?echo "未知錯誤,程式終止";;esacelseecho "xinetd.conf檔案不存在,正在建立該檔案"mv -f $example $filenameecho "xinetd.conf檔案建立成功"fi}#=============================================#function modify_tftpd_hpa{echo "# /etc/default/tftpd-hpaTFTP_USERNAME="tftp"TFTP_DIRECTORY="/tftpboot"TFTP_ADDRESS="0.0.0.0:69"TFTP_OPTIONS="-l -c -s"" > /tmp/tftpd-hparm -rf /etc/default/tftpd-hpamv -f /tmp/tftpd-hpa /etc/default/tftpd-hpaecho "tftpd_hpa 檔案內容修改成功"mkdir -p /tftpbootchmod 777 /tftpboot}#=============================================#function modify_tftp{echo "service tftp{disable = nosocket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -s /tftpboot -cper_source = 11cps = 100 2flags =IPv4}" > /tmp/tftprm -rf /etc/xinetd.d/tftpmv -f /tmp/tftp /etc/xinetd.d/tftpecho "tftp 檔案內容修改成功"}#=============================================#function test_tftp{echo "This is a test file" > /tftpboot/TESTcd /tmpecho "請在終端命令列中依次鍵入"get TEST"以及"quit""tftp localhostcat /tmp/TEST ? # 返回值為0,表示成功檢視指定的檔案 ?返回值為1,表示不能正常檢視指定的檔案if [ $? -eq 0 ]; thenecho "tftp ?測試成功,可以正常使用"rm -rf /tftpboot/TEST /tmp/TESTelse?echo "tftp ?測試失敗,請檢查tftp設定"rm -rf /tftpboot/TEST /tmp/TESTfi}#=============================================#function step_1 ? ? ?#安裝TFTP相關服務{apt-get update ? ? ? ? ? ? ? ?#安裝軟體之前,先升級一下資料庫,獲取軟體包的最新相關資訊apt-get install tftp-hpa ? ? ?#安裝TFTP服務的用戶端軟甲apt-get install tftpd-hpa ? ? #安裝TFTP服務的伺服器端軟體apt-get install xinetd ? ? ? ?#安裝新一代進程守護程式}function step_2 ? ? ?#設定TFTP相關服務{config_xinetd_conf ? ? ? ? ? ?#設定/etc/xinetd.conf檔案modify_tftpd_hpa ? ? ?? ? ?#修改/etc/default/tftp-hpa檔案modify_tftp ? ? ??? ? ?#安裝TFTP服務的伺服器端軟體}function step_3 ? ? ?#重新啟動TFTP相關服務{service tftpd-hpa restart ? ? #重新啟動tftpd-hpa/etc/init.d/xinetd reload ? ? #重新載入xinetd服務程式/etc/init.d/xinetd restart ? ?#重新啟動xinetd服務程式}function step_4 ? ? ?#測試TFTP相關服務{test_tftp ? ? ?? ? ?#測試tftp服務}echo "選項1 安裝TFTP相關服務"echo "選項2 設定TFTP相關服務"echo "選項3 重新啟動TFTP相關服務"echo "選項4 測試TFTP相關服務"echo "鍵入quit,退出TFTP安裝"echo "請鍵入數值,執行您所需要的操作: "read -r Step?while [ $Step != quit ]do?while [ $Step -lt 1 -o $Step -gt 4 ]doecho "對不起,您輸入的選項有誤,請輸入數位1—4之間的數值!"read -r Step ?donecase "$Step" in1)?read -p "安裝過程中出現的選項,請直接確定,不必更改,按任意鍵繼續安裝"step_1;;2)step_2;;3)step_3;;4)step_4;;*)?echo "出現致命錯誤,請檢查指令碼程式!";;esacecho "操作已完成!"echo "============================="echo " "echo " "echo " "echo " "echo "選項1 安裝TFTP相關服務"echo "選項2 設定TFTP相關服務"echo "選項3 重新啟動TFTP相關服務"echo "選項4 測試TFTP相關服務"echo "鍵入quit,退出TFTP安裝"echo "請鍵入數值,執行您所需要的操作: "read -r Stepecho " "echo " "doneexit

IT145.com E-mail:sddin#qq.com