当前位置:首页 > 数码 > 启动过程详解-揭秘系统从开机到登录的奥秘-Linux (stm32启动过程详解)

启动过程详解-揭秘系统从开机到登录的奥秘-Linux (stm32启动过程详解)

admin5个月前 (04-19)数码26

计算机启动是一个复杂的过程,涉及多个步骤。以下是计算机启动的详细步骤:

步骤 1:加载 BIOS/UEFI 固件

  1. 当我们打开电源时,BIOS(基本输入/输出系统)或 UEFI(统一可扩展固件接口)固件会从非易失性存储器(例如 CMOS)中加载。
  2. BIOS/UEFI 固件执行 POST(开机自检),以验证系统的硬件组件是否正常工作。

步骤 2:检测硬件

  1. BIOS/UEFI 检测并初始化连接到系统的设备,包括 CPU、RAM、存储和外围设备。
  2. 此过程称为硬件枚举,它确定每个设备的类型、功能和资源分配。

步骤 3:选择启动设备

  1. BIOS/UEFI 等待用户选择要从中启动操作系统的启动设备。
  2. 启动设备可以是硬盘驱动器、网络服务器、CDROM 或其他存储设备。
  3. 用户可以在 BIOS/UEFI 设置中配置启动顺序。

步骤 4:运行引导加载程序

  1. BIOS/UEFI 将控制权移交给引导加载程序,通常是 GRUB(GNU GRUB)。
  2. GRUB 提供了一个菜单,允许用户选择要启动的操作系统或内核。

步骤 5:加载内核

  1. 用户选择后,GRUB 将加载选定的内核到内存中。
  2. 内核是操作系统的核心组件,它负责管理硬件资源和进程。

步骤 6:初始化用户空间

  1. 当内核初始化完毕后,它将创建一个用户空间进程,通常是 systemd。
  2. systemd 负责启动和管理用户空间进程和服务。

步骤 7:探测剩余硬件和挂载文件系统

  1. systemd 探测剩余的硬件组件,例如图形卡和网络适配器。
  2. 它还挂载文件系统,使操作系统可以访问存储在硬盘上的数据。

步骤 8:启动桌面环境

  1. systemd 启动桌面环境,例如 GNOME 或 KDE。
  2. 桌面环境提供了一个图形用户界面,允许用户与计算机交互。

步骤 9:显示登录窗口

  1. 加载桌面环境后,系统会显示一个登录窗口。
  2. 用户在登录窗口中输入他们的用户名和密码。

步骤 10:登录并完成启动

  1. 用户成功登录后,系统完成启动过程。
  2. 用户现在可以开始使用计算机。

值得注意的是,计算机启动过程可能因系统而异,但一般步骤保持不变。

stm32启动过程详解

linux启动的过程有哪些?

总结一下,linux的开机整个流程。 · 1: 启动电源后,主机第一步先做的就是查询BIOS(全称:basic input/output system 基本输入输出系统)信息。 了解整个系统的硬件状态,如CPU,内存,显卡,网卡等。 嗯,这一步windows算和它是一家。 不分彼此。 · 2: 接下来,就是主机读取MBR(硬盘的第一个扇区)里的boot loader了。 这个可是重点哦,据说troubleshooting里就会考这点,给个坏了的loader,叫你修正。 windows不支持linux的分区格式。 所以,用windows的boot。 ini是查不到linux的系统的。 一般我装系统都是先装windows再装linux,然后用grub来做boot loader。 两个字:省心!因为linux不像windows那么小气。 grub可是支持windows分区格式的哦。 · 3: 接上一步,主机读取boot loader后,会读取里面的信息,知道谁跟谁是待在哪,假如主机想进入linux系统,读取到linux核心是在/boot文件目录中后,将此核心加载到内存中。 开始了接下来的分析启动之旅。 · 4: OK,第一个运行程序是谁?就是/sbin/init程序。 不信,就用top程序看下,是不是PID为1的就是这个东东,它,可是万物之祖啊,我简称它是女娲娘娘(不喜欢亚当夏娃)。 · 5: init首先查找启动等级(run-level)。 因为启动等级不同,其运行脚本(也就是服务)会不同。 默认的等级有以下几项:0 - halt (系统直接关机)1 - single user mode (单人模式,用于系统维护时使用)2 - Multi-user, without NFS (类似3模式,不过少了NFS服务)3 - Full multi-user mode (完整模式,不过,是文本模式)4 - unused (系统保留功能)5 - X11 (与3模式类似,不过,是X终端显示)6 - reboot (重新开机)(不要选择0或4,6 否则,进步了系统的)· 6: OK。 系统知道自己的启动等级后,接下来,不是去启动服务,而是,先设置好主机运行环境。 读取的文件是/etc/rc。 d/rc。 sysinit文件。 那究竟要设置哪些环境呢?· 设置网络环境/etc/sysconfig/network,如主机名,网关,IP,DNS等。 · 挂载/proc。 此文件是个特殊文件,大小为0,因为它是在内存当中。 里面东东最好别删。 · 根据内核在开机时的结果/proc/sys/kernel/modprobe。 开始进行周边设备的侦测。 · 载入用户自定义的模块/etc/sysconfig/modules/*。 modules· 读取/etc/sysctl。 conf文件对内核进行设定。 · 设定时间,终端字体,硬盘LVM或RAID功能,以fsck进行磁盘检测。 · 将开机状况记录到/var/log/dmesg中。 (可以用命令dmesg查看结果)· 7: OK,接下来,就是启动系统服务了,不同的run-level会有不同的服务启动。 到/etc/rc。 d目录中,不同的level会有不同的目录。 如启动3模式,会有个rc3。 d目录,里面就保存着服务。 其中,S(start)开头的表明开机启动,K(kill)开头的表明开机不启动。 数字表示启动顺序。 数字越小,启动越早。 注意,他们都是连接到etc/rc。 d/init。 d/目录中的相关文件。 所以,想手工启动某一服务,可以用/etc/rc。 d/init。 d/某个服务 start启动哦。 相反,我们也可以把某个服务ln(链接命令)到不同run-level的目录中。 记得打上S或者K+数字哦。 · 8: 读取服务后,主机会读取/etc/rc。 d/rc。 local文件。 所以,如果需要什么开机启动的话,可以写个脚本或命令到这里面来。 就不用像上面那么麻烦。 以后删除也方便。 OK,经过一番长途跋涉后,系统终于可以安心的开启shell了。 把控制权交到我们手上了。 我们可以为所欲为了。 最好,养成好习惯,平时不要用root用户登陆。 上次我就一不小心错输了poweroff。 那可是网关服务器啊。 全公司人都上不了网啊。 还好跟他们已经热乎了。 只是狂K了我一顿而已。

树莓派Linux启动过程简介

昨天在写关于linux设置脚本开机启动的文章时,有个疑问就是开机时怎么确认运行级别,然后遍历执行/etc/rcN.d/目录下的所有服务程序。 带着疑问, 在前人的基础上 学习总结一下linux系统初始化的工作的内容,现在树莓派4B上展示出来。 1、加载内核 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。 树莓派4B的内核是Raspbian GNU/Linux 10 (buster),基于Debian。 2、初始化进程init 内核文件加载以后,运行第一个程序init,它的作用是初始化系统环境。 init位于目录/sbin,进程号PID为1,即1号进程,其他所有进程都由init衍生,是init的子进程。 同时还有个0号进程,idle进程,在系统初始化时由内核kernel自身从无到有创建,通过调用kernel_thread创建一个内核线程去执行init函数,0号进程创建1号进程。 3、运行级别 具体介绍请参考笔者的文章-Linux运行级别简介 ,但是开机时是怎么确定运行级别的呢? init进程首先读取文件 /etc/inittab,它是运行级别的设置文件。 但是各个发行版不太一样,init的配置文件也不一样,有可能使用/etc/event.d里面的配置文件,最新版的改用为/etc/init目录。 4、开机启动程序 具体详情请参考文章-linux中/etc/init.d设置开机启动 ,确定运行级别后,执行rcN.d目录下的文件,这些链接文件是连接到init.d目录下的程序。 init进程逐一加载开机启动程序,其实就是运行这个目录里的启动脚本。 比如运行级别为5(图形化多用户)时启动的程序:5、用户登录 开机启动程序加载完毕以后用户登录。 用户的登录方式有三种:命令行登录:init进程调用getty程序。 ssh登录:init进程调用sshd程序。 图形界面登录:init进程调用显示管理器,Gnome图形界面对应的显示管理器为gdm。 6、login shell 默认shell时bash,命令行界面,让用户可以直接与操作系统对话。 读取环境变量,具体请参考笔者文章-Linux环境变量的设置。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Linux

“启动过程详解-揭秘系统从开机到登录的奥秘-Linux (stm32启动过程详解)” 的相关文章

系统中内存管理和优化指南-有效处理内存问题-Linux (系统内存管理)

系统中内存管理和优化指南-有效处理内存问题-Linux (系统内存管理)

本文将详细介绍内存管理和优化的几个高级技巧,帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。 1. 页面置换策略 Linux 使用页面置换算法...

经常使用-grep-awk把握日志监控-中日志剖析神器-ail-Linux-和 (经常使用公共卫生间引起尿路感染)

经常使用-grep-awk把握日志监控-中日志剖析神器-ail-Linux-和 (经常使用公共卫生间引起尿路感染)

一个日志查问剖析的例子 名目颁布上线后,接上去须要做什么?开Party,庆贺名目上线。但是Party开到一半,服务运转出了点疑问。指导要你马上考查要素并给出适合的处置方法。名目才刚上线,日志...

在Linux系统中每隔1小时智能运转指定命令 (在linux系统中,以什么访问设备)

在Linux系统中每隔1小时智能运转指定命令 (在linux系统中,以什么访问设备)

在系统中,通常状况下经常使用crontab命令来设置定时义务,本文以每隔1个小时运转一条指令为例子,和大家一同探讨crontab的用法。 详细的操作步骤: 0*/1***/path/com...

Linux日常使用最常见的指令 (linux日志命令)

Linux日常使用最常见的指令 (linux日志命令)

历史 Linux 系统创建于 1991 年,由芬兰大学生 Linus Torvalds 开发。它是一个开源操作系统,这意味着它的源代码可以免费使用和修改。由于其高度的可定制性和免费性,Lin...

嵌入式Linux系统开发 (嵌入式linux)

嵌入式Linux系统开发 (嵌入式linux)

什么是嵌入式系统 嵌入式系统是一种以微处理器为核心的、专门针对某一特定应用设计的计算机系统。它具有体积小、功耗低、成本低、稳定性高、抗干扰能力强等特点。 嵌入式系统操作 嵌入式系...

如何管理数据存储-深入剖析Linux中的磁盘和文件系统 (如何管理数据库团队)

如何管理数据存储-深入剖析Linux中的磁盘和文件系统 (如何管理数据库团队)

简介 在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展性。本文将深...

可视化管理神器-运维效率翻倍-VisualPlus-Linux (可视化管理神器怎么用)

可视化管理神器-运维效率翻倍-VisualPlus-Linux (可视化管理神器怎么用)

简介 Linux是一种功能强大且广泛使用的操作系统,服务器的运维管理主要依赖命令行操作。对于普通人来说,这种方式晦涩难懂,相对复杂。而1Panel是一款开源的Linux可视化管理项目,旨在为...

Linux子系统概览

Linux子系统概览

Linux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。 内核子系统...