工具鏈:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi
要移植的kernel版本:linux-4.4
Tiny4412開發板硬件版本爲:
底板: Tiny4412SDK 1312B
核心板:Tiny4412 - 1306
——————————————————————————————————————————————————————————linux
——————————————————————————————————————————————————————————linux
$ sudo apt-get install tftp-hpa tftpd-hpa xinetd服務器
tftp-hpa是客戶端,tftpd-hpa是服務程序。socket
# /etc/default/tftpd-hpaide TFTP_USERNAME="tftp"工具 TFTP_DIRECTORY="/tftpboot " //將/tftpboot改爲你本身創建的tftpboot文件夾路徑,我使用的是/home/arm/tftpboot這個路徑post TFTP_ADDRESS="0.0.0.0:69"測試 TFTP_OPTIONS="-l -c -s" //這裏是選項spa |
第2步:新建/修改/etc/xinetd.d/tftp配置文件.命令行
進入/etc/xinetd.d/文件夾,查看該目錄下是否有一個tftp文件,若是沒有就新建一個,若是有的話就查看內容是否與下面的一致,不一致則修改/etc/xinetd.d/tftp內容爲:rest
service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root //修改成你登陸系統的用戶名 server = /usr/sbin/in.tftpd server_args = -s /tftpboot -c // /tftpboot爲你存放TFTP的文件目錄,我使用的是/home/xxx/Learning/tftpboot這個路徑 per_source = 11 cps = 100 2 } |
注意:
server_args = -s /tftpboot –c
-c參數是容許上傳用的,參數/tftpboot則是你的tftp目錄,修改爲你的目錄便可。第一個是disabled選項,若是是yes,TFTP服務器是關閉的,修改成no啓動TFTP服務器;
第3步:建立用戶下載的文件存放目錄
$ sudo mkdir /home/xxx/Learning/tftpboot
$ sudo chmod 777 -R /home/xxx/Learning/tftpboot
每次修改完配置文件後,都須要從新啓動一下服務。
執行次序:
$ sudo service tftpd-hpa restart //重啓服務器
$ sudo /etc/init.d/xinetd reload
$ sudo /etc/init.d/xinetd restart //重啓xinetd,tftp的一個腳本
使用TFTP服務器的前提:
a、Linux系統與window系統能相互Ping通
b、關閉Linux、Window的防火牆。運行 sudo ufw disable 命令關閉Linux防火牆(防火牆在系統啓動時自動禁用)。
執行命令:netstat -a|grep tftp;當結果顯示 : udp 0 0 *:tftp *:* 則啓動tftp服務了。
在/tftpboot目錄文件夾路徑/home/xxx/Learning/tftpboot下新建一個文件:
$ touch test
$ echo 「tftp test」 > test
而後在另一個目錄下執行以下命令(192.168.1.102爲本機IP地址):
$ tftp 192.168.1.102
$ tftp> get test
$ tftp> q
若是在當前目錄下多出了一個test文件,而且test文件的內容跟/tftpboot目錄下test文件的內容一致,則tftp能夠正常使用。
——————————————————————————————————————————————————————————————————————————
$ sudo apt-get install nfs-kernel-server //安裝NFS服務
$ sudo mkdir /home/arm/tftpboot //建立一個共享文件夾
配置NFS主要涉及配置文件/etc/exports,它用於NFS服務器端,其中列出了NFS服務器中要導出的目錄、能夠訪問這些目錄的NFS客戶機及其訪問權限。
在exports文件中添加以下內容:
/home/arm/tftpboot *(rw,sync,no_root_squash,no_subtree_check)
/home/arm/tftpboot:剛纔建立的共享文件夾
*:容許全部的網段訪問,也可使用具體的IP
rw:掛接此目錄的客戶端對該共享目錄具備讀寫權限
sync:資料同步寫入內存和硬盤
no_subtree_check:不檢查父目錄的權限。
no_root_squash:root用戶具備對根目錄的徹底管理訪問權限。
在命令行終端輸入以下命令:
$ sudo exportfs –rv //使/etc/exports 文件生效
$ sudo /etc/init.d/rpcbind restart //重啓rpcbind 服務
$ sudo /etc/init.d/nfs-kernel-server restart //重啓nfs服務
在Ubuntu上執行:
$ showmount -e
顯示出共享的目錄說明搭建成功。
——————————————————————————————————————————————————————————————————
1、配置tiny4412開發板內核支持NFS
輸入 make ARCH=arm menuconfig 命令進入 linux 配置界面,
進入[*] Networking support --->
Networking options --->
選中[*] IP: kernel level autoconfiguration
再進入File systems --->
[*] Network File Systems --->
選中以下選項:
<*> NFS client support
<*> NFS client support for NFS version 2
<*> NFS client support for NFS version 3
[*] NFS client support for the NFSv3 ACL protocol extension
<*> NFS client support for NFS version 4
[*] Provide swap over NFS support
[*] NFS client support for NFSv4.1
[*] NFS client support for NFSv4.2
[*] NFSv4.1 client support for migration
[*] Root file system on NFS
配置完成後,保存退出並編譯內核。
—————————————————————————————————————————————————————————————————————
掛載命令爲: #mount -o nolock 192.168.1.115:/home/arm/tftpboot /mnt/
解釋一下:
mount :掛載命令
nfs :使用的協議
nolock :不阻塞
vers : 使用的NFS版本號
IP : NFS服務器的IP(NFS服務器運行在哪一個系統上,就是哪一個系統的IP)
/work/nfs: 要掛載的目錄(Ubuntu的目錄)
/mnt : 要掛載到的目錄(開發板上的目錄,注意掛載成功後,/mnt下原有數據將會被隱藏,沒法找到)
韋東山給出掛載命令以下:
————————————————————————————————————————————————————————————
1,/et c/init.d/nfs-kernel-server restart 時出現如下錯誤:
exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/source/rootfs/".
Assuming default behaviour ('no_subtree_check').
新版本的nfs-kernel-server 中,在填寫/etc/exports 文件時須要填寫一個重要參數 no_subtree_check ,加入參數後順利經過
中間不能加空格,不能改變順序。