linux uboot nfs启动,嵌入式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)保存配置,重新编译内核,大功告成,哈哈哈。。。。

你可能感兴趣的:(linux,uboot,nfs启动)