专栏首页Linux驱动详解-使用nfs作为根文件系统启动,(3)

详解-使用nfs作为根文件系统启动,(3)

通过设置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                                       关灯

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mkyaffs2image制作根文件系统、使用NFS挂载虚拟机目录(2)

    1.制作根文件系统及nfs烧写 1.1 先解压文件系统,/wok/nfs_root 目录下是已经构造好的各种文件系统: ① fs_mini.tar.bz2 是最...

    张诺谦
  • 13.JAVA-包package、import使用

    之前我们学习java时,生成的class文件都是位于当前目录中,假如出现了同名文件,则会出现文件覆盖问题,因此就需要设置不同的目录(定义包),来解决同名文件冲突...

    张诺谦
  • 2.通过QOpenGLWidget绘制三角形

    QGLWidget是遗留Qt OpenGL模块的一部分,和其他QGL类一样,应该在新的应用程序中避免使用。相反,从Qt 5.4开始,最好使用QOpenGLWid...

    张诺谦
  • k8s的pv与pvc

    PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式...

    SY小站
  • K8s——数据持久化自动创建PV

    实现k8s的数据持久化的流程为:搭建nfs底层存储---->创建PV---->创建PVC---->创建pod。最终pod中的container实现数据的持久化。

    小手冰凉
  • Spring Cloud Zuul 综合使用

    从上图中可以看到,Zuul是我们整个系统的入口。当我们有参数校验的需求时,我们就可以利用Zuul的Pre过滤器,进行参数的校验。例如我现在希望请求都一律带上to...

    端碗吹水
  • python chanllenge [10]

    用户2936342
  • Docker容器虚拟化(二)—容器管理、仓库管理、数据管理

    下载registry镜像,registy为docker官方提供的一个镜像,我们可以用它来创建本地的docker私有仓库。

    阿dai学长
  • jpa多数据源时Hibernate配置自动生成表不生效

    这里会和别人的配置不一样,主要区别在于HibernateProperties。别人的在第61行,我注释掉的那行,会直接使用jpaProperties.getPr...

    天涯泪小武
  • SpringBoot编写自定义的starter

    作者:Format 来源:http://fangjian0423.github.io/2016/11/16/springboot-custom-starter/...

    java达人

扫码关注云+社区

领取腾讯云代金券