linux系统开机过程描述
本文描述linux系统开机过程,属于个人理解范畴,如果文中表述有误请大家批评指正!
计算机开机之后,首先要加载BIOS(基本输入输出系统)信息,BIOS包含了很多重要的信息,包括CPU信息,设备启动顺序信息,硬盘信息,内存信息,时钟信息等。
由BIOS进行POST(加电自检),然后依据BIOS内设置的引导顺序从硬盘、软盘或者CDROM中读入引导块。linux系统是从BIOS中的OxFFFFO处开始引导的。BIOS的第一个工作时POST,POST的工作就是对硬件进行检测。第二个工作是进行本地设备的枚举和初始化。
BIOS是由两部分组成:POST代码和运行时的服务。当POST完成之后就会被从内存中清理出来,但是BIOS运行时服务依然会保留在内存中。BIOS会按照设置中定义的顺序来搜索处于活动状态并且可以引导的设备。
引导设备可以是硬盘上的某个分区、CD-ROM、软盘、网络上的某个设备或者是USB设备。linux通常是从硬盘上进行引导的,其中主引分区MBR包含了主引导加载程序。当MBR加载到RAM中后,BIOS将控制权转交给MBR,MBR 又叫主引导扇区,是计算机开机后访问硬盘时必须要读取的首个扇区,位于0柱面,0磁道,1扇区。MBR的主引导程序是一个512字节的映像。前446字节是主引导加载程序,接下来的64个字节包含了分区表的信息,还有两个特殊的字节OxAA55用来检查MBR的有效性。
如果系统要想启动就必须启动内核,显然MBR是放不下内核的,但是MBR中有个小程序可以载入其他位置的内核,这个小程序就是boot loader 即GRUB。GRUB允许用户可以选择要启动的操作系统。GRUB包裹三个重要的文件,Stage1、Stage2、Stage1.5. Stage1通常放在MBR中,作用就是在系统启动时用于加载Stage2,并将控制权转交给它。Stage2就是GRUB的核心,所有的功能都由它完成。Stage1.5介于Stage1和Stage2之间,是他们之间的桥梁,因为Stage2较大,通常放在文件系统中,但是Stage1不能识别文件系统,Stage1.5来引导位于某个文件系统中的Stage2。Stage2是GRUB的核心但不是linux的核心,grub加载以后就是为了加载linux的内核,grub的配置
是通过/boot/grub/grub.conf来实现的。
接下来就要加载内核映像到内存中,内核映像是被zlib进行压缩过的,通常是一个zimage或者是bzimage,在映像前有一个例程可以实现少量的硬件设置,并对内核映像解压并将其放到内存中,之后该例程会调用内核,开始启动内核引导过程。内核启动后会向bios查询电脑的所有硬件信息,然后自己开始管理这些设备,以便提供给linux使用内核会尝试驱动这些设备,,这些设备的驱动一部分包含在内核中,叫做静态驱动,一部分放在文件系统中,由于此时还没有挂在任何文件系统,因此还不能使用,所以内核会尝试挂在根文件系统,根文件系统至少包含/etc、/bin、/boot、/lib、/dev5大目录,缺一不可,根文件系统挂在是以只读方式挂载,因为这是linux还在启动阶段,不稳定,避免破坏系统资料。
在内核完成引导后,就在本进程空间内加载init程序,进程号是1,init进程是所有进程的发起者和控制者,它是第一个运行的进程,init进程会根据/etc/inittab判断要进入的运行级别,然后直接执行/etc/rc.d/rc.sysinit进行系统初始化,并将启动的相关信息加载到/var/log/dmesg文件中。系统所有的服务启动之后在执行/etc/rc.d/rc.local脚本,将需要开机运行的程序启动。
linux系统开机过程描述的更多相关文章
- Linux系统开机启动时的工作原理
Linux系统开机启动时的工作原理也是深入了解Linux系统核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至 ...
- 红帽linux系统开机自启动脚本。
其实很多东西在最后完成以后会觉得也就那样,有意思的是探究的过程. 前段时间老板要求把一个程序做成linux系统开机自启动脚本的模式. 首先你需要写一个脚本. 我这边建立了一个.sh的脚本,就是用脚本启 ...
- linux系统引导过程
linux系统引导过程 linux-0.11引导时,将依次运行BIOS程序.bootsect.s.setup.s和head.s,完成引导过程后进入到main函数运行.BIOS完成硬件的检查与初始化等工 ...
- 原创:四种Linux系统开机启动项优命令超给力超详细详解
老葵花哥哥又开课了 接下来是你们的齐天大圣孙悟空给你们带来的详细版Linux系统开机启动优化四种命令 第一种方法是很正常的 第二种有点难理解 第三种来自我的一个奇思妙想 本文档秉承 不要钱也不要臀部的 ...
- linux系统开机自动挂载光驱 和 fstab文件详解
Linux 通过 UUID 在 fstab 中自动挂载分区 summerm6关注 2019.10.17 16:29:00字数 1,542阅读 607 https://xiexianbin.cn/lin ...
- Linux系统开机启动流程
(来源学习Linux时,自己做的笔记) Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限, ...
- Linux系统初始化过程及运行级别简介
Linux开机过程: 1 开机自检(BIOS):初始化硬件,查找启动介质 2 MBR引导 3 GRUB引导菜单:GRUB程序安装在Bootloader 4 加载内核(kernel) 5 运行INIT进 ...
- Linux学习-开机过程的问题解决
忘记 root 密码的解决之道 新版的 systemd 的管理机制中,默认的 rescue 模式是无法直接取得 root 权限的喔!还是得要 使用 root 的密码才能够登入 rescure 环境.没 ...
- 【Linux系统引导过程】
*** 第一步 开机自检 根据主板BIOS中的启动顺序,移交系统控制权. 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它. 这是因为BIO ...
随机推荐
- iOS--日历事件的获取和添加
日历添加事件 EKEventStore* eventStore = [[EKEventStore alloc] init];//获取日历类 EKEvent *event = [EKEvent even ...
- Java基础知识强化之集合框架笔记22:List集合的三个子类的特点(面试题)
1. List:(面试题List的子类特点)(1)ArrayList: 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高.(2)Vector: 底层数据结构是数组,查询快,增删慢. 线程安全, ...
- css 权威指南笔记(二)元素
替换元素 用来替换元素内容的部分并非有文档内容直接表示. img input 非替换元素 其内容由用户代理(通常是一个浏览器)在元素本身生成的框中显示. 块级元素 块级元素生成一个 元素框,(默认)会 ...
- Unity3D GUI学习
Unity3D内置有GUI, 首先,使用GUI实现一个按钮,并且点击实现触发, void OnGUI() { //GUI.Button (new Rect (10,10,50,50), "n ...
- kafka版本0.8.2.0-Producer Configs之request.required.acks
This value controls when a produce request is considered completed. Specifically, how many other bro ...
- android Services注意地方
使用service前需要在manifest声明: <manifest ... > ... <application ... > <service android:name ...
- [转]mysql 导入导出数据库以及函数、存储过程的介绍
本篇文章是对mysql中的导入导出数据库命令以及函数.存储过程进行了详细的分析介绍,需要的朋友参考下: mysql常用导出数据命令:1.mysql导出整个数据库 mysqldump -hhostna ...
- hdu_5276
//不管怎么样还是希望天天做笔记把,真是太懒了#include<iostream> #include<cstdio> #include<vector> #inclu ...
- POJ 1236.Network of Schools (强连通)
首先要强连通缩点,统计新的图的各点的出度和入度. 第一问直接输出入度为0的点的个数 第二问是要是新的图变成一个强连通图,那么每一个点至少要有一条出边和一条入边,输出出度和入度为0的点数大的那一个 注意 ...
- yzoi1777倒水问题的详细解法
Description - 问题描述 x.y.z三个容器,其最大容量分别是xMAX升.yMAX升.zMAX升,这里规定100>xMAX>yMAX>zMAX.一开始x是装满了水的,现在 ...