一、概述

      开发板Linux系统挂载nfs文件系统,可以让我们做以下事情:

            1. 通过挂载Ubuntu上的目录,不用传输Ubuntu上交叉编译好的程序,直接在开发板上运行;

            2. 开发板Linux系统从nfs文件系统启动,不用烧写Flash就能验证“所制作的Linux根文件系统”。

      下面就来实现开发板Linux系统挂载nfs文件系统。

      测试环境: Ubuntu12.04 + TQ2440开发板

二、开发板Linux系统挂载Ubuntu的nfs文件系统

1、Ubuntu安装nfs服务器

#sudo apt-get install nfs-kernel-server

2、构建nfs待共享的目录

      例如我这里共享的root_nfs目录,并把需要共享的文件放到这个目录里。我这里把开发板Linux系统的根文件系统放到这个目录。

#cd /opt/EmbedSky/
#mkdir root_nfs

3、修改nfs服务器配置文件

      /etc/exports是nfs服务器的配置文件,描述共享的目录权限

#sudo vi /etc/exports

      插入内容:

/opt/EmbedSky/root_nfs *(rw,sync,no_root_squash)

     -/opt/EmbedSky/root_nfs             nfs服务器共享的目录

     -“*”                                              所有的客户机都可以挂载此目录
     -“rw”                                            表示挂载此目录的客户机对该目录有读写的权限
     -“no_root_squash”                      允许挂载此目录的客户机享有该主机的root身份

4、Ubuntu启动nfs服务器服务

#sudo /etc/init.d/nfs-kernel-server start

      如果不启动nfs服务,即使开发板的客户端连接,也挂载不成功。

5、在Ubuntu下测试nfs服务是否成功

#cd /opt/EmbedSky
#mkdir test_nfs
#mount -t nfs 172.20.16.17:/opt/EmbedSky/root_nfs  /opt/EmbedSky/test_nfs

      我在/opt/EmbedSky目录下建立了一个目录test_nfs,把共享的目录root_nfs挂载到这个目录。

      172.20.16.17是我虚拟机Ubuntu设置的IP地址。

       测试结果可以看到在test_nfs目录下出现了root_nfs目录下内容。

6、开发板Linux系统挂载nfs文件系统      

#mount -t nfs 172.20.16.17:/opt/EmbedSky/root_nfs  /mnt -o nolock

      再做此步骤之前,需要确保开发板Linux系统与虚拟机Ubuntu系统IP(172.20.16.17)在同一网段,我的开发板Linux系统IP设置为“172.20.16.16”。

      通过以上操作,就可以看到在开发板Linux系统的/mnt目录下出现了虚拟机Ubuntu系统共享的/opt/EmbedSky/root_nfs目录下内容。

三、开发板Linux系统从nfs文件系统启动

      需要说明的是开发板Linux系统从nfs文件系统启动,指的仅仅只是“根文件系统部分”启动过程,开发板Linux系统的u-boot和Linux内核部分都是从Flash启动的。

1、在Ubuntu下构建共享的nfs根文件系统

image

2、确保Ubuntu启动nfs服务器服务

3、在u-boot命令模式下修改启动参数

image

4、保存参数到Flash

5、重新启动Linux系统

     可以看到已经成功挂载NFS文件系统

image

 四、开发板Linux系统从nfs文件系统启动遇到的问题

1、不能挂载nfs文件系统

image

      可能原因:Ubuntu的nfs服务器没有启动nfs服务

      解决办法:启动nfs服务

2、可以挂载nfs文件系统,但是过一会儿服务器没有响应

image

      可能原因:Linux从根文件系统启动过程中,重新配置了网卡IP,导致IP更改

      解决办法:禁止重新配置网卡IP

      具体做法:在Ubuntu系统重修改/opt/EmbedSky/root_nfs目录下ect/int.d/rcS文件,屏蔽掉“net_set &”,改为“#net_set &” ,保存。然后再重启开发板Linux系统。

 

  参考资料:

                   Ubuntu启动nfs方法

                   《天嵌科技出品-Linux移植之Step By Step_V4.5_20100605》

 
posted on 2025-12-24 22:37  amanlikethis  阅读(2)  评论(0)    收藏  举报