嵌入式Linux移植 NFS根文件系统挂载(从Ubuntu启动内核,文件系统)

环境介绍:

Windows10

vmware+Ubuntu16.04
OK335xd+am3354(forlinx家的板子)

 

操作目标、结果:

uboot:使用flash中的uboot引导内核

uImage:通过tftp使用Ubuntu中的/tftpboot中的uImage启动

rootfs根文件系统:通过NFS使用Ubuntu中的/nfs_rootfs中的根文件系统(bin,dev,etc......)

 

操作前提:

1.板子可以ping通Windows,Ubuntu

2.tftp服务可以使用

 

操作流程:

1.启动板子进入uboot-shell

2.设置环境变量

setenv serverip 192.168.0.210   (192.168.0.210为tftp服务器的ip)
setenv ipaddr 192.168.0.215   (192.168.0.215为开发板ip和服务器的ip应该在一个网段中)
saveenv

setenv bootargs console=ttyO0,115200n8 root=/dev/nfs nfsroot=192.168.0.210:/nfs_rootfs,nolock rw ip=192.168.0.215:192.168.0.210:192.168.0.1:255.255.255.0::eth0:off screentype=R screensize=800x600-vga

(nfsroot=192.168.0.210:/nfs_rootfs 中的 192.168.0.210 为 ubuntu 服务器 ip, /nfs_rootfs 为 ubuntu
下所建的存放文件系统的路径, 192.168.0.215 是开发板的 ip)

setenv bootcmd "tftp 80000000 uImage;bootm 80000000"

save

备注:如果kernel启动后信息汇报VFS: Unable to mount root fs via NFS, trying floppy. 则很可能是以上环境变量设置不对,或者文          件系统有问题,或是内核中没选支持NFS(forlink的已经选了)可以多设置几次环境变量,错误提示如下

若内核中未选:File Systems -> Network File System中选择 NFS client support 以及 Root file system on NFS。如果找不到Root file        system on NFS 选项,要打开第一级菜单下的Networking support -> Networking options -> TCP/IP networking -> IP: kernel level autoconfiguration。如果NFS要使用DHCP,还得选上 IP: DHCP support。

嵌入式Linux移植 NFS根文件系统挂载(从Ubuntu启动内核,文件系统)

3.内核启动成功,板子Linux输入root获取管理员权限,cd到/mnt,ls

                            Ubuntu中吧ledtest.o移入nfs_rootfs中的/mnt

                            板子Linux再次ls,出现ledtest

                            ./ledtest

                           小灯闪烁