文档章节

linux启动流程

 李劲辉
发布于 2017/05/24 18:01
字数 809
阅读 3
收藏 0

我们都知道,由于linux的稳定性,通常被作为服务器系统,要想称为一个PHP的高手,linux是必修之课。那么linux系统从开机到启动,中间到底都发生了什么?本文来简单探讨一下中间的神秘过程。

1、 BIOS加电自检

  BIOS是英文"Basic Input Output System"的缩略词 其实,它是一组固化到计算机内主板上一个ROM芯片上的程序。 计算机会首先加载BIOS信息,这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

2、 加载主引导加载程序(MBR)

  MasterBootRecord,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。   主引导程序是一个512字节的映像。包含一点机器码还有一个小的分区。   主引导程序的任务就是查找并且加载处在硬盘分区上的次引导程序。通过分区表查找活动分区,并将处在活动分区的次引导加载程序读取到内存里面运行。

3、 boot loader   

  bootloader就是在操作系统内核运行之前执行的的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,为加载内核做准备。 常见的bootloader有Grub、Lilo和spfdisk

4、 加载linux内核映像   

  用户选择要加载的内核之后,次引导加载程序(GRUB)就会根据/boot/grub.conf配置文件中所设置的信息,从/boot/所在的分区上读取Linux内核映像,然后把内核映像加载到内存中并把控制权交给Linux内核。   

  linux内核获得控制权之后开始干自己的事   

  (1) 检测硬件   

  (2) 解压缩自己并安装必要驱动   

  (3) 初始化与文件系统相关的虚拟设备   

  (4) 装载根文件系统,挂在根目录下面   

  (5) 完成之后,linux在进程空间里面加载init程序,下面轮到init干活 5、 init进程   init是所有进程的发起者和控制者,所有的进程都由此衍生。   init进程获得控制权之后,它会执行/etc/rc.d/rc.sysinit脚本,根据里面的代码设置环境变量、网络、启动swap、检查并挂载文件系统、执行其他初始化工作。

  6、自定制启动程序 /etc/rc.local rc.local就是在一切初始化工作后,Linux留给用户进行自己定制开机启动的地方。你可以把你想设置和启动的东西放到这里。

  7、执行/bin/login程序,进入登录状态

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。互联网+时代,时刻要保持学习,携手千锋PHP,Dream It Possible。

本文转载自:http://www.cnblogs.com/lijinhui/p/6896584.html

上一篇: PHP执行效率分析
下一篇: PHP编程之路
粉丝 0
博文 21
码字总数 2602
作品 0
私信 提问
Android Audio BSP工程师 需要清楚的基本知识点

原址 【前言】 这是我根据自己的工作经验所总结,有一定代表性,但可能不齐全。这只是个提纲。 【知识点】 按照在操作系统中的层次划分,从上到下依次为: 1、Android系统分层模型。知道 AP...

u010164190
2018/05/30
0
0
Purism 发布 PureBoot:高度安全、完整的 Linux 引导流程

Purism 近日发布了 PureBoot,这是一个面向 Linux 计算机和任何希望增强 Linux 计算机安全用户的中心化、高度安全和完整的引导流程。 官方称 PureBoot 为“高度安全的引导流程”,有望为运行...

局长
02/28
0
0
SUSE12公开课,第1期

2015年SUSE公开课日程: 第一期计划定于:2015年01月30日下午,内容为 “深入Linux启动流程 + systemd管理实践” 第二期计划定于:2015年02月13日下午,内容为 “Linux批量部署 + Brtfs文件系...

萧少聪Scott
2015/01/22
265
0
SUSE12公开课,第1期

2015年SUSE公开课日程: 第一期计划定于:2015年01月30日下午,内容为 “深入Linux启动流程 + systemd管理实践” 第二期计划定于:2015年02月13日下午,内容为 “Linux批量部署 + Brtfs文件系...

萧少聪Scott
2015/01/22
0
0
#23 centos5(RHEL)系列操作系统的启动流程、与命令mkinitrd、dracut的使用

centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构; Linux的系统组成:内核 + 应用程序 GUN/Linux:单纯的指Linux内核; 从硬盘存储和启动操作系统的角度: Linux的系统组成:内核 ...

谁等了谁
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

URL/URI/URN的认识

这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等。但是,每次定义的时候,心里都很纠结,是该用imgUrl还...

WinkJie
27分钟前
2
0
vs2017 踩坑

好久没有使用vs2017,改了下代码,启动调试进行测试,一没有注意,就启动了。 然后 ,悲剧了,,,就有下面的问题。 VS断点提示:当前不会命中断点。还没有为该文档加载任何符号 然后百度了下,...

轻轻的走过
27分钟前
3
0
解决一个emqttd trace 无法打开的问题

emqttd这个东西做的真心不咋地,之前有emq_auth_mysql的plugin死活无法启动的问题,现在又碰到trace无法打开的问题。 查看emqttd服务器当前连接的所有client: emqttd_ctl clients list 要打...

莫在全
35分钟前
3
0
java wsdl 中不显示参数属性类型的问题解决方案

CXF3.0.1解决方案: 配合spring方式 <jaxws:endpoint id="receiveUMSMessageService" implementor="com.sw.extInterface.webservice.service.impl.ReceiveUMSMessageServiceImpl" address="......

嘿嘿嘿IT
38分钟前
2
0
go alpine docker image 搭建

Dockerfile 搭建 目录结构 --Dockerfile--main.go 写一个go的helloworld package mainimport ("fmt""log""net/http")func main() {http.HandleFunc("/", hello)err := ht......

solate
44分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部