Ubuntu安裝配置TFTP服務

來源:互聯網
上載者:User

        在針對嵌入式開發中,常常我們需要事先配置好一些網路服務,才能使開發板方便的下載或掛載主機的核心和檔案系統。系統在啟動BootLoader後,通過tftp來下載Linux核心鏡像到記憶體運行,然後通過NFS來啟動Linux主機上的目標檔案系統,並通過DHCP伺服器來為開發板分配IP地址。這裡僅僅是搭建伺服器環境。在配置TFTP服務一般遇到的問題都是比較多的。經過幾次失敗嘗試後,總結了以下經驗以共用:

 

一、檢查是否已經安裝好TFTP

caoyi@ubuntu:/home/study$ sudo netstat -nulg | grep 69
udp        0      0 0.0.0.0:69              0.0.0.0:*

或者

caoyi@ubuntu:/home/study$ sudo netstat -au | grep tftp
udp        0      0 *:tftp                  *:*   

則表示已經安裝成功,如果沒有出現以上資訊或當行資訊都表示有錯誤!

一、檢查是否安裝相關服務(一般沒有)

首先得確定自己的主機或虛擬機器已經連上網了,並且得確定下載過程是可靠的。

(1)、安裝tftp(用戶端)、tftpd(服務端)

caoyi@ubuntu:/home/study$ sudo apt-get install tftpd tftp

 

(2)、安裝tftpd-hpa、tftp-hpa(功能增強TFTP伺服器)

caoyi@ubuntu:/home/study$ sudo apt-get install tftpd-hpa tftp-hpa

 

(3)、安裝openbsd-inetd xinetd(網路管理服務。Ubuntu中,tftp不能獨立運行,需要網路管理伺服器 支援。)

caoyi@ubuntu:/home/study$ sudo apt-get install xinetd openbsd-inetd

二、配置TFTP伺服器

(1)、配置tftpd-hpa(服務端)

caoyi@ubuntu:/home/study$ sudo vim /etc/default/tftpd-hpa

  1 # /etc/default/tftpd-hpa

2 RUN_DAEMON="yes"

3 TFTP_USERNAME="tftp"

4 TFTP_DIRECTORY="/tftpboot"                    這裡為TFTP伺服器目錄

5 TFTP_ADDRESS="0.0.0.0:69"

6 TFTP_OPTIONS="-l -s /tftpboot"

(2)、配置inetd
  caoyi@ubuntu:/home/study$ sudo vim /etc/inetd.conf                  

tftp  dgram   udp  wait nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /tftpboot  (在最末添加之)   

(3)、建立設定檔
在/etc/xinetd.d/下建立一個設定檔tftp

sudo vim 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
}
儲存退出

 

(4)、重啟TFTP相關服務

 

  caoyi@ubuntu:/home/study$  sudo /etc/init.d/openbsd-inetd reload

     * Reloading internet superserver inetd                                  [ OK ]

caoyi@ubuntu:/home/study$  sudo /etc/init.d/openbsd-inetd restart
   * Restarting internet superserver inetd                                    [ OK ]

caoyi@ubuntu:/home/study$ sudo service tftpd-hpa restart   (如果沒有反應,應重新安裝sudo apt-get install tftpd-hpa)

tftpd-hpa start/running

caoyi@ubuntu:/home/study$ sudo /etc/init.d/xinetd restart
     * Stopping internet superserver xinetd                                  [ OK ]
     * Starting internet superserver xinetd                                    [ OK ]

三、測試

(1)、在本地根目錄下建立我們的TFTP伺服器目錄

caoyi@ubuntu:/home/study$ cd /

caoyi@ubuntu:/home/study$ sudo mkdir tftpboot

然後,放置一些測試檔案,我這裡放的是uImage 和 空檔案a.c

  caoyi@ubuntu:/home/study$ sdo chmod 777 -R tftpboot

  caoyi@ubuntu:/home/study$ ls /tftpboot  

       a.c  uImage

(2)、進入/home目錄下載/tftpboot/目錄下的uImage檔案(前面設定好了/tftpboot/目錄為TFTP預設服務類別目錄):

caoyi@ubuntu:/home/study$ sudo tftp 127.0.0.1
tftp> get uImage
Received 1508808 bytes in 0.2 seconds
tftp> quit
caoyi@ubuntu:/home/study$ ls
uImage
然後進行對/tftpboot/目錄上傳檔案

caoyi@ubuntu:/home/study$ sudo tftp 127.0.0.1
tftp> put b.c
Error code 2: Access violation

(注意:當對TFTP檔案進行上傳是,應該在/tftpboot/目錄下要有一個待上傳同名檔案)

(3)、在前面我的/tftpboot/目錄中有一個a.c的空檔案,那麼我就可以對它上傳一個名字為a.c的檔案
caoyi@ubuntu:/home/study$ sudo tftp 127.0.0.1
tftp> put a.c
Sent 15 bytes in 0.0 seconds
tftp> quit
caoyi@ubuntu:/home/study$

(4)、在開發板上測試,首先設定好參數自動下載:然後boot

FS2410# boot
TFTP from server 192.168.7.112; our IP address is 192.168.7.239
Filename 'uImage'.
Load address: 0x30800000
Loading: #################################################################
         ######################################
done

 

至此關於Linux下TFTP服務配置完成!其間也會出現一些因版本或其它的錯誤,應該重複的確定你已經安裝好所有的服務,然後不斷重啟,測試!

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.