嵌入式linux内核制作、根文件系统制作
嵌入式系统构成:

主要由bootloader、kernel、以及根文件系统三部分组成。
内核制作步骤:
制作嵌入式平台使用的linux内核制作方法与pc平台上的linux内核基本一致
1.清除原有配置与中间文件
x86:make distclean
arm:make distclean
2.配置内核
x86:make menuconfig
arm: make menuconfig ARCH=arm
3编译内核4
x86:make bzImage
arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux-
注意make zImage与make uImage的区别
make uImage会先产生zImage,然后再产生uImage(再zImage的基础上加上48字节的头,包括压缩方式等)
用tftp下载时,需要把zImage拷贝到/tftp文件夹下
根文件系统制作
文件系统包含两个层次的含义:
1、按照固定格式组织的目录与文件(看的见)
2、在特定的存储介质上管理这些目录和文件需要的数据(看不见)
制作文件系统步骤:
1、创建目录和文件
2、位创建好的目录和文件建立管理数据
mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules
2.创建设备文件
cd dev/
mknod -m console c 1 //mknod:创建设备文件
mknod -m null c
3、安装/etc
tar etc.tar.gz -C /XXX/rootfs
4、编译内核模块
进入linux内核目录下
make modules ARCH=arm CROSS_COMPILE=arm-linux- //编译的结果,内核模块.ko文件散落在各个角落中
5、安装内核模块
make modules_install ARCH=arm INSTALL_MOD_PATH=../rootfs //把.ko文件copy到lib/modules中
安装/编译busybox
Busybox: 嵌入式开发中的瑞士军刀
1.配置busybox
#make menuconfig //进入busybox目录下
a、进入Busybox Settings ->build Options->
选中 “Build busybox as a static binary”, 静态链接
Cross Compiler prefix (arm-linux-)
Installation Options->
选中 “Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
Busybox Installation Prefix (/xxx/rootfs)
该选项表明编译后的busybox的安装位置
编译安装busybox
make:编译
make install //安装
文件系统类型
linux引入虚拟文件系统VFS(Virtual File System)。

在嵌入式linux应用中,主要的存储设备为RAM和FLASH。常用的基于存储设备的文件系统类型包括:jffs2,yaffs,cramfs,ramdisk,ramfs等。
jffs2:日志闪存文件系统版本2,用于NOR flash,可读写、支持数据压缩的日志文件系统。
yaffs/ubitFS:用于nand flash设计的一种日志型文件系统,不支持数据压缩。
Cramfs:只读的压缩文件系统。(用的越来越少)
Ramdisk:将部分固定大小的内存当做块设备来使用。
Initramfs:将内存当做块设备用(现在用的多)
NFS:网络文件系统。 (开发阶段使用)
把zImagecopy到/tftp下
tftp 31000000 zImage
nand erase 200000 300000(offset size)
nand write 31000000 200000 300000(内存addr offset size)
利用Initramfs特点:每次添加一个功能都需要重新编译内核,重新下载。
嵌入式linux内核制作、根文件系统制作的更多相关文章
- Linux内核与根文件系统的关系1
Linux内核与根文件系统的关系开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题!一语破天机: “尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用 ...
- Linux内核与根文件系统的关系
开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题! 一语破天机: “尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具.这 ...
- Linux内核和根文件系统引导加载程序
续博文<u-boot之u-boot-2009.11启动过程分析> Linux内核启动及文件系统载入过程 当u-boot開始运行bootcmd命令.就进入Linux内核启动阶段,与u-boo ...
- debian下为stm32f429i-discovery编译uboot、linux内核和根文件系统
交叉编译器:arm-uclinuxeabi-2010q1 交叉编译器下载下来后解压,然后将其中bin文件夹路径加入到PATH变量中. 根据<debian下烧写stm32f429I discove ...
- linux内核挂载根文件系统时报错”VFS: Cannot open root device "ram0" or unknown-block(0,0): error -6“如何处理?
1. 通过error -6得到: #define ENXIO 6 /* No such device or address */ 2. 解决办法 使能CONFIG_BL ...
- 嵌入式linux加载引导内核和根文件系统的方法
总体来说,嵌入式Linux内核和根文件的引导与PC机差不多.嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我 们将内核和根文件系统直接烧入到Flash中(包括NOR和NAN ...
- 嵌入式linux内核和根目录制作
系统组成:Bootloader, Boot parameters, Kernel, Root filesystem嵌入式linux系统有linux内核与根文件系统两部分构成,两者缺一不可. 内核制作: ...
- 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导【转】
本文转载自:https://my.oschina.net/freeblues/blog/596448 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导 buildroot 是 ...
- linux根文件系统制作
在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...
随机推荐
- redis客户端使用密码
./redis-cli -h 127.0.0.1 -p 6379 -a password
- Nginx虚拟主机配置教程
说明:配置之前先把域名解析到服务器IP地址上 站点1:bbs.osyunwei.com 程序所在目录/data/osyunwei/bbs 站点2:sns.osyunwei.com 程序所在目录/d ...
- jdbc批处理
批量处理允许将相关的SQL语句分组到批处理中,并通过对数据库的一次调用来提交它们,一次执行完成与数据库之间的交互. 一次向数据库发送多个SQL语句时,可以减少通信开销,从而提高性能. 不需要JDBC驱 ...
- 如何打开或关闭windows的测试模式
百度经验:jingyan.baidu.com windows的测试模式就如同字面意思一样,是一个测试用的模式.这个模式的标志主要在有非官方驱动或系统关键文件运行时显示.例如安装了大内存补丁(32位系统 ...
- <转>与EM相关的两个算法-K-mean算法以及混合高斯模型
转自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html http://www.cnblogs.com/jerrylead/ ...
- AndroidWear开发之下载SDK[Android W/Android L]
Android L Developer Preview SDK发布了,但是天朝还是无法更新到.打开SDK Manager依旧一成不变,这时候就需要利器了. 第一步: 打开Goagent,不要说不知道什 ...
- 解决 ssh 登录到ubuntu server 慢的问题
最近在服务器上使用ubuntu系统,服务器上开启sshd服务,在客户端处使用ssh登录到服务器的时候出现卡顿的现象. 在网上搜索了解决方案,主要是: 1. 修改服务器的 /etc/ssh/sshd_c ...
- web图片100%宽度自适应,高度不塌陷
一般在web端图片100%自适应,在页面加载的时候存在高度塌陷的问题 解决这个问题其实很简单,用padding-top设置百分比值来实现自适应,公式如下 padding-top = (Image He ...
- 【BZOJ5085】最大 鸽巢原理
[BZOJ5085]最大 Description 给你一个n×m的矩形,要你找一个子矩形,价值为左上角左下角右上角右下角这四个数的最小值,要你最大化矩形的价值. Input 第一行两个数n,m,接下来 ...
- SpringMVC中 解决@ResponseBody注解返回中文乱码
问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter ...