vmlinux的启动过程,之所以是vmlinux,是因为其他格式的内核在进行与vmlinux相同的流程之前会有一些特有的操作。
        比如对于压缩格式的内核zImage,它首先会进行自解压得到vmlinux,然后执行vmlinux开始“正常的”启动流程。
    
    Linux内核启动流程可以分为两部分:架构/单板相关的引导过程、后续的通用启动过程。
    
    第一阶段引导阶段通常使用汇编语言编写
    (1)检查内核是否支持当前架构的处理器,然后检查是否支持当前单板
    (2)为调用start_kernel函数做准备
        ①设置页表、使能MMU,连接内核态使用的虚拟地址
        ②复制数据段、清除BSS段,准备调用C函数start_kernel的环境
    
    第二阶段主要使用C语言编写
    (1)进行内核初始化
    (2)调用rest_init函数创建并启动系统第一个进程:init进程
    
    第一阶段:
    确定内核是否支持该架构->
    确定是否支持该单板->
    建立一级页表->
    禁止ICache、DCache、数据Cache、指令Cache(cpu寄存器初始化比内存快,关闭cache避免取址异常)->
    使能MMU->
    复制数据段、清除BSS段、设置栈指针、保存CPU ID到processor_id变量
    保存机器类型id(单板型号)到__machine_arch_type变量,调用start_kernel函数
    
    第二阶段:
    输出linux版本信息->设置与相关体系相关的环境->
    初始化控制台->
    启动init进程
    
linux内核启动的目的是为了启动应用程序,要找到应用程序首先要找到根文件系统。

Linux内核启动流程(vmlinux)相关推荐

  1. 【内核】linux内核启动流程详细分析【转】

    转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...

  2. 【内核】linux内核启动流程详细分析

    Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...

  3. linux内核启动流程(文章最后流程图)

    原文:linux内核启动流程 本文以Linux3.14版本源码为例分析其启动流程.各版本启动代码略有不同,但核心流程与思想万变不离其宗. 内核映像被加载到内存并获得控制权之后,内核启动流程开始.通常, ...

  4. linux内核启动第一个进程,linux内核启动流程

    描述 Linux的启动代码真的挺大,从汇编到C,从Makefile到LDS文件,需要理解的东西很多.毕竟Linux内核是由很多人,花费了巨大的时间和精力写出来的.而且直到现在,这个世界上仍然有成千上万 ...

  5. Linux内核启动流程(简介)

    1. vmlinux.lds 首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的: 第 ...

  6. Linux内核启动流程(待完善)

    文章目录 一.Linux内核自解压过程 二.Linux内核启动第二阶段stage1 2.1.linux系统启动入口函数(stext) 2.2.内核初始化阶段(start_kernel) 2.3.2 r ...

  7. Linux 内核启动流程

    转载自 http://wenku.baidu.com/link?url=KpOdULJu1CxP1swqRs_Szoyg5r_8rje4N08o4QtB5L9QlPjWesTYlrTPgkxPOriF ...

  8. Linux内核启动流程分析(一)【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-3380535.html 很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接 ...

  9. 低温linux内核启动readl,Linux内核启动流程分析(一)

    很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) 1.依据arch/ar ...

最新文章

  1. C# 汉字编码GB2312转换
  2. 两个字符串之间的复制,不使用strcopy()函数
  3. 从通用到专用,5G时代IP核的新故事
  4. Xml解析之PULL解析 例1
  5. JDK10的新特性:本地变量类型var
  6. Linux Shell脚本专栏_查看网卡的实时流量_06
  7. python 类继承和组合_python类与对象的组合与继承
  8. 【活体检测】二分类活体检测评价方式
  9. 微软软件推送服务器,微软将通过系统更新功能向大部分用户推送新版Microsoft Edge浏览器-...
  10. 北京工商大学c语言复试试题,2016年北京工商大学计算机与信息工程学院C语言程序设计复试笔试仿真模拟题...
  11. 中国人工智能论文首超美国,背后的秘密竟然是……
  12. 杉车大数据:禁售燃油车政策终于实施了!!!
  13. ERP系统BOM详细解析(一)
  14. 域名实名认证中的常见问题
  15. 视频工厂:如何拍摄优质的餐饮宣传片之品牌植入篇
  16. 写给大家看的设计模式 1
  17. modprobe命令用于智能地向内核中加载模块或者从内核中移除模块
  18. 嵌入式计算机系统简述,嵌入式系统定义_简述嵌入式系统的定义和组成
  19. Dirichlet Process Dirichlet Distribution
  20. shell脚本 简介 及 第一个脚本程序

热门文章

  1. 考虑光伏发电的配电网重构策略研究
  2. 运动用什么耳机最好、推荐六款最好的运动耳机
  3. SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过...
  4. mysql导入表的语法错误_导入mysql时出现语法错误
  5. 探索新科技:3DVR电子楼书引领视觉体验革命
  6. CIO把老板“拖”到信息化中的“三板斧”
  7. 织梦php源码,织梦 | php教程|php源码|php学习
  8. 绿色营销网站织梦模板源码
  9. 《机器学习超参数调整利器》贝叶斯优化算法
  10. Python求两个list的交集、并集、补集、对称差集的两种方法