linux启动基本流程
linux启动序列
1、CPU初始化
CPU自身初始化。从某个固定位置(0xfffffff0)取指令并运行,该指令为跳转指令。跳转到BIOS代码的首部。
2、装载BIOS
BIOS被固化在主板上的一个ROM中,它首先进行自检(POST),随后载入内核引导程序。
POST阶段进行系统硬件的检測。包含内存检測,系统总线检測等。
3、读取MBR
POST之后。BIOS会读取启动设备的第一个扇区(MBR),即512字节的信息。MBR保存了内核引导程序的開始部分。BIOS将其载入到内存而且运行。
MBR中的主引导程序。包括了446字节的程序代码和64字节的分区表。
4、载入系统内核
运行MBR中的主引导程序程序中。会扫描分区表。寻找活动分区,活动分区的引导记录存在次引导程序,这次引导程序被载入到内存并运行,它负责载入linux内核镜像,并将控制权交给内核。
内核镜像以压缩的形式存储,并不能运行,它载入到内存后首先进行自解压。
5、内核初始化
内核启动第一个程序。init,init进程是系统全部进程的起源,进程编号始终为1. init进程产生getty进程,getty进程产生login进程,登陆成功后。login进程产生shell进程。我们使用shell,产生其它进程。init的工作依据文件/etc/inittab文件来完毕。
6、运行/etc/rc.d/rc.sysinit 脚本
/etc/rc.d/rc.sysinit 是init运行的第一个脚本。它的作用是初始化linux系统,包含环境变量。网络配置,检查文件系统等等。
7、运行run-level脚本
在/etc/inittab 中已经确定了系统的run-level, 运行对应的命令脚本/etc/rc.d/rcx.d 。
8、启动其他模块
比方内存管理、硬盘管理等等。
9、运行 /etc/rc.d/rc.local脚本
/etc/rc.d/rc.local 为系统初始化的最后一个脚本。用户能够在这里加入系统启动时服务,比方httpd。
10、运行 /bin/login
此程序提示用户输入username和password,正确后然将控制权交给shell进程。
11、shell 启动
linux启动基本流程的更多相关文章
- Linux启动的流程
2017年1月10日, 星期二 Linux启动的流程 null
- linux 启动引导流程
课程大纲: Linux引导流程 Linux运行级别 Linux启动服务管理 GRUB配置与应用 启动故障分析与解决 系统引导流程 1.固件firmware(CMOS(固化在硬件上的程序与硬件统称)/B ...
- linux启动init流程(转)
当系统启动时,首先启动内核,内核调用init来完成引导进程.init启动时,它会在/etc/inittab内查找默认的运行级别:如id:2:initdefault:运行/etc/rc.d/init.d ...
- linux启动流程及自定义gurb
linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...
- linux启动流程
看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...
- Linux启动流程详解
在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...
- Linux启动流程详解【转载】
在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...
- linux文件系统启动流程、启动脚本
linux文件系统启动流程.启动脚本 下面是一张Linux启动流程图: 在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为: 1. /sbin/init 2. /etc/ ...
- Linux启动流程与模块管理(15)
系统的启动其实是一项非常复杂的过程,因为内核得要检测硬件并加载适当的驱动程序,接下来则必须要调用程序来准备好系统运行的环境,以让用户能够顺利的操作整台主机系统,如果你能够理解系统启动的原理,那么将有助 ...
随机推荐
- 服务器中打开IIS管理器
1.选远程连接服务器,然后开始>控制面板>打开或关闭Windows功能>服务器管理器>web服务器>internet信息服务的展开下一项即可,如图:
- GNU编译器学习 --> 如何链接外部库【Linking with external libraries】
库也就是我们常说的library,一个库是若干个已经编译过的目标文件(.obj)的集合,它可以被链接到程序里.那么我们最常见的使用就是,我们在编程时会调用一些函数,这些函数别人已经写好了,它就放在库里 ...
- [Luogu] P1865 A % B Problem
题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对于每次询问输出个数 t,如l或r∉[1,m]输出 Cros ...
- http2提升效率的几个点
1.二进制传输,消息的解析效率更高 2.头部数据压缩,传输效率更高 3.多路复用,可以让请求并发执行 4.服务器推送,可以主动推送数据到浏览器 http2加载图片demo:https://http2. ...
- PHP 反射API
出处:http://blog.csdn.net/hguisu/article/details/7357421 PHP5添加了一项新的功能:Reflection.这个功能使得phper可以reverse ...
- 2017 计蒜之道 初赛 第一场 B阿里天池的新任务(简单)
题链:"https://nanti.jisuanke.com/t/15500" 本来希望通过找循环节然后套KMP来通过后面题的,可是只过了B题,可能循环节不一定是存在的. #inc ...
- SQlServer中的MD5加密
SELECT sys.fn_varbintohexstr(HASHBYTES('MD5', '我'));
- Nginx学习总结(4)——负载均衡session会话保持方法
负载均衡时,为了保证同一用户session会被分配到同一台服务器上,可以使用以下方法: 1.使用cookie 将用户的session存入cookie里,当用户分配到不同的服务器时,先判断服务器是否存在 ...
- intellij idea 忽略文件不提交
文件已经纳入版本管理 如果文件已经纳入版本了,应该采用此方法 此方法主要应对文件已经纳入版本管理,但不想再提交,比如,不小心提交的eclipse.intellij的文件,以后不想再提交了,这种就通过v ...
- 用java实现二分搜索<算法分析>
实验目的:1.复习java编程:2.掌握二分搜索技术的基本原理:3.掌握使用java程序进行二分搜索的方法.实验步骤:1.由用户输入5个以上的整数:2.利用二分搜索算法完成对数组的搜索. packag ...