Linux Kernel系列一:开篇和Kernel启动概要
前言
近期几个月将Linux Kernel的大概研究了一下,以下须要进行深入具体的分析。主要将以S3C2440的一块开发板为硬件实体。大概包含例如以下内容:
1 bootloader分析,以uboot为主,结合详细开发板的情况。我的目标是解释清楚uboot的工作原理(说实话,分析过程中不太想被硬件绑架,可是须要以一个实际的样例
来做分析)
2 kernel部分,这就非常多内容了。打算从kernel启动的流程開始分析。
3 除kernel本身外,还有非常多的知识,比如ld的输入script分析等,这里会一起介绍。
kernel启动流程概要
- vmlinux,这个是未压缩、未strip的内核模块,ELF结构
- Image:二进制、未压缩、可是strip后的内核
- head.o:ARM相关的,由BL将控制权转交给它。即前面提到的head.S生成
- pigg.gz:Image文件的gzip压缩
- piggy.o:由piggy.S生成,这个S文件通过include Bin方式将Image包括进来。piggy的意思就是背负、肩扛。非常形象不是?
- misc.o:从上面看,涉及到一些解压方面的内容,而misc提供一些辅助函数
- vmlinux:悲催.....这个文件是head+pigg+misc构成的vmlinux。名字一样不是?真的非常混淆!
- zImage:再由上面这个vmlinux压缩而来

- BL仅仅是初始化硬件,不依赖linux,不处理linux
- BSL在BL后执行,依赖linux,由于要解压linux。另外一个重要点就是BSL须要为LINUX的执行建立环境
- head.O:初始化CPU等工作
- misc.O:解压,重定位(比如将kernel移动到另外一个位置上) decompress_kernel
- 其它工作

- 刚才仅仅是初始化了cpu相关的,而详细和板子相关的由start_arch运行

Linux Kernel系列一:开篇和Kernel启动概要的更多相关文章
- linux kernel系列四:嵌入式系统中的文件系统以及MTD
本节介绍File System和MTD技术 一 FS 熟知的FS有ext2,3,4.但是这些都是针对磁盘设备的.而ES中一般的存储设备为Flash,由于Flash的特殊性: Flash存储按照Bloc ...
- Linux Kernel系列三:Kernel编译和链接中的linker script语法详解
先要讲讲这个问题是怎么来的.(咱们在分析一个技术的时候,先要考虑它是想解决什么问题,或者学习新知识的时候,要清楚这个知识的目的是什么). 我在编译内核的时候,发现arch/arm/kernel目录下有 ...
- 嵌入式之Linux系统裁剪和定制---(kernel+busyboxy+dropbear+nginx)
本文将介绍通过完全手动定制内核,在此基础上添加 busybox ,并实现远程登陆,使裁剪的 linux 能够运行 nginx . 在此之前介绍一下 linux 系统的启动流程. linux系统启动流程 ...
- Linux下USB烧写uImage kernel
Linux下USB烧写uImage kernel 1.启动开发板,进入u-boot:(如果开发板中没有系统,可以通过用SD卡方式启动开发板进入) U-Boot 2011.06 (Mar 19 ...
- Samsung_tiny4412(驱动笔记01)----linux 3.5,U-Boot,Busybox,SD卡启动环境搭建
/*********************************************************************************** * * linux 3.5,U ...
- (4)top详解 (每周一个linux命令系列)
(4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...
- (2)free详解 (每周一个linux命令系列)
(2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...
- linux入门系列12--磁盘管理之分区、格式化与挂载
前面系列文章讲解了VI编辑器.常用命令.防火墙及网络服务管理,本篇将讲解磁盘管理相关知识. 本文将会介绍大量的Linux命令,其中有一部分在"linux入门系列5--新手必会的linux命令 ...
- ARM linux解析之压缩内核zImage的启动过程
ARM linux解析之压缩内核zImage的启动过程 semilog@163.com 首先,我们要知道在zImage的生成过程中,是把arch/arm/boot/compressed/head.s ...
随机推荐
- [Leetcode][Python]46: Permutations
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 46: Permutationshttps://leetcode.com/pr ...
- Jenkins的安全控制
在默认配置下,Jenkins是没有安全检查的.任何人都可以以匿名用户身份进入Jenkins,设置Jenkins和Job,执行build操作.但是,Jenkins在大多数应用中,尤其是暴露在互联网的应用 ...
- KMP快速模式匹配的java实现
假期实在无聊赖啊.把这个算法实现了一下即算是打发时间也算练练手了. KMP算法的关键是用归纳法计算失败函数.网上很详细了.下面直接给出代码. /** * * @author Vincent * */ ...
- Android 自己定义 TextView drawableTop 图标与文字左对齐(效果图)
public class DrawableTopLeftTextView extends TextView { private Paint mPaint; private float fFontHei ...
- OAuth2.0基本流程
用户请求客户端>客户端通过在授权服务器上申请的apikey和apisceret>登录访问资源服务器
- swift基本用法-for循环遍历,遍历字典,循环生成数组
// Playground - noun: a place where people can play import UIKit //--------------------------------- ...
- android _scrollview嵌套listview出现高度显示不全解决方案
只要在工具类里写上这一段代码:/** * scrollview嵌套listview显示不全解决 * @param listView */ public static void setListViewH ...
- math方法集合
math.abs(x) 返回数的绝对值.math.acos(x) 返回数的反余弦值.math.asin(x) 返回数的反正弦值.math.atan(x) 以介于 -PI ...
- android: ListView历次优化
第一版: ListView一屏显示多少对象其内部就创建多少View对象.滑动时退出的缓存对象留给滑进去时调用getView传的convertView.因为如果每次都findViewById查找创建视图 ...
- log4net简单用法
一.NuGet在Server,mvc中添加Common.Logging和common.Logging.Log4Net如下图 二.在Server层创建logger类 <?xml version=& ...