最近一直研究imx53的nfs启动,今天终于搞出来了,结果csdn又不能写博客了,这几天一直被这个问题困扰着,上网搜了好多资料,但都是给出了一系列的代码,问题是针对每一种开发板的设置还不一样,整的自己晕晕乎乎的,不知道用哪一种方法。今天把网上的方法整理了一下,终于把nfs启动搞定了,下面废话不多说,说说我的过程吧

虚拟机中的设置:

           1)在虚拟机中的ubuntu下面的mnt下面建立一个rootfs文件夹,mkdir /mnt/rootfs

            2)在虚拟机中添加的共享目录中添加新建的文件名和访问ip

                 gedit /etc/exports

                  在最后一行添加

                       /mnt/rootfs 192.168.0.*(insecure,rw,sync,no_root_squash,no_subtree_check)

                      如果不添加的话,无法挂载,而且后面的各种属性的意思,百度上都有,我就不解释了

            3)重启nfs 输入命令  /etc/init.d/nfs-kernel-server restart

                  关闭防火墙 ufw status 先查看一下防火墙状态,然后关闭 ufw disable

如果想看看共享文件夹是否成功的话,可以在开发板上挂载一下这个文件夹试试

             比如我的虚拟机ip是192.168.0.61

                  在超级终端输入:mount -o nolock 192.168.0.61:/mnt/rootfs  /mnt/nfs

                   测试一下是否能挂载成功

在uboot边的设置如下

                    建议使用环境变量没改过的uboot,有时候改乱了,就不大好了,

               我的uboot改正后是这样的

nfs停止启动_ubuntu

 1)开机的时候先观察一下自己的uboot是如何引导的,看最后一行bootcmd=run bootcmd_net ,开机首先运行这一句,

2)然后我们跳到bootcmd_net这一句,这一句是我改正后的,bootcmd_net 运行了三句,其中第二句和第三句是关键,bootarts_nfs,在上面有,他设置了,rootfs文件系统的位置和定义为nfs启动,通过我们观察bootarts_nfs,我们可以发现,我们只需要设置一下serverip和nfsroot就可以了,设置为自己的,其中的root=/dev/nfs 是虚拟的,不用管,直接这么写就可以

3)第三句是我自己改正的,这句是引导内核的,其中loadaddr为加载到内存中的地址,后面为nfs内核的目录(这种方法不稳定)

   修正,这里的bootcmd_net中的nfs加载内核的方式修改为tftp ${loadaddr}......因为nfs不稳定,加载不好使,所以改成tftp加载,这样需要提前在虚拟机中修改tftp目录,gedit /etc/xinetd.d/tftp


LINUX tftp配置方法:


1.下载tftp服务器、客户端tftp和守护进程xinetd三个包

yum install xinetd tftp tftp-server 

 

2.配置gedit /etc/xinetd.d/tftp 

修改server_args = -s /tftpboot -c,这里的-c一定要加上,否则只能下载不能上传!!!

service tftp
 {
 disable = no
 socket_type             = dgram
 protocol                = udp
 wait                    = yes
 user                    = root
 server                  = /usr/sbin/in.tftpd
 server_args             = -s /tftpboot -c
 per_source              = 11
 cps                     = 100 2
 flags                   = IPv4
 }

 

3.关闭防火墙  

lokkit --disabled

 

4.建立tftp工作目录并修改属性(不修改属性会出现error)

cd /

mkdir tftpboot

chmod 777 -R /tftpboot/

 

然后

ifconfig

tftp 192.168.1.111

get 111

 

 

此时会出现错误

Error code 0: Permission denied 

gedit  /etc/sysconfig/selinux,

设定其中的 

SELINUX=disabled 

然后重启电脑即可 






   然后在uboot中修改一下内核为tftp目录下就可以了,别忘了把内核复制到tftp目录哈,

这么多天,包括五一假期也放在这上面了,终于有结果了

这样引导就可以使用了,其实把内容网上都有,但是不适合自己罢了,关键时刻还是要自己分析引导过程,懂得原理才能解决问题,一味的乱查资料,这样只会事倍功半