zoukankan      html  css  js  c++  java
  • mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)

    http://blog.csdn.net/yinjiabin/article/details/7489563

    根文件系统一般包括:

    1)基本的文件系统结构,包含一些必须的目录,比如:/dev,/proc,/bin,/etc,/lib,/usr,/tmp;

    2)基本程序运行所需的库函数,如:libc/uC-libc;

    3)基本的系统配置文件,如:rc,inittab等脚本文件;

    4)必要的设备支持文件,如:/dev/hd*,/dev/tty,/dev/fdO;

    5)基本的应用程序,如:sh,ls,cp,mv等。 

    根文件系统的制作就是生成包含上述各种文件的文件系统的过程,可通过直接拷贝宿主机上交叉编译器处的文件来制作根文件系统,但是这种方法制作的根文件系统一般过于庞大。也可通过一些工具如busybox来制作根文件系统,用busybox制作的根文件系统可以做到短小精悍并且运行效率较高。写成shell文件便于操作,有些人将BusyBox称为Linux工具里的瑞士军刀.


    根文件系统是linux启动时使用的第一个文件系统。没有根文件系统,linux将无法正常启动。根文件系统:有一系列的目录组成,目录中包含了应用程序、c库、以及相关的配置文件。

    step:创建根文件系统目录

    cd /opt/FriendlyARM/mini6410/linux

    mkdir rootfs

    cd rootfs

    mkdir bin dev etc lib proc sbin sys usr mnt tmp var 
    mkdir usr/bin usr/lib usr/sbin lib/modules


    step2:创建设备文件:

    cd dev/
    mknod -m 666 console c 5 1
    mknod -m 666 null c 1 3
    cd ..


    step3:安装/etc(配置文件可以从其他做好的嵌入式系统中cp)

    tarzxvf etc.tar.gz –C /xxx/rootfs

    step4:编译内核模块:

    进入Linux内核目录(linux 2.6.36)
    make modules ARCH=arm CROSS_COMPILE=arm-linux-

    step5:安装内核模块

    make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfs

    step6: 配置busybox

    Busybox: 嵌入式开发中的瑞士军刀

    进入busybox目录执行
    make menuconfig

    a.进入 Busybox Settings à
    build Options->
       选中 
    “Build busybox as a static binary”, 静态链接
       Cross Compiler prefix (arm-linux-)
       Installation Options->
       选中
     “Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
       Busybox Installation Prefix (
    /xxx/rootfs)
       该选项表明编译后的busybox的安装位置

    step7: 编译,安转busybox

    make ARCH=arm CROSS_COMPILE=arm-linux-
    make install


    step8: 从 NandFlash 启动 Tiny6410,然后修改UBoot 的环境变量 bootargs(就是这里了,可以解决一开始文章的 not responding的问题)!

    操作命令:

    setenv serverip console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.100:/opt/FriendlyARM/mini6410/linux/rootfs,proto=tcp,nfsvers=3,nolock ip=192.168.1.70:192.168.1.100:192.168.1.100:255.255.255.0:linux.arm9.net:eth0:off

    解释一下其中的意思了:

    console=ttySAC0                     ttySAC0 作为控制台

    root=dev/nfs                              固定格式,表示内核采用nfs 方式起根文件系统

    nfsroot=192.168.1.100:/opt/FriendlyARM/mini6410/linux/rootfs,

                                                        表示的是 nfs 起的根文件系统位于 nfs 服务器/opt/FriendlyARM/mini6410/linux/rootfs,目录下

    proto=tcp,nfsvers=3,nolock   如果不加这条语句会造成上面的nfs: server192.168.1.100notresponding, still trying这样的错误!

    原因:NFS的默认传输协议是UDP,而PC机与嵌入式系统通过UPD交互时就会出现严重的网卡丢包现象(这个也只是暂时的分析)!貌似好多人都说是网卡移植出现的问题!具体我也就不知道了,反正写上这个,然后就没有问题了!

     ip=192.168.1.70:192.168.1.100:192.168.1.100:255.255.255.0:linux.arm9.net:eth0:off

                                  这句话的格式是:ip=IP1:IP0:IP2:IP3:nameofyoulike:eth0:off

                                              第一项(IP1)是目标板的临时IP(注意不要和局域网内其它的IP有冲突)

                                  第二项(IP0)是我的虚拟机的IP

                                  第三项(IP2)是目标板上网管(GW)的设置,这个参数设置跟虚拟机网管一致

                                  第四项(IP3)是子网掩码

                                  第五项(yourname)是开发板的名字(随便啦)

                                          第六项(eth0)是网卡设备的名字

    操作过程如下图所示:

    1) 设置主机的IP地址和bootargs环境变量

     

    执行结果


    step9:通过 tftp 下载位于虚拟机 /tftpboot 目录下的uImage 文件到 0xc0008000 处!

    执行结果


    step: bootm

    4. 等待查看,按提示按下Enter!




  • 相关阅读:
    第38周星期六小结
    第38周星期日小结
    第39周星期三熟悉java项目第一天小结
    第39周星期一今天开始用扇贝记单词
    第38周星期四电话会议忙碌的一天
    第38周星期二
    第38周星期三熟悉工程环境
    PHP实现图片的等比缩放和Logo水印功能示例
    微信授权登录微信公众号和PC端网站
    PHP实现购物车的思路和源码分析
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648242.html
Copyright © 2011-2022 走看看