標籤:tftp nfs linux arm
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‘
本文出自 “whylinux” 部落格,謝絕轉載!
m283-tftp傳輸,nfs掛載rootfs