1. 程式人生 > 實用技巧 >電腦與Linux開發板搭建NFS檔案系統——網線直連

電腦與Linux開發板搭建NFS檔案系統——網線直連

前言

本人所使用的環境為Win10筆記本+VMware15+Ubuntu18.04+I.MX6ULL開發板

一、網路配置

1、將開發板與電腦之間使用網線連線,開發板上電後在電腦的網路和共享中心可以看到新增網路連線。

2、點選檢視詳細資訊,記住網絡卡描述、IP地址、閘道器、子網掩碼資訊,後面步驟會用到

3、開啟VMware-->編輯-->虛擬網路編輯器-->更改設定

4、先點選還原預設設定,然後將VMnet0配置為橋接模式並選擇橋接到步驟2中檢視的網絡卡

5、設定Ubuntu網路資訊與步驟2中檢視的網路為同一網段:開啟Ubuntu-->設定-->網路

-->IPV4-->手動,填入網路資訊,點選應用後將網路關閉再開啟即可生效

6、設定開發板網路資訊與步驟2中檢視的網路為同一網段。開發板上電進入Uboot模式,依次執行以下命令設定網路相關資訊

//設定伺服器的IP地址(Ubuntu) 
setenv serverip 192.168.2.145 
//設定閘道器 
setenv gatewayip 192.168.2.1 
//設定開發板的IP地址 
setenv ipaddr 192.168.2.250 
//設定子網掩碼 
setenv netmask 255.255.255.0 
//設定網口MAC地址(如果在同一網段有多個開發板要保證每個開發板的ethaddr不同)
setenv ethaddr 08:07:03:A0:03:22 
//儲存環境變數 
saveenv 
//重啟
reset 

//重啟後進入Uboot使用以下命令查詢網路資訊
printenv serverip ipaddr gatewayip netmask ethaddr

7、互ping測試,測試開發板、Windows、Ubuntu三者之間網路能否ping通

  • Windows與開發板、Ubuntu

  • 開發板與Windows、Ubuntu

  • Ubuntu與Windows、開發板

二、NFS服務搭建

1、Ubuntu安裝NFS服務

//1-安裝nfs服務
sudo apt-get install nfs-kernel-server
//2-建立NFS伺服器共享目錄
mkdir nfs
//3-更改資料夾許可權
chmod 777 nfs
//4-更改配置檔案
sudo vi /etc/exports
檔案末尾新增: /home/zz/work/nfs *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
//5-重啟NFS服務
sudo /etc/init.d/nfs-kernel-server restart
//6-檢視NFS服務掛載目錄
showmount -e

2、測試nfs服務

1-將zImage放在nfs目錄下
2-啟動開發板進入uboot
3-uboot中使用`? nfs`檢視nfs使用方法`nfs [loadAddress] [[hostIPaddr:]bootfilename]`
4-測試nfs(將nfs伺服器目錄中在Image下載到開發板80800000地址):
nfs 80800000 192.168.2.145:/home/zz/work/nfs/zImage

3、開發板與虛擬機器nfs服務版本不同導致下載、掛載失敗解決方法(提示"Loading: *** ERROR: File lookup fail"、"VFS: Unable to mount root fs via NFS, trying floppy."等)

問題原因:Ubuntu 18.04的nfs預設為協議V3和協議V4,開發板uboot預設啟動的是協議V2的形式,從而導致uboot不能在nfs伺服器中找到檔案。

解決方法:讓Ubuntu中的nfs相容協議V2,修改/etc/default/nfs-kernel-server 檔案。

1)開啟檔案:sudo vim /etc/default/nfs-kernel-server (注意一定要sudo或者root許可權)

2)修改如圖:

3)儲存退出:ESC --> :wq --> Enter

4)重啟NFS伺服器:sudo service nfs-kernel-server restart

至此問題解決,可以重新執行nfs測試驗證nfs是否正常。

4、開發板掛載nfs檔案系統

1)Ubuntu的nfs共享服務目錄下建立rootfs資料夾

2)將檔案系統rootfs.tar.bz2拷貝到rootfs資料夾中並解壓tar -xjvf rootfs.tar.bz2

3)設定開發板uboot自啟動引數bootcmdbootagrs

/* 
1-設定bootcmd
	zImage為核心映象,通過tftp下載到首地址為0x80800000的記憶體空間
	topeet_emmc_4_3.dtb為裝置樹
	bootz根據核心映象地址和裝置樹地址載入啟動
*/
setenv bootcmd 'tftp 80800000 zImage; tftp 83800000 topeet_emmc_4_3.dtb; bootz 80800000 - 83800000’


/* 
2-設定bootargs
	nfsroot後的引數為Ubuntu的nfs資料夾路徑;格式為:nfsroot=NFS伺服器IP:檔案系統的絕對路徑.
	ip後的引數為開發板網路資訊:ip=開發板IP:伺服器IP:閘道器,子網掩碼::eth0:off. 
*/
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.2.145:/home/zz/work/nfs/rootfs ip=192.168.2.250:192.168.2.145:192.168.2.1:255.255.255.0::eth0:off’


/* 3-儲存環境變數 */
saveenv

4)輸入boot命令啟動開發板

至此,成功掛載nfs檔案系統啟動開發板。

三、TFTP服務搭建(補充)

  1. 在Ubuntu的home/zz/work/目錄下建立tftp服務資料夾:mkdir tftp

  2. 修改資料夾許可權:chmod 777 tftp

  3. 安裝服務:sudo apt-get install tftp-hpa tftpd-hpa

  4. 修改配置檔案:sudo vim /etc/default/tftpd-hpa

  1. 啟動服務:sudo service tftpd-hpa restart

  2. 將 Linux 核心映象 zImage、裝置數檔案topeet_emmc_4_3.dtb拷貝到 tftp服務資料夾下

  3. 測試:啟動開發板在uboot模式下輸入tftp 0x80000000 zImage

至此,tftp服務搭建完成。