zoukankan      html  css  js  c++  java
  • 专题4-嵌入式文件系统

    1.创建目录

    #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

    2.创建设备文件

    (1)在Linux中设备都以文件的形式存在和操作。

    (2)这些文件都在dev目录

    (3)在启动Linux系统的时候必须要使用两个设备文件console和null

    #cd rootfs/dev

    #mknod -m 666 console c 5 1

    #mknod -m 666 null c 1 3

    3.加入配置文件(一般都是借鉴已有的)

    #tar etc.tar.gz
    #cp etc/* /rootfs/etc/ -rf

    4.添加内核模块

    #cd …/linux
    #make modules ARCH=arm CROSS_COMPILE=arm-linux-

    #make modules_install ARCH=arm INSTALL_MOD_PATH=…/rootfs

    5.编译安装busybox(瑞士军刀)

    (1)busybox提供linux的系统调用等功能

    (2)配置busybox

    #make menuconfig
    Busybox Settings àbuild Options->
    --》 “Build busybox as astatic binary”, 静态链接

    --》 Cross Compiler prefix (写入前缀arm-linux-)
    Installation Options->
    --》选中 “Don‘t use /usr”

    选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
    --》 Busybox Installation Prefix(写入参数/xxx/rootfs)
    该选项表明编译后的busybox的安装位置

    (3) 编译/安装busybox

    make

    make  install

    6.文件系统分类

    根据存储设备的硬件特性、系统需求,不同的文件系统类型有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为 RAM 和FLASH,常用的基于存储设备的文件系统类型包括:jffs2, yaffs2, ubifs, ramdisk等

    7.根文件系统一般用initfamfs,基于内存的文件系统掉电丢失,但是速度快。一般一个系统是多个文件系统混合使用。

    8.要使用initramfs就必须使用软链接

    ln  -s  ./bin/busybox  init

    在当前文件夹产生init的快捷方式对应于./bin/busybox 

    9.配置内核要选上 initramfs选项(General里),且紧接着填写根文件系统所在位置。再重新编译内核。

    10.设置UBOOT环境变量(传给内核的启动参数)

    setenv bootargs noinitrd console=ttySAC0,115200

    但是这样,如果要添加文件则必须要重新编译内核使得文件系统得到更新,因为此时的文件系统是通过解压存在内存里面的。即这种方式的文件系统是包含在内核里的。

    11. 使用NFS

    (1)内核配置

    ---》取消initramfs

    ---》进入File  System

    ---》根文件系统onNFS选上

    (2)编译内核

    (3)设置UBOOT启动参数

    setenv bootargs noinitrd (设置启动参数的固定格式)
    console=ttySAC0,115200 init=/init  (启动项信息,串口0,波特率)
    root=/dev/nfs rw (指明用nfs启动)
    nfsroot=192.168.1.3:/home/S5-driver/lesson9/rootfs(根文件系统在主机的路径)
    ip=192.168.1.6(开发板IP地址):192.168.1.3(主机IP):192.168.1.1(网关):255.255.255.0(掩码):(开发板主机名):eth0(启动之后IP地址赋值的对象):off(关闭动态IP)

    setenv bootargs noinitrd  console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.1.108:/nfsroot/motion_rootfs ip=192.168.1.186:192.168.1.108:192.168.1.1:255.255.255.0:XiaoJunJun:eth0:off

    12.产品成熟以后都用initramfs和yaffs2文件系统。如果开发板的IP和windows的相同会导致访问NFS很慢甚至掉线。

  • 相关阅读:
    [docker]Kubernetes的yaml文件
    [redis]redis-cluster的使用
    [redis]redis-cluster搭建
    [docker]本地仓库的创建的使用
    1W字看懂互联网知识经济
    PHP基础陷阱题(变量赋值)
    PHP不用第三变量交换2个变量的值的解决方法
    PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
    PHP实现四种基本排序算法
    WEB安全之Token浅谈
  • 原文地址:https://www.cnblogs.com/YanfeiHao/p/4161497.html
Copyright © 2011-2022 走看看