以前困擾了一個星期的nuc970評估板nfs啓動問題,今天終於解決了,這裏寫個帖子記錄下,避免以後忘記。html
咱們的配置仍是在官方給出的nuc970基本配置之上作一些改動。首先進入linux的內核目錄,而後進行內核配置,和內核編譯工做,具體命令以下。linux
make nuc972_defconfig make menuconfig
而後就會進入內核配置如圖 服務器
對於系統從nfs啓動我須要內核以下配置,這裏有一個前後順序,先配置IP:kernel level autoconfiguration,纔會出現root file system on NFS的選項 這裏最好勾選上下滿的NFSv2,NFSv3,NFSv4的客戶端支持選項。
cookie
到這裏支持NFS啓動的內核最小配置就已經完成了,接下來編譯出內核,執行命令tcp
make -j4 #這裏的j4是指用4個核去編譯
而後使用mkimage將linux內核打包網站
mkimage -A arm -O linux -T kernel -S crc32 -a 0x7fc0 -e 0x8000 -d image/970image 970nfsimage.bin
而後將內核燒錄到nand flash 的0x200000位置處。debug
這裏個人服務器環境是Ubuntu18.04,若是大家使用的是不一樣發行版的linux,可能配置不一樣。code
sudo apt-get install nfs-kernel-server
而後編輯/etc/exports文件配置本身共享目錄以及權限,配置內容以下:server
/home/cookie/nuc970bsp/rootfs *(rw,sync,no_subtree_check)
這裏/home/cookie/nuc970bsp/rootfs是我服務器的目錄,這裏你須要配置本身的服務器目錄。而後開啓服務htm
sudo service nfs-kernel-server start
以前的錯誤一直都在這裏,內核配置正確,可是啓動參數錯誤,致使開發板一直啓動不起來。具體啓動參數以下:
baudrate=115200 bootargs=noinitrd console=ttyS0,115200n8 root=/dev/nfs rw rdinit=/linuxrc nfsroot=10.0.20.78:/home/cookie/nuc970bsp/rootfs,nfsvers=3,nolock,tcp ip=10.0.20.195:10.0.20.78:10.0.20.254:255.255.255.0::eth0:off bootcmd=nboot 0x7fc0 0 0x200000;bootm 0x7fc0 bootdelay=3 ethact=emac ethaddr=00:00:00:11:66:88 ipaddr=10.0.20.196 netmask=255.255.255.0 rootpath=/home/cookie/nuc970bsp/rootfs serverip=10.0.20.78 stderr=serial stdin=serial stdout=serial
這裏我以前出現的問題在bootargs的配置上面,
bootargs=noinitrd console=ttyS0,115200n8 root=/dev/nfs rw rdinit=/linuxrc nfsroot=10.0.20.78:/home/cookie/nuc970bsp/rootfs,nfsvers=3,nolock,tcp ip=10.0.20.195:10.0.20.78:10.0.20.254:255.255.255.0::eth0:off
這裏在nfsroot參數中要添加使用NFSv3選項。NFS協議默認使用UDP協議來傳輸數據,個人開發板網卡在用nfs啓動的時候存在掉包現象,故應該考慮採用TCP方式,在rootfs中添加tcp選項,最終nfsroot的配置相似以下
nfsroot=10.0.20.78:/home/cookie/nuc970bsp/rootfs,nfsvers=3,nolock,tcp
最後這裏特別感謝挖坑網的暈哥給與個人悉心知道,你們有問題也能夠上這個網站上去提問。
飛機直達===》》挖坑網/填坑網 DebugDump Forum