openwrt的编译系统是如何制作根文件系统的
答:分析以下makefile即可获取整个过程
以nxp layerscape系统的编译过程为例
1.分析target/linux/layerscape/image/Makefile的最后一句,这是一个好的开端
$(eval $(call BuildImage))
2.宏BuildImage定义在哪里呢?定义在include/image.mk中,简化后如下
define BuildImage
...
$(foreach device,$(TARGET_DEVICES),$(call Device,$(device)) install-images: kernel_prepare $(foreach fs,$(filter-out $(if $(UBIFS_OPTS),,ubifs),$(TARGET_FILESYSTEMS) $(fs-subtypes-y)),$(KDIR)/root.$(fs))
$(foreach fs,$(TARGET_FILESYSTEMS),
$(call Image/Build,$(fs))
)
...
endef
3.在宏定义BuildImage中会由上到下根据依赖依次执行,我们首先关注
$(foreach device,$(TARGET_DEVICES),$(call Device,$(device))
4.宏Device又定义在哪里呢?同样定义在include/image.mk文件中,定义简化后如下
define Device
...
$(call Device/$(if $(DUMP),Dump,Build),$()) endef
5.此时会执行宏Device/Dump或宏Device/Build,那么以执行宏Device/Build为例,宏Device/Build简化后如下
define Device/Build
... $$(eval $$(foreach compile,$$(COMPILE), \
$$(call Device/Build/compile,$$(compile),$()))) $$(eval $$(foreach image,$$(IMAGES), \
$$(foreach fs,$$(filter $(TARGET_FILESYSTEMS),$$(FILESYSTEMS)), \
$$(call Device/Build/image,$$(fs),$$(image),$()))))
endef
6.接着执行宏Device/Build/compile和Device/Build/image,这两个宏都定义在include/image.mk中,在Device/Build/image会做根文件系统制作方面的工作
openwrt的编译系统是如何制作根文件系统的的更多相关文章
- 使用Busybox-1.2.0制作根文件系统
使用Busybox-1.2.0制作根文件系统 cross-3.3.2 make-3.8.1 STEP 1: 创建根文件系统目录,主要包括以下目录/bin,/etc,/dev,/mnt,/sbin,/u ...
- 利用busybox制作根文件系统
实际项目中可以使用Buildroot制作根文件系统 1.busybox源码下载及配置 https://busybox.net/downloads/ 1.1.修改Makefile (1) ARCH = ...
- 第4阶段——制作根文件系统之分析init进程(2)
本节目标: (1) 了解busybox(init进程和命令都放在busybox中) (2) 创建SI工程,分析busybox源码来知道init进程做了哪些事情 (3) 分析busybox中init进 ...
- mkyaffs2image制作根文件系统、使用NFS挂载虚拟机目录(2)
1.制作根文件系统及nfs烧写 1.1 先解压文件系统,/wok/nfs_root 目录下是已经构造好的各种文件系统:① fs_mini.tar.bz2 是最小的根文件系统,里面的设备节点是事先建立好 ...
- 制作根文件系统之Busybox init进程的启动过程分析
先来介绍一下什么是Busybox:它是将众多的UNIX命令集合进一个很小的可执行程序中. 在制作根文件系统之内核如何启动init进程中遗留了一个问题是/linuxrc是内核启动的第一个应用程序,那么它 ...
- 制作根文件系统之内核如何启动init进程
start_kernel其实也是内核的一个进程,它占用了进程号0,start_kernel的内容简写如下: asmlinkage void __init start_kernel(void) //内核 ...
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
http://blog.csdn.net/yinjiabin/article/details/7489563 根文件系统一般包括: 1)基本的文件系统结构,包含一些必须的目录,比如:/dev,/pro ...
- 通过busybox制作根文件系统
通过busybox制作根文件系统可以自定义选项,在制作的根文件系统中添加需要的命令,指定生成的根文件系统到相应的目录下. 一. 根文件系统的获取方式--->官网: https://busybox ...
- 通过busybox制作根文件系统详细过程
我在之前的uboot通过NFS挂载ubuntu根文件系统中也有实现过根文件系统的制作,那只是在ubuntu官网已经做好的根文件基础上安装一些自己所需的软解而已.而使用busybox制作根文件系统可以自 ...
随机推荐
- jquery筛选数组方法——$.grep(),$.map()
function greptest() { var arr = "1,2,3,'',one,two,three".split(','); var newarr = $.grep(a ...
- Web容器与Servlet
转自:http://www.360doc.com/content/10/0713/20/495229_38798294.shtml Web服务器与Web应用层属于不容两个范畴,为了让他们两写作,首先应 ...
- AJAX Form Submit Framework 原生js post json
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest <!doctype ht ...
- Apache Kafka源码分析 – ReplicaManager
如果说controller作为master,负责全局的事情,比如选取leader,reassignment等那么ReplicaManager就是worker,负责完成replica的管理工作 主要工作 ...
- Spark源码分析 – SparkEnv
SparkEnv在两个地方会被创建, 由于SparkEnv中包含了很多重要的模块, 比如BlockManager, 所以SparkEnv很重要 Driver端, 在SparkContext初始化的时候 ...
- Spark源码分析 – DAGScheduler
DAGScheduler的架构其实非常简单, 1. eventQueue, 所有需要DAGScheduler处理的事情都需要往eventQueue中发送event 2. eventLoop Threa ...
- phpstudy2016 redis扩展 windows
第一步,查看环境的信息. 第二步,根据线程是否安全.架构32位或64位下载redis扩展. http://pecl.php.net/package-stats.php 第三步,php_redis.dl ...
- node+express+http-proxy-middleware做代理
最近,不赶着做项目,于是想着怎样做公司的前后端分离,这个时候想到了nodejs,于是打算今天做一个代理的demo,其实代码很简单,但是一直卡在一个地方,现在问题解决了,贴上代码和截图. html &l ...
- android 读取联系人
设置读取权限 <uses-permission android:name="android.permission.READ_CONTACTS" /> <u ...
- yii2 框架中的即点即改入库
视图层 <td><span class='num' id="<?php echo $value['goods_attr_id']?>">< ...