zoukankan      html  css  js  c++  java
  • Linux 4.10.8 根文件系统制作(一)---环境搭建

    一、工具

      制作工具为busybox

      下载地址:https://busybox.net/

      解压:

      

    二、制作文件系统

      进入目录,执行make menuconfig:

      

    2.1 busybox setting

    2.1.1 设定交叉编译器

      

      改为

      

      保存退出,然后执行 make 编译。

      编译完成后创建文件系统存放目录:

      

    2.2.2 安装glibc

      

      安装完成后,fs_mini下会生成以下目录:

      

      

      

      进入交差编译工具链的目录,找出lib库:

      

      拷贝sysroot下的lib目录和usr/lib目录下的 .so 文件到fs_mini的lib目录下:

      

      

    2.2.3 构造etc 目录

      创建etc 目录;

      

      创建inittab文件:

      

      仿照busybox的example目录下的inittab文件写inittab文件:

      

    2.2.4 创建 etc/init.d/rcS文件

      创建init.d 目录  和 rcS 文件

       

      改变文件属性:

      

    2.2.5 创建etc/fstab文件

      文件中写入信息如下:

      

      

      

      

    2.2.6 构建dev目录

       udev:自动创建/dev/设备节点

      mdev:udev的简化版本,也是通过读取内核信息来创建设备文件。

      mdev 的用途主要有两个:初始化  /dev 目录、动态更新。

      动态更新可以更新  /dev 目录,还支持热插拔,即接入、卸下设备时执行某些动作。

      要使用 mdev,需要内核支持 sysfs  文件系统,为了减少对 flash的读写,还要支持 tmpts 文件系统。要先确保内核已经设置了CONFIG_SYSFS、CONFIG_TMPFS配置项。

    • mount -t tmpfs mdev /dev   使用内存文件系统,减少对Flash的读写
    • mkdir /dev/pts                         devpts 用来支持外部网络连接(telnet)的虚拟终端
    • mount -t devpts devpts /dev/pts
    • mount -t sysfs sysfs /sys         mdev通过sysfs文明年间系统获得设备信息
    • echo /bin/mdev > /proc/sys/kernel/hotplug   设置内核,当有设备拔插时调用 /bin/mdev 程序
    • mdev -s                              在  /dev 目录下生成内核支持的所有设备的节点  

      创建两个目录 sys 目录 和  dev 目录。然后修改fstab 文件:

      

      修改init.d/rcS文件。

      

      创建dev 目录,创建两个设备节点:

      

      一般系统中,ttySAC0的主设备号为4,但是在S3C2410、S3C2440所哟个的Linux 2.6.22.6上,它们的串口主设备号为204。我们的linux 4.10.8 上串口主设备号还没定,先暂且就这么创建着。

      其他设备都通过mdev 动态进行创建。

      需要注意的是: mdev 是通过 init进程来启动的,在使用mdev 构造 /dev目录之前,init进程至少要用到设备文件 /dev/console、/dev/null,所以要建立这两个设备文件。

    2.2.7 构建其他目录

      其他目录都可以是空目录,如 proc, mnt, tmp, sys, root 等,直接用 mkdir创建即可。

    三、安装必须的环境

    3.1 yaffs 文件系统

      下载yaffs 工具:git clone git://www.aleph1.co.uk/yaffs2

      下载完成后会生成,yaffs2目录,然后进入utils 目录:

      

    3.2  jiffs 文件系统

    3.2.1 下载所需要的软件

      下载mtd-utils工具:wget ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-2.0.0.tar.bz2

      jiffs需要zlib支持,下载zlib压缩工具:http://www.zlib.net/

      下载 lzo 包:wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz

      

      下载 uuid:suso apt-get install uuid

        http://nchc.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz

    3.2.2 安装zlib

      下载完后,拷贝到ubuntu 虚拟机中去。

      解压 zlib :tar -xzvf zlib-1.2.11.tar.gz

           cd zlib-1.2.11

      将其编译进交差编译工具链中去:

    1 CC=arm-2440-linux-gnueabi-gcc ./configure --shared --prefix=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/arm-2440-linux-gnueabi

      

      make

      sudo make install

      

    3.2.3 安装 lzo

      解压:tar -xzvf zlib-1.2.11

      进入目录去配置:

    1 CC=arm-2440-linux-gnueabi-gcc ./configure --host=arm-2440-linux --prefix=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/arm-2440-linux-gnueabi

      make

      sudo make install

    3.2.4 安装uuid

      解压:tar -zxvf libuuid-1.0.3.tar.gz

      ./configure --without-ncurses

      make

      sudo make install

      

    3.2.4 安装mtd-utils 

      解压:tar -jxvf mtd-utils-2.0.0.tar.bz2

      执行下面这句:

    1 ./configure --prefix=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/arm-2440-linux-gnueabi

      这里要根据自己的交叉编译工具链进行配置。

      也可以直接执行 ./configure

              make 

              sudo make install

      进行安装,直接安装进电脑即可

      make CROSS=/home/ubuntu/x-tools/arm-2440-linux-gnueabi/bin/arm-2440-linux-gnueabi- WITHOUT_XATTR=1

      sudo make install

      

     

      

      

      

      

  • 相关阅读:
    密码加盐
    怎么查看别人网站信息
    Tomcat虚拟路径访问本地图片失败的问题
    SSM整合Swagger
    Can't read swagger JSON from http://localhost:8080/Test/api-docs
    swagger使用一新手篇
    @JsonFormat的导包问题
    Could not find acceptable representation
    PostMan打不开怎么解决
    Project facet Java version 1.8 not supported
  • 原文地址:https://www.cnblogs.com/kele-dad/p/7095970.html
Copyright © 2011-2022 走看看