linux启动流程概述

uboot启动流程概述_Linux 的启动流程 本篇的重点是讲解设备和驱动的启动流程,设备和驱动的流程是整个内核启动的核心,也是工作中最常面对的问题。出于知识点的系统性考虑,在进入主题之前我们先看下整个 Linux 在 ARM 中的启动流程如何。Uboot 的启动流程ARM Linux 的启动流程大致为:Uboot → Kernel → Root filesystem。Uboot 在上电的时候就拿到 CPU 的控制权,实现了硬件的初始化。具体是... 阅读详情

参考:《鸟哥的linux私房菜》


1、BIOS阶段

主板上的BIOS为块flash或EEPROM程序,他会从主板上的CMOS硬件资讯,这些硬件资讯是可以通过BIOS程序修改。、、

BIOS进行启动自我测试(Power-on self test,POST),然后开始运行硬件侦测的初始化,并配置PnP装置,之后定义出可启动装置。即

根据BIOS中设置的启动目标装置(硬盘还是U盘还是光盘),进入阶段2

2、boot loader阶段

读取并运行配置的第一个启动装置中MBR去的的Boot loader(即grub,spfdisk等程序),由于每个文件系统(filesystem和分割槽并不等价,参见鸟哥的linxu私房菜)第一个扇区为启动扇区(boot sector)(512bytes),而启动扇区中包含MBR(446bytes)和分割表(partition table)(64byte),由于MBR大小的限制,例如grub 的配置文件就只能放在MBR之外的地方了。

boot loader转移控制权给kernel

3、kernel阶段

核心解压缩到主存当中,并开始测试与驱动各个周边装置,而不一定会使用IBISO侦测到的硬件资讯。

/boot分区的挂载是通过BIOS实现,当控制权交给boot loader,由于kernel在/boot分区中,可以直接挂载,但kernel需要动态加载核心模块(可以理解为驱动程序),而核心某块一般在/目录中,而/目录的分区还没有挂载,但此时核心是没法识别硬盘的,这就需要虚拟文件系统(Inital RAM Disk,initrd)来帮助加载核心模块。

而虚拟文件系统同样是位于/boot,是透过BIOS加载的,等解压缩到内存中,会模拟根目录,并提供一只可运行的程序来加载核心模块。

4、init程序阶段

linux核心初始化各种硬件以后,linux计入保护模式(protected mode)加载操作系统,然后初始化各种核心数据结构像i-node和文件表(file tables)等,这个进程PID为0

它创建init进程(PID为1),即执行/sbin/init程序(一只可执行程序),

init的处理流程的配置在/etc/inittab文件中(不过在Fedora15中性的启动方式systemd启动被使用,不再使用下面的/etc/inittab文件,关于systemd参考这里)

关于/etc/inittab文件的配置参见

鸟哥的linux私房菜,该文件配置了是否默认runlevel,以及该级别需要运行哪些程序,以及图形终端是否打开,tty情况等。


runlevel(来自鸟哥的linux私房菜):

  • 0 - halt (系统直接关机)
  • 1 - single user mode (单人维护模式,用在系统出问题时的维护)
  • 2 - Multi-user, without NFS (类似底下的 runlevel 3,但无 NFS 服务)
  • 3 - Full multi-user mode (完整含有网络功能的纯文字模式)
  • 4 - unused (系统保留功能)
  • 5 - X11 (与 runlevel 3 类似,但加载使用 X Window)
  • 6 - reboot (重新启动)


  • init 的处理流程

事实上 /etc/inittab 的配置也有点类似 shell script 啦,因为该文件内容的配置也是一行一行的从上往下处理的, 因此我们可以知道 CentOS 的 init 依据 inittab 配置的处理流程会是:

  1. 先取得 runlevel 亦即默认运行等级的相关等级 (以鸟哥的测试机为例,为 5 号);
  2. 使用 /etc/rc.d/rc.sysinit 进行系统初始化
  3. 由於 runlevel 是 5 ,因此只进行『l5:5:wait:/etc/rc.d/rc 5』,其他行则略过
  4. 配置好 [ctrl]+[alt]+[del] 这组的组合键功能
  5. 配置不断电系统的 pf, pr 两种机制;
  6. 启动 mingetty 的六个终端机 (tty1 ~ tty6)
  7. 最终以 /etc/X11/perfdm -nodaemon 启动图形介面啦
这里每个过程更进一步的细节,请参考 鸟哥的linux私房菜

5、登录过程

在login提示符下,按下<Enter>,gettry进程创建一个子进程(名字是你输入的登录名),提示输入密码并验证。如果正确,则该子进程再创建一个子进程(它将转变成你的登录shell);如果验证失败,该子进程终止,控制权重新回到getty.


linux启动和服务管理(1)Debian系统启动流程概述 作为系统管理员,粗略地了解 Debian 系统的启动和配置方式是明智的。尽管准确的细节在安装的软件包及对应的文档中,但这些知识对我们大多数人来说都是必须掌握的。 笔者基于自己和其他人的过往及现在的知识,尽己所能地提供关于 Debian 系统的知识要点及其配置的快速概览作为读者的参考。由于 Debian 系统在不断地更新中,系统的状况可能已经有所变化。在对系统做任何修改之前,请参考各个软件包的最新文档。 man bootup(7) 介绍了基于 systemd 的系统启动流程。(近期的 Debian) man 阅读详情

相关推荐

学习心得——COMSOL Multiphysics with MATLAB联合仿真及寻优计算

学习心得——COMSOL Multiphysics with MATLAB联合仿真及寻优计算

weixin_41678956的博客 8657

简述Linux系统的启动过程

(1) 加载BIOS(Basic Input/Output System): 当启动电源时,计算机首先加载 BIOS 引导系统,从硬盘引导会查找 MBR ,并且执仃记录在 MBR 上的程序,这个程序通常就是操作系统的 Loader 。 Loader 的主要功能就是用米指ボ系统在启动之后要加载那个系统,目前有许多不同种类的 Loader ,如果是 Linux 的 Loader 则是 GRUB 或LIL0。其中,MBR Master Boot Record 的缩写,中文意为主引导记录。

qq_56731156的博客 1377

单相PWM整流器四象限运行原理

简述单相PWM整流器四象限运行原理。

m0_75208156的博客 8297

Linux系统启动流程

Linux系统启动流程 Linux系统从按下开机按钮到等待用户输入用户名、密码,这中间到底发生了什么,本文接下来将要简单讲解一下Linux系统的启动过程。 Linux系统启动流程大致是这样的: BIOS(Boot Sequence) --> MBR(GRUB,446) --> Kernel --> initrd --> (ROOTFS)/sbin/init(/etc/

云笔记,记录工作学习中遇到的问题,希望对你有帮助 5445

关于示波器测485串口波特率的使用方法总结

之前没有用过示波器,更不知道怎么来测试串口的波特率,结果遇到一客户说我们产品的波特率达不到9600,只有9100,为了验证这一说法,我们只能自己测试一下。说明:产品通过485接电脑,用串口调试助手接收都是没有问题的,用客户的设备接收就有问题。 下面说一下示波器测波特率的方法步骤: 显示高低跳变的情况: 1.先把示波器表笔的地线(夹子)夹485B,表笔夹485A。 2.往串口发送数据:如发送

lianxue1986的专栏 3万+

3. ChaosBlade-Box平台安装

参考自:https://chaosblade.io/docs/about-chaosblade/box-introduce/通过ChaosBlade-Box可实现chaosblade等已托管工具自动化部署,按照社区的建立的混沌实验模型统一实验场景,根据主机、Kubernetes、应用来划分目标资源,通过目标管理器来控制,在实验创建页面,可以实现白屏化的目标资源选择。

lldhsds的专栏 2485

linux启动流程

linux的基础启动流程 1. 加载BIOS的硬件信息,并获取第一个启动设备的代号。 2. 读取第一个启动设备的MBR的引导加载程序(即lilo、grub、spfdisk等)的启动信息。 3. 加载操作系统的核心信息,核心开始解压,并尝试驱动所有的硬件设备。 4. 核心执行init程序并获得运行信息。 5. init执行/etc/rc.d/rc.sysinit文件。 6. 启动核心的外

wangwenwen的专栏 3559

Conda换源全攻略:从清华源到默认源的保姆级切换教程(附常见问题解决)

本文提供Conda换源的完整教程,详细讲解如何从清华源切换到默认源,包括配置步骤、常见问题解决方案及高级技巧。针对国内开发者遇到的下载速度慢问题,清华源提供了高速稳定的解决方案,同时文章也介绍了恢复默认源的方法和多种镜像源选择。

weixin_28837817的博客 939

Linux 系统启动过程详解

如果有一天你们公司很重要的一台Linux服务器突然启动不了了,重装系统又浪费时间,如果是启动过程有问题,那么你知道启动过程可以快速定位系统问题,很快就可以解决。Linux 系统启动是一个复杂而有序的过程,它是系统从硬件启动到软件运行的全过程。了解 Linux 的启动过程可以帮助我们更好地理解操作系统如何管理计算机资源,以及如何优化系统性能。本文将详细介绍 Linux 系统启动的各个阶段。一、内核引...

fastboot 1052

170、电机控制中的温升测试

本文以一次IGBT炸管事故为切入点,深入剖析电机控制中温升测试的实质:不仅是温度测量,更是对铜损、铁损、散热效率等热管理问题的系统验证。作者强调测试前热电偶布置、环境记录、预运行的重要性,提出实时监控电流谐波、绕组电阻、散热梯度等关键参数,并通过损耗分离与冷却系统实测,揭示真实热源。结合温升曲线异常分析与经验建议,强调留余量、仿真结合实测、关注瞬态工况等实践要点,警示温升测试是保障可靠性与安全性的核心环节。

2401_88858637的博客 47

辉芒微教程第五篇《定时器0实现LED灯闪烁》

定时器定时器,一听就跟个闹钟似的,对于嵌入式定时器大部分的应用中,也的确可以这么理解,但是这只能肤浅地这么理解,实际其功能不仅仅是用来计数定时,但是对于我们这种8位单片机,这么理解就够了。

qq_41809823的博客 723

Linux - 开机启动流程

上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。masterbootrecord主引导记录,位于硬盘的0磁道,0柱面,1扇区,可以看成是硬盘的第一个扇区,MBR里面有一个grub2引导程序,负责启动linux系统。BIOS的配置固化到了主板上面的CMOS芯片上面,BIOS是一个程序会读取CMOS芯片里的参数,了解cpu的配置,时间的配置,...

qq_48391148的博客 7580

大数据分析实验,包含五个子实验:wordCount实验,PageRank实验,关系挖掘实验,k-means算法,推荐系统算法。

大数据分析实验,包含五个子实验:wordCount实验,PageRank实验,关系挖掘实验,k-means算法,推荐系统算法。

805

ARM+Linux系统启动流程分析----系统启动总概述

本文章和后续的几篇姊妹篇,笔者将对 ARM+Linux 的主流嵌入式系统的启动流程进行介绍,所作介绍目的有二:其一为记录自己的学习经历,总结所学;其二希望能帮助到有需要的网友,当然笔者也希望能得到各位前辈的指点。由于本人水平有限,不免认识有所偏差,真切希望各位能真诚指出。         开发环境如下:                                         PC操作系

终南樵夫 832

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Linux启动流程和内存概念的概述

Linux启动流程及其内存的特性

m0_65187145的博客 487

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LLVM项目深度解析:编译器基础设施核心架构与工程实践

LLVM 是一种模块化、可重用的现代编译器基础设施,其核心在于静态单赋值(SSA)形式的中间表示(IR)和基于 Pass 的分层优化架构。它不直接生成可执行文件,而是为 Clang、Rustc、Swift、MLIR 等提供统一的 IR 处理、优化与代码生成能力。技术价值体现在高度可控的编译流程、跨平台目标支持(通过 TableGen 描述)、链接时优化(LTO)及调试信息完整性。广泛应用于嵌入式性能调优、GPU着色器编译、WASM 运行时加速与 AI 编译(如 MLIR 集成)。本文聚焦 llvm-proj

weixin_34319374的博客 360

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Linux内核移植及启动流程概述

Linux内核移植及启动流程概述  内核作为Linux操作系统的核心,管理着系统线程、进程、资源和资源分配[62]。本系统采用Linux2.6.21版内核,并对其进行重新裁剪,增加或消除对某些特定设备或子系统。  Linux启动过程也可分为两个部分:ARM架构相关的引导过程和后续的通用启动过程。  引导阶段由汇编语言编写,首先检查内核是否支持当前架构的处理器,设置页表、使

941

嵌入式:Linux系统应用程序(APP)启动流程概述

Linux加载应用程序,有SysVinit和Systemd两个初始化系统。

1347

Linux之系统启动流程之(1)流程概述

Linux之系统启动流程之(1)流程概述Linux一般来说是通过引导MBR来启动程序的,所以本片之介绍MBR启动方式流程。Linux组成:Kernel+rootfskernel(系统内核模块)功能:进程管理、内存管理、网路管理、驱动程序、文件系统、按全功能。rootfs(根文件系统):相应程序和glibc,根是自引用的,能够自我识别库:函数集合,function, 调用接口(...

weixin_33769125的博客 184

uboot启动流程概述_Alibaba Cloud Linux 2 LTS OS 启动优化实践

Alibaba Cloud Linux 2 (原Aliyun Linux 2)是阿里云操作系统团队基于社区版 4.19 LTS 内核打造的一款针对云产品优化的下一代 Linux 操作系统发行版,不仅提供 Linux 社区的最新增强功能,也提供了云上最佳用户体验并针对阿里云基础设施做了深度的优化。今年 3 月 26 日Alibaba Cloud Linux 2 LTS 正式发布,这是...

weixin_29885875的博客 468

i.MX6ULL系统移植:Linux移植5 - Linux 内核启动流程概述

参考博客: https://blog.youkuaiyun.com/lushoumin/article/details/85274105 https://blog.youkuaiyun.com/weixin_44895651/article/details/108739520 https://blog.youkuaiyun.com/linuxweiyh/article/details/83382154 https://blog.youkuaiyun.com/perfect1t/article/details/81741531 https://blog.c

OnlyLove_的博客 870

Linux操作系统概述2——CentOS6/Redhat6版本的启动流程描述

运行init进程需要读取的/etc/inittab配置文件,该配置文件定义了系统的运行级别、/etc/sysinit脚本、/etc/rc.d/rc脚本以及mingetty进程。通过该脚本来需要开启/关闭该运行级别下需要开启/关闭的应用服务,并需要读取开机自启动文件(/etc/rc.d/rc.local文件)下的应用或服务将其开启。initramfs.img文件是在内核启动时提供一个基本的,最小的文件系统,以便于内核能够访问系统所需要的驱动程序和工具并启动,以此来进入到真实的系统中。先关闭服务,再开启服务。

m0_49864110的博客 527

uboot启动流程概述_嵌入式linux开发uboot启动过程源码分析(一)

一、uboot启动流程简介与大多数BootLoader一样,uboot的启动过程分为BL1和BL2两个阶段。BL1阶段通常是开发板的配置等设备初始化代码,需要依赖依赖于SoC体系结构,通常用汇编语言来实现;BL2阶段主要是对外部设备如网卡、Flash等的初始化以及uboot命令集等的自身实现,通常用C语言来实现。1、BL1阶段uboot的BL1阶段代码通常放在start.s文件中,用汇编语言实现,...

weixin_42466868的博客 342

安卓启动流程概述(一)

安卓启动流程概述(一) Android的启动流程为:Boot Rom -> Boot Loader -> Linux Kernel -> Init -> Zygote -> SystemServer -> Launcher BootLoader层 1)Boot Rom是嵌入处理器芯片内的一小块掩模ROM或写保护闪存。它包含处理器在上电或复位时执行的第一个代码。根据某些带式引脚或内部保险丝的配置,它可以决定从哪里加载要执行的代码的下一部分以及如何或是否验证其正确性或有效性

qq_43453926的博客 1537

简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

1.Linux内核启动过程概述一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序。其中 Bootloader是系统启动或复位以后执行的第一段代码,它主要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。根文件...

weixin_39715834的博客 1454

Android系统启动流程

文章目录 目录 前言 一、引导程序BootLoader 二、Linux内核启动 三、init进程启动 四、Zygote进程启动 五、Android桌面启动 总结 前言 Android系统是怎么启动的?用过手机的都知道长按电源键就可以了,过程可以说很简单,一台手机从按下电源键到显示品牌logo,再到进入系统桌面,整个启动流程就完成了,但这只是我们看到的现象,其背后到底经历了什么呢?本文就来分析下这看似简单的启动流程。 一、引导程序BootLoader 当电源键按下时引导代码会从预定义的

永琪的博客 3366
上一篇: 最近学习计划
下一篇: linux hardlink 和 symbolic link的区别
javaUTU
博客等级 码龄16年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值