ARM64的启动过程之(一):内核第一个脚印

作者:linuxer 发布于:2015-10-10 15:06

分类:ARMv8A Arch

一、前言

kernel的整个启动过程涉及的内容很多,不可能每一个细节都描述清楚,因此我打算针对部分和ARM64相关的启动步骤进行学习、整理,并方便后续查阅。本文实际上描述在系统启动最开始的时候,bootloader和kernel的交互以及kernel如何保存bootloader传递的参数并进行校验,此外,还有一些最基础的硬件初始化的内容。

本文中的source来自4.1.10内核,这是一个long term的版本,后续一段时间的文章都会基于这个long term版本进行。

二、进入kernel之前

系统启动过程中,linux kernel不是一个人在战斗,在kernel之前bootloader会执行若干的动作,然后把控制权转移给linux kernel。需要特别说明的是:这里bootloader是一个宽泛的概念,其实就是为kernel准备好执行环境的那些软件,可能是传统意义的bootloader(例如Uboot),也可能是Hypervisor或者是secure monitor。具体bootloader需要执行的动作包括:

1、初始化系统中的RAM并将RAM的信息告知kernel

2、准备好device tree blob的信息并将dtb的首地址告知kernel

3、解压内核(可选)

4、将控制权转交给内核。当然,bootloader和kernel的交互的时候需求如下:

MMU = off, D-cache = off, I-cac

linux内核启动第一个进程,ARM64的启动过程之(一):内核第一个脚印相关推荐

  1. OpenHarmony恢复启动子系统init进程之服务启动

    首先执行job,如果开发者的进程在启动之前需要首先执行一些操作(例如创建文件夹),可以把操作放到pre-init中先执行.一般pre-init阶段主要是为后面启动服务做准备的,比如挂载目录,设置权限, ...

  2. linux系统启动的第一个进程是,CentOS6开机启动过程详解

    CentOS 6 开机流程--Linux由kernel和rootfs组成.kernel负责进程管理.内存管理.网络管理.驱动程序.文件系统.安全等;rootfs由程序和glibc组成,完善操作系统的功 ...

  3. linux线程能删除自身吗,Linux内核本身和进程的区别 内核线程、用户进程、用户...

    这个概念是很多人都混淆的了,我也是,刚开始无法理解OS时,把Linux内核也当做一个进程. 其实内核本身不是以进程形式存在的,最多在初始化的过程中表现得就像一个进程,但是内核绝对没有进程的数据结构ta ...

  4. Linux内核如何私闯进程地址空间并修改进程内存

    进程地址空间的隔离 是现代操作系统的一个显著特征.这也是区别于 "古代"操作系统 的显著特征. 进程地址空间隔离意味着进程P1无法以随意的方式访问进程P2的内存,除非这块内存被声明 ...

  5. Android 系统(243)---Android进程系列第一篇---进程基础

    Android进程系列第一篇---进程基础 内容预览.png 概述: 本文主要讲解进程基础,更深入的认识有血有肉的进程,内容涉及进程控制块,信号,进程FD泄露等等.仅供参考,欢迎指正. 一.从Linu ...

  6. C# Winform 启动和停止进程

    启动和停止进程 一.启动进程 方法1: (1)       创建一个Process组件的实例,例如: Process myProcess = new Process(); (2)       设置其对 ...

  7. arm linux内核启动过程,ARM64的启动过程之(一):内核第一个脚印

    ARM64的启动过程之(一):内核第一个脚印 作者:linuxer 发布于:2015-10-10 15:06 分类:ARMv8A Arch 一.前言 kernel的整个启动过程涉及的内容很多,不可能每 ...

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

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

  9. ARM64的启动过程之(一):内核第一个脚印

    一.前言 kernel的整个启动过程涉及的内容很多,不可能每一个细节都描述清楚,因此我打算针对部分和ARM64相关的启动步骤进行学习.整理,并方便后续查阅.本文实际上描述在系统启动最开始的时候,boo ...

最新文章

  1. matlab教程lqg函数与收敛速度,科学网—Matlab编写由加速度积分得到速度和位移函数 - 王德才的博文...
  2. 寄存器是中央处理器内的组成部分
  3. laravel 使用事件系统统计浏览量
  4. 反客为主 ,Linux 成为微软 Azure 上最流行的操作系统
  5. win11非活动窗口如何设置 Windows11设置非活动窗口的步骤方法
  6. 阿里云-CentOS7安装Vsftpd
  7. 【redis源码】(五)Ziplist
  8. 路由器PPPoE拨号密码(ADSL密码)找出方法 ZT
  9. python中xlrd.open_workbook_python处理exce方法:xlrd、openyxl
  10. 第06章 软件架构设计 之 软件架构风格
  11. HMC_Hamiltonian Monte Carlo 推导,代码
  12. linux超级管理员密码设置
  13. 用the_excerpt处理中文文章字数限制的方法
  14. 青海湖:月光尽情倾洒惹人念
  15. ps4移植android游戏,安卓玩PS4游戏 remote play安装教程
  16. The server time zone value ‘‘ is unrecognized or represents more than one time zone
  17. 和我一起写lua - 确认操作系统
  18. ps中颜色和图片本身颜色不一样,白色呈米色
  19. GPS卫星的信号结构
  20. Centos7 本地IOS配置本地yum源

热门文章

  1. 184、【栈与队列】leetcode ——739. 每日温度(C++版本)
  2. 米家扫地机器人怎么加水_大神分析米家扫地机器人1T到底怎么样?优缺点评测,不看后悔!...
  3. 京东拼购启动2019年首轮招商 六大流量入口+社交玩法助力商家成长
  4. POI包操作excel表单的克隆sheet和打印区域
  5. 快速排序(Java递归实现)
  6. 设置360浏览器打开html 默认显示为极速模式
  7. Java | GUI 图形用户界面
  8. Android百度文字识别bitmap,Android集成Tesseract OCR实现图片文字识别
  9. Linux 服务器(二)-linux安装方法之Centos安装介绍——Windows中制作USB启动盘 MacOS中制作USB启动盘
  10. 机器学习中的数学——行列式