電腦與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
自啟動引數bootcmd
和bootagrs
/*
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服務搭建(補充)
-
在Ubuntu的
home/zz/work/
目錄下建立tftp服務資料夾:mkdir tftp
-
修改資料夾許可權:
chmod 777 tftp
-
安裝服務:
sudo apt-get install tftp-hpa tftpd-hpa
-
修改配置檔案:
sudo vim /etc/default/tftpd-hpa
-
啟動服務:
sudo service tftpd-hpa restart
-
將 Linux 核心映象
zImage
、裝置數檔案topeet_emmc_4_3.dtb
拷貝到 tftp服務資料夾下 -
測試:啟動開發板在uboot模式下輸入
tftp 0x80000000 zImage
至此,tftp服務搭建完成。