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 ...
随机推荐
- DECIMAL Data Type
In MySQL, DECIMAL(M,D) and NUMERIC(M,D) are the same, and both have a precision of exactly M digits. ...
- ios-点击屏幕,隐藏键盘
ios-点击屏幕,隐藏键盘 - (void)getFirstRegist{ //结束键盘编辑 __weak typeof(self)weakSelf = self; UITapGestureRecog ...
- CentOS 6.7编译安装MySQL 5.6
1.安装前准备 yum install make gcc gcc-c++ ncurses-devel perl bison-devel yum groupinstall "Developme ...
- MySQL存储过程学习笔记
MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...
- 使用js使表单自动提交
function sub(){ document.yeepay.submit(); } setTimeout(sub,1000);//以毫秒为单位的.1000代表一秒钟.根据你需要修改这个时间. // ...
- HTML5 autocomplete属性、表单自动完成
autocomplete属性 1.定义autocomplete属性规范表单是否启用自动完成功能.自动完成允许浏览器对字段的输入,是基于之前输入的值.2.应用范围autocomplete使用<fo ...
- WPF RichTextBox 如何滚动到光标所在位置、滚动条操作
1.获取当前滚动条位置 //获取当前滚动条位置 richTextBox.VerticalOffset; richTextBox.HorizontalOffset; //获取当前光标位置 richTex ...
- Missing artifact com.sun:tools:jar:1.5.0
http://java-suddy.iteye.com/blog/1821871(解决了我的问题)
- webservice发送数据,取数据的方式
1.通过调用对方的webservice接口方式,取得对方的数据,并解析(我们取数据) 2.对方调用我们的接口,得到数据.(对方来取) 3.对用对方接口,将我们的数据封装好以后,直接调用对方接口,对方可 ...
- C#winform程序自定义鼠标样式
public void SetCursor(Bitmap cursor, Point hotPoint) { int hotX = hotPoint.X; int hotY = hotPoint.Y; ...