title: nuc970 nfs启动配置问题
mathjax: true
date: 2018-11-15 17:36:52
tags:
- nuc970
- 嵌入式
- nfs启动
categories: 嵌入式
1.linux内核配置支持nfs启动
2.服务器端配置NFS服务器(本人机器环境为Ubuntu18.04)
3.uboot启动参数设置(问题出在这里)
之前困扰了一个星期的nuc970评估板nfs启动问题,今天终于解决了,这里写个帖子记录下,避免之后忘记。
1.linux内核配置
我们的配置还是在官方给出的nuc970基本配置之上做一些改动。首先进入linux的内核目录,然后进行内核配置,和内核编译工作,具体命令如下。
make nuc972_defconfig
make menuconfig
然后就会进入内核配置如图
对于系统从nfs启动我需要内核如下配置,这里有一个先后顺序,先配置IP:kernel level autoconfiguration,才会出现root file system on NFS的选项 这里最好勾选上下满的NFSv2,NFSv3,NFSv4的客户端支持选项。
到这里支持NFS启动的内核最小配置就已经完成了,接下来编译出内核,执行命令
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位置处。
2.服务器端配置NFS
这里我的服务器环境是Ubuntu18.04,如果你们使用的是不同发行版的linux,可能配置不同。
sudo apt-get install nfs-kernel-server
然后编辑/etc/exports文件配置自己共享目录以及权限,配置内容如下:
/home/cookie/nuc970bsp/rootfs *(rw,sync,no_subtree_check)
这里/home/cookie/nuc970bsp/rootfs是我服务器的目录,这里你需要配置自己的服务器目录。然后开启服务
sudo service nfs-kernel-server start
3.uboot启动参数设置
之前的错误一直都在这里,内核配置正确,但是启动参数错误,导致开发板一直启动不起来。具体启动参数如下:
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