一、工具

  制作工具为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

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

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

  

  make

  sudo make install

  

3.2.3 安装 lzo

  解压:tar -xzvf zlib-1.2.11

  进入目录去配置:

 CC=arm--linux-gnueabi-gcc ./configure --host=arm-2440-linux --prefix=/home/ubuntu/x-tools/arm--linux-gnueabi/arm--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

  执行下面这句:

 ./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

  

 

  

  

  

  

Linux 4.10.8 根文件系统制作(一)---环境搭建的更多相关文章

  1. Linux 4.10.8 根文件系统制作(三)---制作yaffs文件系统

    这里直接用的是韦东山提供的工具. yaffs文件系统是专门用于nandflash的文件系统 我们前面已经下载了yaffs 的源码,也做了文件系统目录的构建. 在yaffs2的源码目录中有一个utils ...

  2. Linux 4.10.8 根文件系统制作(二)---制作jiffs文件系统

    一.制作jiffs文件系统 制作jffs2 文件系统需要用到 mkfs.jffs2工具. 执行命令: mkfs.jffs2 -n -s 0x800 -e 0x20000  --pad=0x800000 ...

  3. linux根文件系统制作

    在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...

  4. linux 内核移植和根文件系统的制作【转载】

    原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...

  5. linux 内核移植和根文件系统的制作

    1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号 ...

  6. 嵌入式linux内核制作、根文件系统制作

    嵌入式系统构成: 主要由bootloader.kernel.以及根文件系统三部分组成. 内核制作步骤: 制作嵌入式平台使用的linux内核制作方法与pc平台上的linux内核基本一致 1.清除原有配置 ...

  7. 基于mini2440嵌入式Linux根文件系统制作(Initramfs和nfs两种跟文件系统)

    嵌入式系统由三部分构成: 1.bootoader---bootparameters---2.kernel 3.Root-filesysytem 一个内核可以挂载多个文件系统,但是有一个根文件系统所以叫 ...

  8. S5PV210的根文件系统制作

    一.移植BusyBox1.下载BusyBox的源代码下载地址:http://www.busybox.net/downloads/,此处下载busybox-1.20.2.tar.bz2.2.解压并进入目 ...

  9. Yaffs2根文件系统制作

    Yaffs2根文件系统制作 环境: 交叉编译环境:4.4.6 开发平台:s3c2416 1,编译busybox 获取busybox源码busybox-1.17.2.tar (http://www.bu ...

随机推荐

  1. 设计模式笔记:策略模式(Strategy)

    1. 策略模式简介 1.1 定义 策略是为达到某一目的而采取的手段或方法,策略模式的本质是目标与手段的分离,手段不同而最终达成的目标一致.客户只关心目标而不在意具体的实现方法,实现方法要根据具体的环境 ...

  2. delphi try except语句 和 try finally语句用法以及区别

    try//尝试执行{SomeCode} except//出错的时候执行, Except有特定的错误类型 {SomeCode} end; try//尝试执行{SomeCode} finally//无论如 ...

  3. html5 简介

    html5基于html.html dom.xhtml的新版本. 为html5建立的一些新规则: 基于html.dom.xhtml和javascript: 减少对外部插件的需求,比如flash: 更多取 ...

  4. js 单项链表

    介绍链表 链表是由一组节点组成的集合.每一个节点都使用一个对象的引用指向它的后续借点.指向另外一个借点的引用叫做链. 很多编程语言中数组的长度是固定的,就是定义数组的时候需要定义数组的长度,所以当数组 ...

  5. 03 Zabbix常用的术语

    03 Zabbix常用的术语 host(主机): 要监控的网络设备,可由IP或DNS名称指定 host group(主机组):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接: ...

  6. volatile的内存语义

    volatile的特性 理解volatile特性的一个好方法是把对volatile变量的单个读/写,堪称是使用同一个锁对这些单个读/写操作做了同步. 锁的happens-before规则保证释放锁和获 ...

  7. babel与ES6环境的搭建

    我们知道浏览器环境下直接运行ES6是存在一些兼容性问题的.那么把ES6变成ES5不就行了吗? 那如何将ES6转换成ES5呢?我们来搭建它的转换环境吧~ 第一步:初始化项目,建立写注意事项的README ...

  8. Java 多线程间通信

    JDK 1.5 以后, 将同步和锁封装成了对象, 并将操作锁的隐式方法定义到了该对象中, 将隐式动作变成了显示动作. Lock 接口 Lock 接口, 位于 java.util.concurrent. ...

  9. gdb调试1--包括反汇编及文件编码设置

    一.编译 gcc的完整编译过程大致为:预处理->编译->汇编->链接 前三个步骤分别对应了-E.-S.-c三个选项. 编译阶段 命令 截断后的产物     C源程序 预处理 gcc ...

  10. Linux新系统的安全优化和内核参数优化

    拿到一个新的linux系统需要做的安全和内核优化,主要是为了提升系统安全和提升性能,满足后续的应用需要.这里简单记录一下拿到一个新的系统需要做的一些事情,仅此抛砖引玉,具体可根据自己实际情况进行设置. ...