Linux内核启动流程(vmlinux)
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)相关推荐
- 【内核】linux内核启动流程详细分析【转】
转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...
- 【内核】linux内核启动流程详细分析
Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...
- linux内核启动流程(文章最后流程图)
原文:linux内核启动流程 本文以Linux3.14版本源码为例分析其启动流程.各版本启动代码略有不同,但核心流程与思想万变不离其宗. 内核映像被加载到内存并获得控制权之后,内核启动流程开始.通常, ...
- linux内核启动第一个进程,linux内核启动流程
描述 Linux的启动代码真的挺大,从汇编到C,从Makefile到LDS文件,需要理解的东西很多.毕竟Linux内核是由很多人,花费了巨大的时间和精力写出来的.而且直到现在,这个世界上仍然有成千上万 ...
- Linux内核启动流程(简介)
1. vmlinux.lds 首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的: 第 ...
- Linux内核启动流程(待完善)
文章目录 一.Linux内核自解压过程 二.Linux内核启动第二阶段stage1 2.1.linux系统启动入口函数(stext) 2.2.内核初始化阶段(start_kernel) 2.3.2 r ...
- Linux 内核启动流程
转载自 http://wenku.baidu.com/link?url=KpOdULJu1CxP1swqRs_Szoyg5r_8rje4N08o4QtB5L9QlPjWesTYlrTPgkxPOriF ...
- Linux内核启动流程分析(一)【转】
转自:http://blog.chinaunix.net/uid-25909619-id-3380535.html 很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接 ...
- 低温linux内核启动readl,Linux内核启动流程分析(一)
很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下.由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) 1.依据arch/ar ...
最新文章
- C# 汉字编码GB2312转换
- 两个字符串之间的复制,不使用strcopy()函数
- 从通用到专用,5G时代IP核的新故事
- Xml解析之PULL解析 例1
- JDK10的新特性:本地变量类型var
- Linux Shell脚本专栏_查看网卡的实时流量_06
- python 类继承和组合_python类与对象的组合与继承
- 【活体检测】二分类活体检测评价方式
- 微软软件推送服务器,微软将通过系统更新功能向大部分用户推送新版Microsoft Edge浏览器-...
- 北京工商大学c语言复试试题,2016年北京工商大学计算机与信息工程学院C语言程序设计复试笔试仿真模拟题...
- 中国人工智能论文首超美国,背后的秘密竟然是……
- 杉车大数据:禁售燃油车政策终于实施了!!!
- ERP系统BOM详细解析(一)
- 域名实名认证中的常见问题
- 视频工厂:如何拍摄优质的餐饮宣传片之品牌植入篇
- 写给大家看的设计模式 1
- modprobe命令用于智能地向内核中加载模块或者从内核中移除模块
- 嵌入式计算机系统简述,嵌入式系统定义_简述嵌入式系统的定义和组成
- Dirichlet Process Dirichlet Distribution
- shell脚本 简介 及 第一个脚本程序
热门文章
- 考虑光伏发电的配电网重构策略研究
- 运动用什么耳机最好、推荐六款最好的运动耳机
- SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过...
- mysql导入表的语法错误_导入mysql时出现语法错误
- 探索新科技:3DVR电子楼书引领视觉体验革命
- CIO把老板“拖”到信息化中的“三板斧”
- 织梦php源码,织梦 | php教程|php源码|php学习
- 绿色营销网站织梦模板源码
- 《机器学习超参数调整利器》贝叶斯优化算法
- Python求两个list的交集、并集、补集、对称差集的两种方法