当前位置:首页 > 学习资源 > 讲师博文 > 一文读懂linux系统启动过程

一文读懂linux系统启动过程 时间:2024-01-10      来源:华清远见

讲linux启动过程前,我们先来聊一些背景知识:

Linux系统的线性地址中,0xA0000以上是用于图形接口和BIOS的内存,0xA0000以下的基本内存中,开头64KB是保留给BIOS和Linux内核引导的。因此,实际可用于内核映象的空间是508KB。内核映象是经过压缩的,可以生成小映象(zImage)或大内核(bzImage)。bzImage因为太大,会装载在地址为0x100000(1MB)的地方。无论哪种映象,解除压缩后的内核映象总是放在地址为0x100000(1MB)的地方。

接下来我们聊聊Linux系统启动过程:

1. 加载BIOS:BIOS是计算机硬件和软件的接口,当计算机打开电源后,Linux启动的第一步是BIOS加载。嵌入式产品中,这是一段系统引导程序,比较常见的是bootloader。

主要任务包括:硬件基本初始化、自搬移到内存、搬移内核到内存、搬移设备树到内存、传递内核启动参数

2. 加载内核(kernel):内核自解压:内核在加载到内存后,首先会进行自解压,确保内核代码正确地展开。

a. 内核合法性检测:内核代码会对CPU类型和机器类型进行检测,确保内核与目标硬件兼容。

b. 内核C部分运行:内核的C部分代码开始执行,这是内核的主要功能部分。

c. CPU、机器参数安装:内核会根据硬件配置安装CPU和机器参数。

d. 初始化硬件:内核会初始化中断、定时、终端、内存等最基本的硬件组件。

e. 创建核心进程:内核会创建一个核心进程,这是系统中的第一个进程,用于执行多任务调度。

3. 挂载rootfs:挂载文件系统 (mount_root) 

4. 运行应用程序:内核加载完毕后,会启动Linux系统中的第一个进程,即init进程。init进程的作用是设定Linux的启动等级。init进程是所有进程的起点,如果不启动init进程,其余所有进程都无法启用。Linux系统所有的进程都是init进程的子进程。系统开机过程中,许多程序需要开机启动,这些程序在Windows系统中被称为“服务”,而在Linux系统中被称为“守护进程”。系统初始化主要通过rc.sysinit来进行,rc执行完毕后返回init。基本系统环境设置好,各种守护进程也已经启动。init会打开6个终端,以便用户登录系统。

上一篇:menuconfig和Kconfig介绍

下一篇:STM32如何配置HAL库

戳我查看2020年嵌入式每月就业风云榜

点我了解华清远见高校学霸学习秘籍

猜你关心企业是如何评价华清学员的

干货分享
相关新闻
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2024 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部