linux开发板挂载NFS网络文件系统

做这个实验,请先看我的三机互ping教程

 

NFS(网络文件系统)

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

使用前提


1、若出现挂载被拒绝,请尝试双方互ping是否能通 
2、检查防火墙是否关闭 
3、检查开发板内核是否支持NFS,服务器inux搭建nfs服务        sudo apt-get install nfs-kernel-server 


 

第一种: 仅用flash上的根文件系统启动后,手工挂载nfs(推荐用这种)

1.1、虚拟机llinux服务器允许那个目录被挂载

指定linux下的某个文件系统运行他人挂接,修改/etc/exports,增加该文件的目录路径,括号照抄

a、增加nfs服务的文件夹路径   vi /etc/exports 
比如将这个文件目录/work/nfs_root/first_fs允许他人挂接,  编辑加入/work/nfs_root/first_fs   *(rw,sync,no_root_squash

b、重启nfs服务                       sudo  /etc/init.d/n

c、设置linux服务器的ip地址   sudo ifconfig eth3 192.168.2.2  netmask 255.255.255.0

 

1.2、开发板设置去挂载网络上(linux服务器)的文件系统

  配置开发板的ip  开发板上启动内核和文件系统后

查看ip地址#ifconfig 

设置ip地址# ifconfig eth0 192.168.2.3   

开发板启动flash的文件系统后,建立一个/mnt目录作为挂载点,

我们把linux服务器的文件系统挂载到mnt目录

# mount -t nfs -o nolock 192.168.2.2:/work/nfs_root/first_fs  /mnt
可能出现以下问题
nfs: server 192.168.2.2 not responding, still trying
nfs: server 192.168.2.2 not responding, still trying
nfs: server 192.168.2.2 not responding, still trying

建议改用以下命令(nfs本身的问题,nfs默认是udp协议,因此使用下面的命令完美解决)

#mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168.2.2:/work/nfs_root/first_fs  /mnt
 


第二种使用NFS作为根文件系统来启动(不推荐)

https://blog.csdn.net/thisway_diy/article/details/68067350

         a.重启开发板进入u-boot命令行。

          b.输入 set bootargs noinitrd root=/dev/nfs nfsroot=192.168.2.2:/work/nfs_root/first_fs ip=192.168.1.119:192.168.1.110:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0

这里乱七八糟的,就不管

set bootargs noinitrd root=/dev/nfs nfsroot=服务器的ip地址:/work/nfs_root/first_fs ip=单板的ip地址 :192.168.1.110:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0

          c. save  保存    reboot重启。

ok NFS启动完成。


在实际开发中,我们选择使用第一种也就是烧写linux、uboot、fs_qtopia.yaffs2文件系统后,从flash上挂载网络文件系统,

在开发板的文件系统根目录下建立/mnt作为挂载点,讲将网络上的文件系统挂载在这个目录。

 

测试:

在linux编写hello.c文件,用交叉编译器编译这个文件,这个文件是arm架构的只能在开发板上运行,所以开发板挂载后执行这个文件。

#include <stdio.h>
int main()
{
        printf(" hello!\n");
        return 0;
}
                                           

服务器上 $ arm-linux-gcc  -o hello hello.c 

开发板上 $./hello
 

我用的是韦东山的资料,由于自己升级编译器arm-linux-gcc-4.3.2.tar.bz2,结果出现了以下问题。

开发板执行./hello 遇到illegal instruction错误。

什么问题:我升级了编译器导致的       查看交叉编译器版本 $ arm-linux-gcc -v

妈的,结果illegal instruction这个错误我折腾了两天,这是个恶心的问题,网上一堆看的云里雾里

最后用回韦东山的虚拟机,里面是交叉编译器 3.4.5,编译后,可以在开发板上运行这个hello

 

如果真要死折腾https://blog.csdn.net/qiaoliang328/article/details/4866367这个博客看下,

不过我操作过程发现有点不一样

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值