zoukankan      html  css  js  c++  java
  • 构建根文件系统

    一、制作工具

    ①jffs2

    #cd /work/GUI/xwindow/X/deps
    #tar xzf zlib-1.2.3.tar.gz
    #cd zlib-1.2.3
    #./configure --shared --prefix=/usr
    #make
    #make install
    然后编译mkfs.jffs2

    #cd /work/tools
    #tar xjf mtd-utils-05.07.23.tar.bz2
    #cd mtd-utils-05.07.23/util
    #make
    #make install

    制作/烧写jffs2映像文件
    #cd /work/nfs_root
    #mkfs.jffs2 -n -s 2048 -e 128k -d first_fs -o first_fs.jffs2

    -s 一页的大小
    -e 一块的大小
    -d 源目录
    -o 输出

    ②yaffs2

    #cd work/system
     yaffs_source_util_large_smmall_page_nand.tar.bz2
     
     #tar xjf  yaffs_source_util_large_small_page_nand.tar.bz2
     #cd Developement_util_ok
     #cd yaffs2
     #cd utils
     #make
     #cp mkyaffs2image /usr/local/bin
     #chmod +x /usr/local/bin/mkyaffs2image

    二、构建根文件系统

    1./dev/console /dev/null
    2.配置文件/etc/inittab
    3.配置文件里面指定的应用程序
    4.库文件
    5.init本身,即busybox
    以上就是最小根文件系统所需要的项

    编译busybox
    先阅读install文件可知道如何编译它

    make menuconfig
    make
    make install(这里安装要注意)
    安装到我们指定的某个文件里面
    使用make CONFIG_PREFIX=/path/from/root install



    编译需要在makefile里面加上cross_compiler里面加上arm-linux-,或者在busybox里面执行make menuconfig也可

    一、创建console


    现在上面编译后busybox目录是work/tmp/first_fs
    在此目录下:ls /dev/console /dev/null -l
    crw------- 1 root root 5, 1 2015-01-05 20:57 /dev/console
    crw-rw-rw- 1 root root 1, 3 2015-01-05 20:30 /dev/null
    那么根据它来创建console null等设备

    #mkdir dev
    #cd dev
    #mknod console c 5 1
    #mknod null c 1 3
    #ls -l
    显示:
     crw-r--r-- 1 root root 5, 1 2015-05-06 20:39 console
    crw-r--r-- 1 root root 1, 3 2015-05-06 20:40 null
    表示创建成功



    二、配置项
    #cd work/tmp/first_fs
    #mkdir etc
    #vim  etc/inittab

    输入:
    console::askfirst:-/bin/sh


    三、安装c库
    #cd /usr/local/arm/4.3.2
    #find -name lib
    显示以下库:
        ./lib
        ./arm-none-linux-gnueabi/lib
        ./arm-none-linux-gnueabi/libc/lib
        ./arm-none-linux-gnueabi/libc/thumb2/lib
        ./arm-none-linux-gnueabi/libc/thumb2/usr/lib
        ./arm-none-linux-gnueabi/libc/armv4t/lib
        ./arm-none-linux-gnueabi/libc/armv4t/usr/lib
        ./arm-none-linux-gnueabi/libc/usr/lib

     我们需要:
         /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
        /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
     
     
     
     #cd /work/tmp/first_fs/
     #mkdir lib
     #mkdir usr/lib -p
     #cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* /work/tmp/first_fs/lib -d
     #cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* /work/tmp/first_fs/usr/lib -d

     
     最小根文件系统已经完成。

    制作文件系统:
      #mkfs.jffs2 -n -s 2048 -e 128KiB -d first_fs -o first_fs.jffs2
      #mkyaffs2image first_fs first_fs.yaffs2

     烧写jffs2:
         fs:
        nfs 30000000 192.168.1.17:/work/nfs_root/first_fs.jffs2
        nand erase.part root
        nand write.jffs2 30000000 260000 $filesize
         set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
     
         kernel:
        nfs 30000000 192.168.1.17:/work/nfs_root/uImage_new
        nand erase.part kernel
        nand write.jffs2 30000000 kernel
     

    烧写yaffs2:
          fs:
        nfs 30000000 192.168.1.17:/work/nfs_root/first_fs.yaffs2     //这里不能使用nfs挂载,只能直接烧写
        nand erase.part root                         //原因是:内核还不支持dm9000c
        nand write.yaffs 30000000 260000 $filesize
         
         kernel:
        nfs 30000000 192.168.1.17:/work/nfs_root/uImage_new
        bootm 30000000  

    三、使用mdev

    可以查看mdev.txt

    [1] mount -t sysfs sysfs /sys
    [2] echo /bin/mdev > /proc/sys/kernel/hotplug
    [3] mdev -s
    [4] mount -t tmpfs mdev /dev
    [5] mkdir /dev/pts
    [6] mount -t devpts devpts /dev/pts
    这6步就可以了。


    所以:
    [1] mount -t sysfs sysfs /sys
    [4] mount -t tmpfs mdev /dev
        #cd ../first_fs_mdev
        #mkdir sys
    应该怎么做?
    #vim etc/fstab
        #device         mount-point    type     options     dump   fsck
        proc        /proc           proc    defaults    0       0
        sysfs           /sys           sysfs    default     0      0
        tmpfs           /dev           tmpfs    default     0      0


    [2] echo /bin/mdev > /proc/sys/kernel/hotplug
    [3] mdev -s
    [5] mkdir /dev/pts
    [6] mount -t devpts devpts /dev/pts
    怎么做呢?
    #vim etc/init.d/rcS
        mount -a
        mkdir /dev/pts/
        mount -t devpts devpts /dev/pts
        echo /sbin/mdev > /proc/sys/kernel/hotplug
        mdev -s

  • 相关阅读:
    Java的mybatis随笔
    通过字节输入输出流,对标识文件读写,并按规定输出
    Java中异常的处理以及自定义异常,抛出异常到方法调用栈底层
    Java接口实现传参
    类的高级概念
    Java面向对象特征之封装
    Java中的方法(形参及实参)return返回类型
    Java中的数组添加,数组相关代码
    并发思考-actor和thread那个好点?
    TensorFlow实现线性回归模型代码
  • 原文地址:https://www.cnblogs.com/hulig7/p/4789758.html
Copyright © 2011-2022 走看看