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
将其编译进交差编译工具链中去:
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 根文件系统制作(一)---环境搭建的更多相关文章
- Linux 4.10.8 根文件系统制作(三)---制作yaffs文件系统
这里直接用的是韦东山提供的工具. yaffs文件系统是专门用于nandflash的文件系统 我们前面已经下载了yaffs 的源码,也做了文件系统目录的构建. 在yaffs2的源码目录中有一个utils ...
- Linux 4.10.8 根文件系统制作(二)---制作jiffs文件系统
一.制作jiffs文件系统 制作jffs2 文件系统需要用到 mkfs.jffs2工具. 执行命令: mkfs.jffs2 -n -s 0x800 -e 0x20000 --pad=0x800000 ...
- linux根文件系统制作
在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...
- linux 内核移植和根文件系统的制作【转载】
原文地址:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076214.html 1.1 Linux内核基础知识 在动手进行Linux内核移植之 ...
- linux 内核移植和根文件系统的制作
1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1 Linux版本 Linux内核的版本号 ...
- 嵌入式linux内核制作、根文件系统制作
嵌入式系统构成: 主要由bootloader.kernel.以及根文件系统三部分组成. 内核制作步骤: 制作嵌入式平台使用的linux内核制作方法与pc平台上的linux内核基本一致 1.清除原有配置 ...
- 基于mini2440嵌入式Linux根文件系统制作(Initramfs和nfs两种跟文件系统)
嵌入式系统由三部分构成: 1.bootoader---bootparameters---2.kernel 3.Root-filesysytem 一个内核可以挂载多个文件系统,但是有一个根文件系统所以叫 ...
- S5PV210的根文件系统制作
一.移植BusyBox1.下载BusyBox的源代码下载地址:http://www.busybox.net/downloads/,此处下载busybox-1.20.2.tar.bz2.2.解压并进入目 ...
- Yaffs2根文件系统制作
Yaffs2根文件系统制作 环境: 交叉编译环境:4.4.6 开发平台:s3c2416 1,编译busybox 获取busybox源码busybox-1.17.2.tar (http://www.bu ...
随机推荐
- 关于virtualenv python环境引用 pycharm相关配置的使用讨论
今天总算决定来搞一波以前从来没有弄清楚的环境问题,也觉得是时候弄明白了. 这里先说关于python的环境引用,再谈到virtualenv最后再谈论我使用的pycharm5.0关于是用python环境的 ...
- PostgreSQL字段类型说明
BIGSERIALSERIAL8 存储自动递增的惟一整数,最多 8 字节. BIT 固定长度的位串. BIT VARYING(n)VARBIT(n) 可变长度的位串,长度为 n 位. BOOLEAN ...
- Flatpak 1.1.0发布:可终止运行Flatpak实例
读 Flatpak的Alex Larsson发布了流行的Linux应用程序沙盒和分发框架的新版本,该框架有望成为跨Linux操作系统的应用程序分发的未来. Flatpak 1.1.0现已作为开始推出F ...
- 关于jQuery.when()用法的调研
1.该方法在jQuery1.5开始被引入. 2.用法测试 a.var url1 = "/resource/ar/hometab/index_tab_games.json", ...
- jQuery文档处理总结
<!DOCTYPE html> <html lang="cn"> <head> <meta charset="UTF-8&quo ...
- MT【47】求一道分式的最值
评:技巧性很大,需要敏锐的洞察力通过柯西不等式把分母变成一样.请记住这个变形$$(a+b+ab+1)=(a+1)(b+1)\le\sqrt{(a^2+1)(b^2+1)}$$
- [转]GDB
gdb调试coredump文件 gcc -g main.c //在目标文件加入源代码的信息 gdb a.out (gdb) start //开始调试 (gdb) n //一条一条执行 (gdb) st ...
- [树链剖分]hihocoder1883
描述 有一个无向图,有n个点,m1条第一类边和m2条第二类边.第一类边有边权,第二类边无边权.请为第二类的每条边定义一个边权,使得第二类边可能全部出现在该无向图的最小生成树上,同时要求第二类边的边权总 ...
- 架构师成长之路4.4-多维监控体系_zabbix
点击返回架构师成长之路 点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 架构师成长之路4.4-多维监控体系_zabbix 自学Zabbix之路[第 ...
- job.yml
job.yml apiVersion: batch/v1kind: Jobmetadata: name: myjobspec: completions: 6 parallelism: 2 templa ...