zoukankan      html  css  js  c++  java
  • 制作根文件系统

    2.2、构建根文件按系统 
    2.2.1、建立根文件系统目录 
    进入到/opt/studyarm目录,新建建立根文件系统目录的脚本文件create_rootfs_bash,使用命令chmod +x create_rootfs_bash改变文件的可执行权限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。 
    #!/bin/sh 
    echo "------Create rootfs directons start...--------" 
    mkdir rootfs 
    cd rootfs 
    echo "--------Create root,dev....----------" 
    mkdir root dev etc boot tmp var sys proc lib mnt home 
    mkdir etc/init.d etc/rc.d etc/sysconfig 
    mkdir usr/sbin usr/bin usr/lib usr/modules

    echo "make node in dev/console dev/null" 
    mknod -m 600 dev/console c 5 1 
    mknod -m 600 dev/null    c 1 3 
      
    mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

    mkdir var/lib var/lock var/run var/tmp

    chmod 1777 tmp 
    chmod 1777 var/tmp

    echo "-------make direction done---------" 
    改变了tmp目录的使用权,让它开启 sticky位,为tmp目录的使用权开启此位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式系统多半是单用户,不过有些嵌入式应用不一定用root的权限来执行,因此需要遵照根文件系统权限位的基本规定来设计。 
    2.2.2、建立动态链接库 
    动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内容到新建的根文件目录lib内。 
    cd /mnt/hgfs/share 
    tar –zxvf root_qtopia.tgz –C /opt/studyarm 
    cp –rfd /opt/studyarm/root_qtopia/lib/* /opt/studyarm/rootfs/lib/* 
    2.2.3 交叉编译Bosybox 
    Bosybox是一个遵循GPL v2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox可以自动生成根文件系统所需的bin、sbin、usr目录和linuxrc文件。 
    1、解压busybox 
    cd /mnt/hgfs/share 
    tar –zxvf busybox-1.13.3.tar.tgz –C /opt/studyarm 
    2、进入源码,修改Makefile文件: 
    cd /opt/studyarm/busybox-1.13.3 
    修改: 
    CROSS_COMPILE ?=arm-linux-   //第164行 
    ARCH ?=arm //第189行 
    3、配置busybox 
    输入make menuconfig进行配置 
    (1)、Busybox Settings---> 
      General Configuration---> 
    [*] Show verbose applet usage messages 
    [*] Store applet usage messages in compressed form 
    [*] Support –install [-s] to install applet links at runtime 
    [*] Enable locale support(system needs locale for this to work) 
    [*] Support for –long-options 
    [*] Use the devpts filesystem for unix98 PTYs 
    [*] Support writing pidfiles 
    [*] Runtime SUID/SGID configuration via /etc/busybox.config 
    [*]  Suppress warning message if /etc/busybox.conf is not readable 
    Build Options---> 
         [*] Build BusyBox as a static binary(no shared libs) 
    [*] Build with Large File Support(for accessing files>2GB) 
    Installation Options-> 
    []Don’t use /usr 
    Applets links (as soft-links) ---> 
    (./_install) BusyBox installation prefix 
    Busybox Library Tuning ---> 
    (6)Minimum password legth 
    (2)MD5:Trade Bytes for Speed 
    [*]Fsater /proc scanning code(+100bytes) 
    [*]Command line editing 
    (1024)Maximum length of input 
    [*] vi-style line editing commands 
    (15) History size 
    [*] History saving 
    [*] Tab completion 
    [*]Fancy shell prompts 
    (4) Copy buffer size ,in kilobytes 
    [*]Use ioctl names rather than hex values in error messages 
    [*]Support infiniband HW 
    (2)、Linux Module Utilities---> 
      (/lib/modules)Default directory containing modules 
    (modules.dep)Default name of modules.dep 
    [*] insmod 
    [*] rmmod 
    [*] lsmod 
    [*] modprobe 
    -----options common to multiple modutils 
    [ ] support version 2.2/2.4 Linux kernels 
    [*]Support tainted module checking with new kernels 
    [*]Support for module .aliases file 
    [*] support for modules.symbols file 
    (3)、在busybox中配置对dev下设备类型的支持 
    dev的创建有三种方法: 
    手动创建:在制作根文件系统的时候,就在dev目录下创建好要使用的设备文件,系统挂接根文件系统后,就可以使用dev目录下的设备文件了。 
    使用devfs文件系统:这种方法已经过时,具有不确定的设备映射、没有足够的主/次设备号、devfs消耗大量的内存。 
    udev:它是个用户程序,能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建、删除等。它的操作相对复杂,但灵活性很高 
    mdev 是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。下面的选项将增加对mdev的支持。 
    Linux System Utilities  --->                
        [*]Support /etc/mdev.conf          
        [*]Support command execution at device addition/removal 
    4、 编译busybox 
    编译busybox到指定目录: 
    cd /opt/studyarm/busybox-1.13.3 
    make CONFIG_PREFIX=/opt/studyarm/rootfs install 
    在rootfs目录下会生成目录bin、sbin、usr和文件linuxrc的内容。 
    2.2.4 建立etc目录下的配置文件 
    1、etc/mdev.conf文件,内容为空。 
    2、拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。 
    3、etc/sysconfig目录下新建文件HOSTNAME,内容为”MrFeng”。 
    4、etc/inittab文件: 
    #etc/inittab 
    ::sysinit:/etc/init.d/rcS 
    ::askfirst:-/bin/sh 
    ::ctrlaltdel:/sbin/reboot 
    ::shutdown:/bin/umount -a –r 
    5、etc/init.d/rcS文件: 
    #!/bin/sh 
    PATH=/sbin:/bin:/usr/sbin:/usr/bin 
    runlevel=S 
    prevlevel=N 
    umask 022 
    export PATH runlevel prevlevel

    echo "----------munt all----------------" 
    mount -a

    echo /sbin/mdev>/proc/sys/kernel/hotplug 
    mdev -s

    echo "***********************************************" 
    echo "****************Studying ARM*********************" 
    echo "Kernel version:linux-2.6.29.1" 
    echo "Student:Feng dong rui" 
    echo "Date:2009.07.15" 
    echo "***********************************************"

    /bin/hostname -F /etc/sysconfig/HOSTNAME 
    使用以下命令改变rcS的执行权限: 
    Chmod +x rcS 
    6、etc/fstab文件: 
    #device    mount-point     type     option     dump   fsck   order 
    proc          /proc        proc     defaults    0        0 
    none          /tmp        ramfs    defaults    0        0 
    sysfs         /sys          sysfs    defaults    0        0 
    mdev          /dev        ramfs    defaults    0        0 
    7、 etc/profile文件: 
    #Ash profile 
    #vim:syntax=sh

    #No core file by defaults 
    #ulimit -S -c 0>/dev/null 2>&1

    USER="id -un" 
    LOGNAME=$USER 
    PS1='[u@h=W]#' 
    PATH=$PATH 
    HOSTNAME='/bin/hostname' 
    export USER LOGNAME PS1 PATH 
    2.2.5 制作根文件系统映像文件 
    使用以下命令安装好yaffs文件系统制作工具:  
    cd /mnt/hgfs/share 
    tar –zxvf mkyaffs2image.tgz –C / 
    在/opt/studyarm目录下,使用命令mkyaffs2image rootfs rootfs.img生成根文件系统映像文件。

    注意:

    制作镜像提供的有两个工具,我的开发板是1G Flash的所以应该选用 mkyaffs2image-128M的,

    选用mkyaffs2image会出现烧写文件系统不成功的错误。

    提供的文档中rootfs_rtm_210这个文件系统也是可用的。

  • 相关阅读:
    深度优先搜索
    哈希算法
    双指针问题
    基本概念
    Ionic JPush极光推送二
    一条sql获取每个类别最新的一条记录
    Ionic App 更新插件cordova-plugin-app-version
    Ionic跳转到外网地址
    Ionic cordova-plugin-splashscreen
    Web API 上传下载文件
  • 原文地址:https://www.cnblogs.com/hei-da-mi/p/5156664.html
Copyright © 2011-2022 走看看