Linux菜鸟起飞之路【九】系统启动流程
Linux系统启动流程
BIOS -> MBR -> BootLoader -> Kernel -> init
1.打开电源后,计算机从主板的BIOS中读取其中存储的程序。这些程序通常包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。BIOS允许用户在U盘,硬盘,光盘等介质中选择一个来启动计算机。在BIOS将系统的控制权交给用户选择存储介质第一个扇区之后,就开始由Linux来控制系统了。
2.计算机起始的512 Byte,即第0磁道的第一个扇区叫做“主引导记录”,即“MBR(Master Boot Record)”。MBR的512字节存放了预启动信息和分区表信息。可分为两部分:第一部分为引导区(PRE-BOOT),占了446个字节;第二部分为分区表(PARTITION PABLE),共有64个字节,记录硬盘的分区信息。最后的两个字节是结束的标志位。MBR会告诉计算机从该设备的某一个分区来装载引导加载程序,即BootLoader。
3.BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。通常,BootLoader:是严重地依赖于硬件而实现的,不同体系结构的系统存在着不同的BootLoader。
Linux的引导扇区内容是采用汇编语言编写的程序,其源代码在arch/i386/boot中(不同体系的CPU有其各自的boot目录),有4个程序文件:
bootsect.S,引导扇区的主程序,汇编后的代码不超过512字节,即一个扇区的大小
setup.S,引导辅助程序
edd.S,辅助程序的一部分,用于支持BIOS增强磁盘设备服务
video.S,辅助程序的另一部分,用于引导时的屏幕显示
BootLoader有若干种,其中Grub、Lilo和spfdisk是常见的BootLoader。
系统读取内存中的BootLoader配置信息,并依照此配置信息来启动不同的操作系统。
4.根据BootLoader的信息,系统会读取内核映像并解压缩,在进行初始化后,Kernel会首先预留出自己运行所需要的空间,然后通过驱动程序(Driver)检测计算机可用的硬件。随后,kernel会启动/sbin/init,该程序是系统的第一个程序,它会读取/etc/inittab文件,并依据此文件来进行初始化工作。到此Kernel的工作结束。
5.init读取/etc/inittab最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。
Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式(我们常用的命令行界面)
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式(图形界面)
6:重新引导系统,即重启
之后init会执行一系列的脚本,有设置计算机名称、失去,检测文件系统,挂载硬盘,清空临时文件,设置网络等功能。至此,操作系统准备就绪。
Linux菜鸟起飞之路【九】系统启动流程的更多相关文章
- Linux菜鸟起飞之路【二】Linux基本常识
一.Unix操作系统基本常识 1.什么是Unix? Unix是一个计算机操作系统,是一个用来协调.管理和控制计算机硬件与软件资源的控制程序. 2.Unix操作系统的特点? 多用户与多任务.多用户表示在 ...
- Linux菜鸟起飞之路【一】基本知识与Linux的安装
一.操作系统基本常识 1.操作系统的定义:操作系统是用来协调.管理和控制计算机硬件与软件资源的系统程序,介于硬件与应用程序之间. 2.操作系统内核的定义:操作系统内核是一个管理和控制程序,负责管理计算 ...
- Linux菜鸟起飞之路【八】文本编辑器
在Linux中,文本编辑器有两个,VI和VIM.这两个编辑器用法差不多,但vim是vi的升级版,所以功能更强大一些. vim编辑器一共有三种模式,命令行模式.编辑模式和扩展模式. 进入vim界面,首先 ...
- Linux菜鸟起飞之路【六】权限管理(二)
一.权限信息详解 ls -l 文件 //查看文件权限写法1 ll 文件 //查看文件权限写法2 ls -dl 目录 //查看目录权限写法1 ll -d 目录 //查看目录权限写法2 文件权限格式: ...
- Linux菜鸟起飞之路【五】权限管理(一)
一.与用户相关的几个文件 1./etc/passwd 储存用户名,格式为 用户名:密码(用密码代位符X代替):UID:GID:用户描述信息:家目录:shell 用户名(login_name):是代表用 ...
- Linux菜鸟起飞之路【四】绝对路径、相对路径及常用目录
一.绝对路径与相对路径 Linux操作系统中存在着两种路径:绝对路径和相对路径.我们在访问文件或文件夹的时候,其实都是通过路径来操作的.两种路径在实际操作中能起到同等的作用. 在开始具体介绍之前,我们 ...
- Linux菜鸟起飞之路【三】Linux常用命令
一.Linux命令的基本格式 命令 [选项] [参数] a)命令:就是告诉操作系统要做什么 b)选项:说明命令的运行方式,有的会改变命令的功能,选项通常以“-”开始 c)参数:说明命令的操作对象,如文 ...
- Linux菜鸟起飞之路【十】进程管理
一.基本概念 进程:程序的一次动态执行 守护进程:在后台运行并提供系统服务的进程 僵尸进程:完成了生命周期但却依然留在进程表中的进程,我们称之为 “僵尸进程” 父进程:指已创建一个或多个子进程的进程. ...
- Linux菜鸟起飞之路【七】文件合并、归档和压缩
一.文件合并操作 1.覆盖符号与追加符号 a)“>”代表将左边文件的内容覆盖右边文件的内容,如果右边文件不存在则创建这个文件 b)“>>”代表将左边文件的内容追加到右边文件中,如果右 ...
随机推荐
- sublime安装与使用
整理sublime的安装和使用的步骤,以及一些常用插件的安装.配置.使用.免得每次换环境都需要重新上网查找一堆资料. 前言目前使用的版本是sublime text3.选择sublime的理由 subl ...
- Codeforces 190C(模拟)
坑点 不记它难解我心头之恨-- WA1:不要读错题Orz,顺序是按它给定的.那就是个类似栈的东西,重点在于输出. 然而我输出很快就模拟对了-- WA2:数据:1 int.我日了不看数据我真的去de模拟 ...
- 蓝桥校内选拔赛B题(不一定正确)
由于没报名,只能靠别人发的截图来做了 我的思路:全排列,判断加号位置,判断/位置,看是否存在这个相等的 时间复杂度较高,在10e8左右 代码: #include<cstdio> #incl ...
- shell 经典
使用新写法 这里的新写法不是指有多厉害,而是指我们可能更希望使用较新引入的一些语法,更多是偏向代码风格的,比如 尽量使用func(){}来定义函数,而不是func{} 尽量使用[[]]来代替[] 尽量 ...
- JavaSE---ThreadLocal
1.Java为线程安全提供了工具类,如ThreadLocal等: 2.ThreadLocal类是一个 线程局部变量 ,通过将 ”数据“ 放在ThreadLocal中,即可在每条线程中创建一个 ...
- Java基础(Java概述、环境变量、注释、关键字、标识符、常量)
第1天 Java基础语法 今日内容介绍 u Java开发环境搭建 u HelloWorld案例 u 注释.关键字.标识符 u 数据(数据类型.常量) 第1章 Java开发环境搭建 1.1 Java概述 ...
- 织梦后台上传mp4视频不显示
include/dialog/select_media.php ,约185行, 把(rm|rmvb) 改为(rm|mp4|rmvb)
- EasyUI:Easyui parser的用法
Easyui的渲染机制是个比较坑的事情,在项目开发中,遇到需要等其渲染完成后处理一些事情,比如为联动的下拉框选中默认值,为某些表单元素自动填充值等!这就需要用到Easyui parser解析器了.官方 ...
- SQL Server Sleeping会话占用内存资源浅析?
在SQL Server中,会话的状态有运行(Running).睡眠(Sleeping).休眠(Dormant).Preconnect 等状态,有时候你会在数据库中看到很多会话处于睡眠(Sleepi ...
- 微软打造了全球最大的Git代码库
丹棱君有话说:今年 2 月,微软宣布将用 Git 管理 Windows 源代码.随后,Visual Studio 宣布开发 “Git 虚拟文件系统(GVFS)”,并将在终极项目和超大型团队中推行 Gi ...