嵌入式uboot,内核启动通过nfs挂载根文件系统

概述
嵌入式移植学习第二个内容,通过nfs挂载根文件系统。也是自己第一次做,也遇到了一些问题,但最后还是都解决了。在此记录一下整个流程,也希望能够给别的初学者一个参考。
系统环境
PC端 linux :ubuntu 14.04
嵌入式端 君正: halley2开发板(x1000)
总体思路
pc端搭建nfs服务———->开发板端uboot配置内核加载根文件系统方式为nfs挂载方式———->完成挂载,测试
具体步骤流程

1,pc端搭建nfs服务
(1)安装及配置nfs服务器

//安装nfs服务器
$ sudo apt-get install nfs-kernel-server
//配置nfs服务,打开/etc/expors 文件
$ sudo vim /etc/exports
//添加如下内容,/home/sky/test/nfs_test是我设置的挂载目录,可能你是/home/user(你用户名)/***(自己创建的一个目录)。保存退出,如下图所示
/home/sky/test/nfs_test *(rw,sync,insecure,no_root_squash,no_subtree_check)
//重启该服务
$ sudo /etc/init.d/nfs-kernel-server restart

这里写图片描述

(2)测试nfs服务搭建是否成功

//挂载我们设置的目录到/mnt文件夹下,若mnt文件夹内容与nfs_test内容相同表示搭建成功
$ sudo mount 127.0.0.1:/home/sky/test/nfs_test /mnt 

2,uboot设置内核加载文件系统方式为nfs方式
(1)uboot设置
进入uboot命令行界面,设置bootargs

$ set bootargs 'console=ttyS2,115200n8 mem=31M@0x0 ip=192.168.10.199 root=/dev/nfs nfsroot=192.168.10.197:/home/sky/test/nfs_test rw'

console=ttyS2,115200n8 //表示设置虚拟终端串口,调试串口。
mem=31M@0x0 //表时指定内存大小
ip=192.168.10.199 //设置设备ip
root=/dev/nfs //表示指定文件系统位置
nfsroot=192.168.10.197:/home/sky/test/nfs_test rw //表示nfs文件系统挂载位置
(2)保存和查看配置

//保存配置
$ saveenv
//查看配置,内容如下图所示
$ pri

这里写图片描述

3,完成挂载及测试
(1)pc端将做好的文件系统复制到我们设置的挂载目录,用于开发板挂载。如下图所示:
这里写图片描述
(2)重启开发板,内核打印如下信息
这里写图片描述
进入到文件系统,如下图所示,可以看到和我们pc端完全一致
这里写图片描述
(3)测试挂载
在pc端挂载文件夹下touch一个test文件,我们可以在开发板马上看到也有一个tese文件。如图所示:
pc端
这里写图片描述
开发板
这里写图片描述
4,遇到的问题及解决方法
VFS: Cannot open root device “nfs” or unknown-block(0,255): error -6
在/dev目录下面没有nfs,打不开。具体错误如下所示:
这里写图片描述
通过资料知道,原来我们内核镜像编译时,没有将nfs挂载文件系统功能编译进去,内核根本不支持nfs操作,所以造成如上错误。
遇到问题就要解决啊,我们就编译一个有支持nfs挂载文件系统的内核镜像。我们通过make menuconfig 配置使其支持此功能。
(1)进入文件系统配置
这里写图片描述
(2)启动网络文件系统功能
这里写图片描述
(3)开启nfs功能
这里写图片描述
(4)网络配置,启动Networking support
这里写图片描述
(5)进入网络支持,里面的Networking options(网络配置选项)
这里写图片描述
(6)保存配置,重新编译内核,大功告成,哈哈哈。。。。

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值