參考10.04的方式安裝失敗,按如下方式安裝pass了。
【已成功】Ubuntu 10.10下安裝TFTP的步驟 tftp -hpa版本
【背景】
由于想要在tq2440板子上用tftp下載kernel,所以要在自己的PC機的Ubuntu 10.10上安裝tftp服務。
所以就去網上找了些教程,但是很悲劇,按照那些教程去操作,結果還都是無法正常運行tftp服務,最后還是從一個外國人的帖子中,最后解決了此問題的?,F在記錄一下所了解到內容。
截至目前2011-04-04,我用的Ubuntu 10.10,Ubuntu下面關于TFTP的程序,有三種:
1.tftp和tftpd
這個是最早的,最常用的。,其中tftp是client客戶端,tftpd是server 服務器 端,d應該指的是daemon。
如果你要從別人的tftp服務器端上傳/下載東西,就要用到tftp;如果你為別人提供tftp服務,供別人上傳/下載東西,那就要安裝tftpd服務程序。
如果安裝tftp和tftpd,那么根據附錄2說的:“因為tftp是要inetd來控制的,而debian類的系統 ,默認是沒有安裝inetd的,安裝一下。” 所以,此處也要安裝inetd,但是我這里發現Ubuntu 10.10里面,沒有他們說的那個netkit-inetd:
- crifan@crifan-ubuntu10:~/develop$ sudo apt-get install netkit-inetd
- 正在讀取軟件 包列表... 完成
- 正在分析軟件包的依賴關系樹
- 正在讀取狀態信息... 完成
- 軟件包 netkit-inetd 是一個由下面的軟件包提供的虛擬軟件包:
- inetutils-inetd 2:1.6-3
- openbsd-inetd 0.2008 0125-4ubuntu2
- 請您明確地選擇一個來進行安裝。
- E: 軟件包 netkit-inetd 沒有可供安裝的候選者
復制代碼
而只有inetutils-inetd和openbsd-inetd,此處,我自己折騰tftp和tftpd的時候,裝的是inetutils- inetd,但是卻也一直沒弄好,所以此處忽略不說。而openbsd-inetd,是我裝的,可以正常使用的。具體方法下面會詳細介紹。
2.加強版的tftp: atftp和atftpd
atftp即advanced tftp,加強了一些功能。這里我沒用過,不多評價。
3. hpa版本的tftp:tftp-hpa和tftpd-hpa
我最后就是用的這個hpa版本的。
中間折騰過程翻來覆去弄了很多次,最后參考這里:
http://ubuntuforums.org/showthread.php ?t=1483618
確定這樣是可以安裝成功的:
【Ubuntu 10.10下安裝TFTP的步驟 tftp-hpa版本 】
1. 用新立得先去卸載tftp和tftpd(如果你安裝的話),tftp-hpa和tftpd-pha(如果你安裝的話)
系統 -> 系統管理 -> 新立得軟件包管理器,即synaptic,
搜索 tftp,會找到和tftp相關的軟件列表。
如果你已經裝了tftp和tftpd,那么先用新立得去徹底刪除他們。
如果也已經安裝了tftp-pha和tftpd-hpa,那么也同樣用新立得去徹底刪除他們。
(注意,我之前就是用的命令行去裝的tftp-hpa和tftpd-hpa,而安裝他們的同時會自動卸載掉原先裝過的tftp和tftpd,所以,我在新立得里面看到的是已經安裝的tftp-hpa和tftpd-hpa,所以要先右鍵點擊,選擇徹底刪除,然后選擇應用 ,就可以去徹底刪除了。)
2. 用新立得去安裝tftp-hpa和tftpd-pha
同上,進入新立得,右鍵選中tftp-hpa和tftpd-pha,然后安裝。
3. 安裝openbsd-inetd
(此處搞不清是不是必須要裝這個了,不過是反正是裝了,現在的tftp是可以工作的,如果你也不確定要不要安裝,那就也安裝吧。。。)
我是用的命令行去安裝的:
- crifan@crifan-ubuntu10:~/develop$ sudo apt-get install openbsd-inetd
復制代碼
4.建立TFTP根目錄及設置訪問屬性
去建立一個根目錄,然后設置對應的訪問屬性:
- mkdir /home/crifan/develop/tftpboot
- cd /home/crifan/develop/
- chmod 777 tftpboot/
復制代碼
其中:
(1)/home/crifan/develop/tftpboot是我的TFTP的根目錄,你根據自己情況修改為你自己的根目錄。
(2)chmod是去更改tftpboot這個TFTP根目錄的訪問屬性,因為其他tftp用戶 需要使用put命令上傳文件 的話,那就需要write權限的,所以這里干脆省事,直接chmod 777,添加所有權限(讀+寫+執行)。
5. 更改配置文件/etc/default/tftpd-hpa
sudo gedit /etc/default/tftpd-hpa
去修改配置文件,修改好后,內容如下:
- # /etc/default/tftpd-hpa
- RUN_DAEMON="yes"
- OPTIONS="-l -s -c /home/crifan/develop/tftpboot"
- TFTP_USERNAME="crifan"
- TFTP_DIRECTORY="/home/crifan/develop/tftpboot"
- TFTP_ADDRESS="0.0.0.0:69"
- TFTP_OPTIONS="--secure"
復制代碼
其中:
(1)
OPTIONS="-l -s -c /home/crifan/develop/tftpboot"
中的參數含義為:
-l Run the server in standalone (listen) mode, rather than run from inetd. In listen mode, the -t option is ignored, and the -a option can be used to specify a specific local address or port to listen to.
-a [address][:port]
Specify a specific address and port to listen to when called with the -l option. The default is to listen to the tftp port specified in /etc/services on all local addresses.
-c Allow new files to be created. By default, tftpd will only allow upload of files that already exist. Files are created with default permissions allowing anyone to read or write them, unless the -p or -U options are specified.
-s (決定tftp根目錄)Change root directory on startup. This means the remote host does not need to pass along the directory as part of the trans-fer, and may add security. When -s is specified, exactly one directory should be specified on the command line. The use of this option is recommended for security as well as compatibility with some boot ROMs which cannot be easily made to include a directory name in its request.
注意其中的-c, "-c為可創建新文件,若無此參數,put命令則可能出現錯誤提示,此時只能覆蓋原有文件不能創建新文件;"
OPTIONS參數后面跟的是你的TFTP的根目錄。
TFTP_USERNAME是用戶名,我這里的是"crifan",你根據自己情況修改。
TFTP_DIRECTORY后面也是同樣的根目錄 "/home/crifan/develop/tftpboot",你根據自己情況修改。
(2)ubuntu10.04下的tftp-hpa配置文件和之前不一樣,之前的是類似這種:
- #Defaults for tftpd-hpa
- RUN_DAEMON="yes"
- OPTIONS="-l -c -s /tftpboot"
復制代碼
Ubuntu 10.10中安裝之后的是這種:
- # /etc/default/tftpd-hpa
- TFTP_USERNAME="tftp"
- TFTP_DIRECTORY="/tftpboot"
- TFTP_ADDRESS="0.0.0.0:69"
- TFTP_OPTIONS="-l -c -s /tftpboot"
復制代碼
而此處上面所用的配置,既有新的也有舊的,具體為何是這樣,偶也不太清楚,只是參考上面那人的帖子而已。其他人有興趣可以自己測試,刪除舊的配置后是否同樣可以工作。
6.重啟tftp服務
- crifan@crifan-ubuntu10:~/develop$ sudo service tftpd-hpa restart
- tftpd-hpa start/running, process 3907
復制代碼其中:
(1)關于重啟 某個服務,之前的Linux(Ubuntu是10.10之前)都是這樣操作的:
sudo /etc/init.d/XXX reload
對于inetd來說,就是:
sudo /etc/init.d/inetd reload
現在新的LUbuntu 10.10中,是統一成調用service來操作了:
sudo service XXX restart
其中,啟動和停止對應的是start和stop。
(2)記得不要少了sudo,否則“stop: Rejected send message”的錯誤。
(3)【確認tftp服務是否已經開啟】
查看tftp相關進程:
- crifan@crifan-ubuntu10:~/develop$ ps aux |grep tftp
- root 3826 0.0 0.0 2352 120 ? Ss 14:27 0:00 /usr/sbin/in.tftpd --listen --user crifan --address 0.0.0.0:69 --secure /home/crifan/develop/tftpboot
- crifan 3828 0.0 0.0 5628 768 pts/0 S+ 14:27 0:00 grep --color=auto tftp
復制代碼
如果能看到像上面的 /usr/sbin/in.tftpd已經啟動,就說明tftp服務已經開啟了。
此處可以看到:
--listen就是對應的配置文件中的參數 -l
--user crifan就是對應配置文件中的參數 TFTP_USERNAME="crifan"
/home/crifan/develop/tftpboot就是對應的配置文件中的參數 TFTP_DIRECTORY=" /home/crifan/develop/tftpboot"
7.驗證tftp是否生效
- crifan@crifan-ubuntu10:~/develop$ tftp 192.168.1.101
- tftp>get u-boot.bin
- tftp>quit
復制代碼
其中:
(1)192.168.1.101是我的機子的ip,可以通過ifconfig查得。你此處要改為你自己的機子的IP。當然你也可以直接寫127.0.0.1,這個地址始終代表了你的本機IP。
(2)get是tftp的命令,即從tftp服務器中下載獲得文件。你可以輸入?查看其他命令。常見的命令有get下載文件,put上傳文件等等。u-boot.bin是我已經存在在tftp根目錄下面的文件。
(3)quit是退出tftp。
【總結】
看著步驟很復雜,實際歸納起來很簡單,那就是用新立得synaptic去安裝tftp-pha和tftpd-hpa,然后改一下配置,重啟一下服務,然后驗證一下tftp是否工作即可。
【后續】
經過驗證tftp已經生效,然后回到開發 板上就可以用tftp下載文件了:
- EmbedSky> tftp 0x30010000 u-boot.bin
- dm9000 i/o: 0x20000300, id: 0x90000a46
- MAC: 0a:1b:2c:3d:4e:5f
- TFTP from server 192.168.1.101; our IP address is 192.168.1.120
- Filename 'u-boot.bin'.
- Load address: 0x30010000
- Loading: T ###############
- done
- Bytes transferred = 207396 (32a24 hex)
復制代碼
【另外】
關于Linux下的圖形界面GUI版本的TFTP,網上找到了這個:
tftpgui
http://code.google .com/p/tftpgui/
暫未試用,有機會試試。
【引用】
1. TFTP will not start (command returns a "rejected send message")
http://ubuntuforums.org/showthread.php?t=1483618
2.ubuntu中配置tftp服務
http://hi.baidu.com/wangy0919/blog/item/3808eaa1388bd389471064c2.html
3.Tftpd-hpa
http://wiki.ubuntu.org.cn/Tftpd-hpa
4.ubuntu10.04下的tftp-hpa配置文件不一樣了,如何修改阿?
http://forum.ubuntu.org.cn/viewtopic.php?t=265239
下面是網上總結出來的常見錯誤及解決方法:
現象一:
tftp> get file
Transfer timed out.
原因:
tftpd服務沒有啟動
解決方法:啟動服務
sudo /etc/init.d/xinetd restart
sudo /etc/init.d/tftpd-hpa restart
現象二:
tftp> get file
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中設置的server_args為/etc/default/tftpd-hpa
下面是我的機器上/etc/default/tftpd-hpa配置
# /etc/default/tftpd-hpa
RUN_DAEMON="yes"
TFTP_ADDRESS="0.0.0.0:69"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
現象三:
tftp> put file
Error code 1: File not found
原因:
指定的文件不存在;或tftpd啟動參數中沒有指定-c選項,允許上傳文件~上傳的時候一定要確保文件先存在于上傳目錄下。
現象四:
tftp> get file
tftp: : Permission denied
原因:權限不足
請查看chmod 是不是配置好
posted on 2012-02-01 14:41
MEYE 閱讀(916)
評論(0) 編輯 收藏 所屬分類:
Android3D