通过设置u-boot的bootargs来更改开机自动进入nfs远端服务器,不需要mount指令,实现虚拟机编译程序后直接通过u-boot烧写程序

1  使用nfs作为根文件系统启动

1.1    print                                                  打印并查看根文件系统root启动地址

从下图看出root根目录启动是在flash上,接下来改为root=/dev/nfs,使用网络文件系统。

1.2   设置bootargs启动网络文件系统

1.2.1 打开linux-2.6.22.6(也就是开发板内核)内核文件目录,在"/documentation"找到"nfsroot.txt"资料文件。

1.2.2 打开nfsroot.txt 找到 "nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]"  这个阐述的nfs服务器参数设置。

server-ip:服务器(虚拟机)IP地址

root-dir:nfs根目录位置

nfs-options:选项,默认可以不填

这里填的nfs服务器参数是(用冒号隔开):  nfsroot=192.168.1.106:/work/nfs_root/tmp/fs_mini_mdev

1.2.3 继续找到 "ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>"  这个阐述的nfs客户端链接的参数设置。

client-ip:客户端(开发板)IP地址

server-ip:服务器(虚拟机)IP地址

gw-ip:网关地址,一般都是192.168.1.1

netmask:子网掩码,255.255.255.0

hostname:主机名,可以不填

device:网卡设备,默认一个网卡就填eth0

autoconf:自动连接,填off不自动连接

这里填的nfs客户端参数是(用冒号隔开):  ip=192.168.1.199:192.168.1.106:192.168.1.1:255.255.255.0::eth0:off

最后将上面两个参数,代入到bootargs中,步骤:

set  bootargs  noinitrd  root=/dev/nfs  nfsroot=192.168.1.106:/work/nfs_root/tmp/fs_mini_mdev  ip=192.168.1.199:192.168.1.106:192.168.1.1:255.255.255.0::eth0:off   init=/linuxrc console=ttySAC0                                                                 设置nfs根目录

save                                                                                      保存

重启开发板后,可以看到" VFS: Mounted root (nfs filesystem).  ",已经登录了nfs文件系统,输入ls可以看到远端虚拟机目录

 2. 使用NFS初试编译好的驱动

2.1 先将驱动程序拷贝到虚拟机与2440共享的网络文件目录里" /work/nfs_root/tmp/fs_mini_mdev".

2.2  在Linux中编译驱动,这里以LED程序为例.

步骤:

cd drivers_and_test/first_drv                      进入驱动目录,进入LED程序文件夹,其中LED程序文件名为“first_drv”.

vi  Makefile                                     查看Makefile的指定的内核源码路径是否正确。(下图中看到的路径是正确的,然后在vi编辑器下按"ESC:q"退出)

make                                                                         make编译 ,生成first_drv.ko文件 (ko文件用来insmod命令加载)

arm-linux-gcc -o firstdrvtest firstdrvtest.c                        测试程序编译

3.  uboot通过NFS 初试第一个驱动

uboot通过nfs将刚刚编译好的LED程序,加载到开发板2440里。

步骤:

cd drivers_and_test/first_drv/

insmod first_drv.ko                                   加载first_drv.ko 驱动到内核

./firstdrvtest                                             查看测试程序怎么使用,如下图所示,后面加on/off,表示开或关。

./firstdrvtest  on                                       开灯

./firstdrvtest  off                                       关灯

使用nfs作为根文件系统启动,(3)的更多相关文章

  1. 从ramdisk根文件系统启动Linux成功,及使用initramfs启动linux

    下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章 今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下. 其中涉及的内容较多,很多东西不再详述 ...

  2. 从ramdisk根文件系统启动Linux 二

    今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下.其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆). 开发环境:Fedo ...

  3. 从ramdisk根文件系统启动Linux成功

    这几天参考国嵌的实验手册和网上的资料完成了u-boot定制.内核定制.ramdisk根文件系统的制作,并成功.趁热打铁,总结一下.本文引用了很多网络上的文章,就不一一注明了.感谢各大侠的帮助,如有雷同 ...

  4. Linux内核3.0移植并基于Initramfs根文件系统启动

    Linux内核移植与启动 Target borad:FL2440 Bootloader:U-boot-2010.09 交叉编译器:buildroot-2012.08 1.linux内核基础知识 首先, ...

  5. uboot、内核、根文件系统启动流程

    [1]Uboot的启动流程  Uboot的启动分为两个阶段.  第一阶段:设置异常向量表,设置ARM核为svc模式,关cache和关mmu,  关看门狗,初始化时钟,串口,内存,初始化栈空间,清bss ...

  6. NFS挂在文件系统启动参数

    1.tiny6410(增强版)bootargs启动参数(周学伟)noinitrd console=ttySAC0,115200 lcd=S70 init=/init root=/dev/nfs rw ...

  7. linux文件系统启动流程、启动脚本

    linux文件系统启动流程.启动脚本 下面是一张Linux启动流程图: 在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为: 1. /sbin/init 2. /etc/ ...

  8. 目标板通过nfs挂载根文件系统

    目标板挂载根文件系统的方法有两种(这里所说的服务端就是ubuntu,Ubuntu已经成功安装了nfs服务,并且保证服务端与目标板ping 通) 第一种:等待开发板启动之后去挂载,此时文件系统从Flas ...

  9. mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(一搭建开发环境——建立NFS服务器)

    http://blog.csdn.net/yinjiabin/article/details/7489030 建立 nfs 服务器 在嵌入式 linux 开发的时候,常常需要使用 nfs 以方便程序的 ...

随机推荐

  1. Java利用内存映射文件实现按行读取文件

    我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好 ...

  2. 22. leetcode 242. Valid Anagram(由颠倒字母顺序而构成的字)

    22. 242. Valid Anagram(由颠倒字母顺序而构成的字) Given two strings s and t, write a function to determine if t i ...

  3. NOIP 2001 提高组 题解

    NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...

  4. ue4(c++) 按钮中的文字居中的问题

      .Content() [ SNew(SOverlay) + SOverlay::Slot().HAlign(HAlign_Center).VAlign(VAlign_Center) [ SNew( ...

  5. Xamarin.Forms(二) 返回页面的数据刷新

    这几天在做一个课程表的小程序,遇到了这样一个问题: app打开便是课程表的页面,如果课程表页面没有数据的话需要跳转到同步课表页面模拟登陆教务管理系统获取课表,并显示在课程表页面,这样就需要从同步课表页 ...

  6. Android融合推送MixPush SDK集成多家推送平台,共享系统级推送,杀死APP也能收到推送

    消息推送是App运营的重要一环,为了优化消息推送成功率,降低电量和流量消耗,系统级的推送服务显得尤为重要.小米和魅族由此推出了自家的推送平台,在MIUI和Flyme上共享系统级推送服务,让APP在被杀 ...

  7. UITableView移除某行的分割线和让分割线宽度为cell的宽度

    1.移除 UITableView 某一行的分割线 所谓移除,其实就是使其偏移出 cell 的显示范围,看不到即移除. 方法1: 移除系统的分割线,自己定义每行的分割线 self.tableView.s ...

  8. 设计模式的征途—19.命令(Command)模式

    在生活中,我们装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或换气扇.在购买开关时,用户并不知道它将来到底用于控制什么电器,也就是说,开关与电灯.换气扇并无 ...

  9. Win7 IIS建站

    1.在控制面板->程序和功能->打开或关闭windows功能->安装IIS服务 2.控制面板->管理工具->IIS管理器 客户端访问Web服务器,服务器端不需关闭防火墙, ...

  10. 深度理解div+css布局嵌套盒子

    1. 网页布局概述 网页布局的概念是把即将出现在网页中的所有元素进行定位,而CSS网页排版技术有别于传统的网页排版方法,它将页面首先在整体上使用<div>标记进行分块,然后对每个快进行CS ...