mini2440使用nfs挂载的另一种方法

网上一般使用的都是在uboot启动的时候设置好启动参数,然后linux启动的时候使用nfs让平台挂载主机上的根文件系统目录,这样的话就不需要烧写根文件系统的镜像

到开发板中的nandfalsh中了。我因为制作根文件系统的时候失败了,所以就直接使用的是mini2440自带的根文件系统镜像,烧写到开发板中,这样可以正常启动了。

可是如果要进行实验,编写的模块文件怎么加载到开发板中的文件系统中去呢。我们可以在平台linux启动之后进入文件系统在命令行中使用nfs,去访问位于主机上的

一个目录,我们在主机上写的代码编译出来的ko文件放到这个目录中作为nfs服务器目录,让平台通过nfs将这个目录挂载到平台中的/mnt/目录中,这样就可以通过平台

的/mnt/中开到主机中的ko文件了,同时可以使用insmod进行加载到平台中运行。具体方法如下:


1.在主机上安装nfs服务,我的是Ubuntu12.04

apt-get install apt-get install nfs-kernel-server

2.设置/etc/exports/文件,在末尾添加

/home/cjx/workspace/nfsdir *(rw,sync,no_root_squash)

3.重启服务

#sudo /etc/init.d/portmap restart

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

4.测试

#sudo mount -t nfs 192.168.0.1:/home/cjx/workspace/nfsdir/ /mnt/

#ls /mnt/


5.在平台上ping主机

如果IP已经在一个网段了,并且设置成了桥接模式但是平台还是ping不同主机,需要设置虚拟机。在 编辑->虚拟网络编辑器->桥接模式->桥接到->有线网卡。

5.启动平台,将平台的eth0的ip设置成跟主机一个网段,我的主机ip是192.168.0.1,设置平台为192.168.0.2

方法一:ifconfig ech0 192.168.0.2    只有这次生效,下次重新启动又会变成原来的治标不治本

方法二:将/etc/eth0-setting中的ip=x.x.x.x设置成你自己想要的,这样永久生效,下次开机就会默认设置成你设置的ip


6.让平台启动的时候自动挂载

修改/etc/init.d/rcS文件,在末尾加上如下语句

echo "mount host matchine to platform dir /mnt/ ..."                            
mount -t nfs -o nolock 192.168.0.1:/home/cjx/workspace/nfsdir /mnt/

这样每次平台启动的时候就会自动将主机上的nfsdir目录挂载到平台文件系统中的/mnt/中去


好了,这样,你可以在主机上开发,将文件放到/home/cjx/workspace/nfsdir中去,然后就可以在平台中的/mnt/中看到了,并且可以加载模块什么的操作

需要注意的是在主机编译的时候需要指定编译器为交叉编译工具链编译才能在平台上运行。我的makefile文件如下所示


ifneq ($(KERNELRELEASE),)                                                       
                                                                                
obj-m := platform.o                                                             
                                                                                
else                                                                            
                                                                                
KDIR := /home/cjx/workspace/kernel/linux-2.6.32.2                               
all:                                                                            
        make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=/home/cjx/workspace/software/arm-linux-gcc/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-
clean:                                                                          
        rm -f *.ko *.o *.mod.o *.mod.c *.symvers  modul*                        
                                                                                
endif


KDIR表示我的平台移植的内核的目录,CROSS_COMPILE是我主机上交叉编译工具链的安装目录。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值