linux启动过程详解

详解linux系统启动原理 linux系统启动过程 1、首先读入boot下的内核文件: 2、init进程读取配置文件: pid=1,完成了从内核态到用户态的转变 linux内核启动流程: 在1与12之间,linux内核进行启动: 一、1时,利用代码kernel/arch/arm/boot/compressed进行内核的自解压 内核文件被加载到内存中,建立页表数据结构、进行地址映射, 二、之后进入start_kernel函数: 设置体系结构初始化相关的工作(x86等) 创建内核页表、MMU、中断处理函数、核心进程调度器、时钟中断处 阅读详情
启动第一步--加载BIOS
当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

启动第二步--读取MBR
众所周知,硬盘上 第0磁道第一个扇区被称为MBR ,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

启动第三步--Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以 初始化硬件设备、建立内存空间的映射图 ,从而将 系统的软硬件环境带到一个合适的状态 ,以便 为最终调用操作系统内核做好一切准备 。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

启动第四步--加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作 。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核 放置在内存之中 ,并 调用start_kernel()函数 来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

启动第五步--用户层init依据inittab文件来设定运行等级
内核被加载后, 第一个 运行的程序便是 /sbin/init ,该文件会 读取/etc/inittab 文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是 设定Linux的运行等级 ,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
关于/etc/inittab文件的学问,其实还有很多

启动第六步--init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的 第一个用户层文件 就是 /etc/rc.d/rc.sysinit 脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的

启动第七步--启动内核模块
具体是依据 /etc/modules.conf 文件或 /etc/modules.d 目录下的文件来装载内核模块。

启动第八步--执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

启动第九步--执行/etc/rc.d/rc.local
你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方 。你可以把你想设置和启动的东西放到这里。

启动第十步--执行/bin/login程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。:)
===
漫长的启动过程结束了,一切都清静了…
其实在这背后,还有着更加复杂的底层函数调用,等待着你去研究…本文就算抛砖引玉了:)
本文参考了如下文章,精炼荟萃而成:
http://bbs.chinaunix.net/thread-835918-1-1.html
http://hi.baidu.com/fembed/blog/item/b9f0881f51145866f624e4be.html
http://baike.baidu.com/view/9485.htm
86Box模拟器实战:在复古PC环境中安装配置Windows XP SP3 1. 背景与核心概念 在当前的软件开发、系统测试和复古软件体验领域,虚拟机技术扮演着至关重要的角色。我们熟知的 VMware、VirtualBox 等工具主要面向现代操作系统,但对于那些希望重温 Windows XP 时代经典软件、运行特定老版本工业软件(如 ISE 10.1 SP3),或进行操作系统教学研究的开发者和爱好者来说,直接在现代硬件或主流虚拟化软件上运行这些老系统往往困难重重。驱动不兼容、硬件虚拟化支持缺失、性能异常等问题层出不穷。这时,一个专注于模拟老式 PC 硬件的工具就显得尤为必要,86B 阅读详情

相关推荐

86box 旧电脑模拟器

86box 旧电脑模拟器,可以模拟一些旧的电脑设备,从IBM PC到Pentium II的都有

Linux启动过程

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)设计模式招聘思考存储算法系列读书笔记小工具架构网络Go语言。

1285

避坑指南:锐浪报表PictureBox打印图像常见的5大问题及解决方案

本文深入剖析了锐浪报表(Grid++Report)中PictureBox控件打印图像时常见的五大难题,包括图像源加载机制、拉伸失真、动态加载失败、跨平台兼容性及性能优化。文章提供了从原理理解到实战解决方案的完整指南,帮助开发者有效规避图像打印中的常见陷阱,确保报表输出的稳定与高质量。

water的专栏 1148

Linux系统开机启动流程(超详细)

BIOS(Basic Input/Output System)是一种位于计算机系统中的固件程序,它提供了计算机系统的基本输入输出功能。BIOS位于计算机主板上的一个芯片中,负责初始化和配置硬件设备,以及提供底层的系统管理和控制功能。BIOS是电脑启动时加载的第一个软件。它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

qq_51010919的博客 1万+

Unity特效序列帧输出全攻略:Recorder+Timeline保姆级教程(解决透明通道问题)

本文提供Unity特效序列帧输出的完整解决方案,重点讲解如何结合Recorder与Timeline工具,实现带透明通道的PNG序列帧高效输出。通过保姆级教程,详细解析摄像机隔离、层级设置、参数配置等关键步骤,并深度解决透明通道丢失等常见问题,帮助特效师和动画师打通引擎创作与后期合成的工作流。

tensorflowjs6的博客 429

Abaqus传热分析HETVAL和USDFLD子程序联合

Hetval子程序常用于定义内部热源,该子程序可以定义材料内部的生热量(如相变、高分子结晶生热),并且能够调用state variable 状态变量,可以与USDFLD子程序联合使用。HETVAL子程序用于计算传热系数并在单元上定义,USDFLD子程序用于在每个时间布更新温度场。

qq_41900477的博客 2660

Linux启动过程详解

一、Linux系统启动流程 Linux系统启动流程图 1.1)Linux系统启动流程详细说明 1.1.1)加载BIOS 当你打开计算机电源,计算机会首先加载基本输入输出系统(Basic Input Output System )BIOS系统。BIOS程序一般被存放在主板ROM(只读存储芯片)之中、即使在关机或掉电以后该程序也不会丢失。 BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,...

jinking01的专栏 1万+

Python爬虫实战:高效爬取中国版权登记数据

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的中国版权登记数据爬虫系统。我们将使用Playwright+Asyncio实现无头浏览器自动化,结合Redis分布式任务队列和MongoDB数据存储,打造一个能够应对反爬机制的企业级数据采集方案。文章包含完整代码实现、性能优化技巧以及法律合规建议,帮助开发者快速掌握大规模数据采集的核心技术。本文详细介绍了2024年使用Python最新技术栈构建中国版权登记数据爬虫的完整方案。基于Playwright的无头浏览器自动化。

2201_76125261的博客 1897

Linux 启动过程详解

2.1 Linux启动所需的目录 init.d/ :各种服务器和程序的二进制文件存放目录。 rcx.d/: 各个启动级别的执行程序连接目录。里头的东西都是指向init.d/的一些软连接。 还有三个脚本:rc.sysinit, rc, rc.local。 /etc/rc.d/init.d/目录下的脚本就类似与windows 中的注册表,在系统启动的时候某些指定脚本将被执行。 在Redhat...

weixin_30549175的博客 423

098、C3k2_Ghost:用 GhostConv 替代 C3k2 内标准卷积的轻量化改造代码

本文介绍了用GhostConv轻量化改造YOLOv11中C3k2模块的实践。作者通过线上部署案例引出问题,详细解析了GhostConv的核心实现逻辑,指出直接替换标准卷积会导致的两个关键问题:通道数不匹配和kernel_size冲突。文章提供了完整的C3k2_Ghost实现代码,包含注意事项和调试技巧。消融实验显示,该方法在小模型上可减少27%-28%参数量、34%-35%FLOPs,仅损失0.8mAP。作者总结了适用场景:小模型效果显著,大模型需谨慎;检测小目标任务不推荐;训练时需调整学习率。最后强调sh

sundong_81的博客 62

NSX-T 4.1部署搭建

NSX-T4.1 部署搭建

weixin_58250887的博客 564

Linux 系统启动过程详解

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

fastboot 1052

2025年GESP12月认证C++四级真题解析

摘要 本文包含11道C++编程题目,涵盖指针、数组、函数参数传递、结构体和排序算法等知识点。每题2分,总分30分,主要考察学生对C++基础语法的掌握程度。题目包括指针定义与解引用(第1-4题)、二维/三维数组遍历(第4-5题)、变量作用域(第6题)、函数传参方式(第7题)、结构体操作(第8题)、递归算法(第9题)和排序稳定性判断(第10题)。最后第11题要求补全选择排序算法代码片段。每道题均提供标准答案和详细解析,适合用于检验C++基础知识的掌握情况。

lan_in的博客 316

Linux系统启动过程详解

目录linux系统启动过程五大阶段内核引导运行 initinit程序的类型运行级别系统初始化建立终端用户登录系统图形模式与文字模式的切换方式Linux 关机 linux系统启动过程五大阶段 内核的引导 运行 init 系统初始化 建立终端 用户登录系统 整体流程图: 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。 BIOS:BIOS是英文"Basic Input Output Sy

小螺号的博客 3433

HTML爱心字母雨(完整代码)

HTML语言实现爱心字母雨的完整代码。

AIGC 2万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Linux启动过程详讲解_linux启动过程详解(1)

对于linux系统的初学者来说,理解并掌握linux系统启动流程能够使你够深入的理解linux系统,还可以通过系统的启动过程来分析问题解决问题。POST上电自检–>加载BIOS–>加载主引导记录–>BootLoader启动–>加载内核–>运行开机自启程序–>系统启动。

1015

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

深入详解linux的启动过程

Linux系统的启动过程是由很多步骤组成的,但是,无论你是启 动一个标准的x86桌面计算机,还是一个嵌入式PowerPC的目标板,大多数的流程是惊人得相似的。这篇文章,探索了linux从最初的启动准备到用户 空间中某个程序被开启之间的启动过程,跟随这个流程,你还能学到其他许多与启动有关的知识,例如,boot loaders,内核解压缩,初始化内存盘,以及其他一些linux启动的部分。 在很

qxb1229的专栏 624

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Linux 启动过程详解

随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统。由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Windows操作系统共存形成异构网络。在服务器端大多使用Linux和Unix的,目前Linux的擅长应用领域是单一应用的基础服务器应用,譬如DNS和DHCP服务器、Web服务器、目录服务器、防火墙、文件和打印服

clozxy的专栏 8032

操作系统启动过程 linux启动过程 详解

操作系统启动过程 linux启动过程 详解:BIOS自检 内核的引导 运行init 初始化系统 建立终端 用户登录系统

yuezhilangniao的博客 317

Linux的redis启动过程详解

目录 redis的启动 设置redis密码 redis-server后台启动 redis的启动 在我的linux启动redis 首先进入到安装redis的目录下 cd /usr/local/redis/redis/redis-4.0.2/src 启动redis-server服务 ./redis-server 这种启动为前台启动,所以一般直接再VM中启动 然后在Xshell中远程控制,启动redis客户端 ./redis-cli 可以看到会有默认端口6379 这时就

Huang405267467的博客 4万+
上一篇: vim的配置(适合编程)
下一篇: linux下调试基础知识 GDB
山农
博客等级 码龄10年 44粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值