话说CentOS6的启动流程
1.按下开机按钮,电脑的主板通电,电脑开始加电自检(POST,Power On and Self Test),测试主机的硬件是否满足开机的要求.
2.加载主板上的BIOS(Base Input/Output System,基本输入输出系统),BIOS会加载用户设定的第一个可开机设备.,这里我们只说硬盘的加载.
可以按下键盘上的Esc或者是F2或者是Del键,可以调整开机设备,这个键依据每个主板的不同而不同.
3.BIOS加载硬盘的第一个分区的第一个扇区内的内容,也叫做MBR(Master Boot Record,主引导记录).
MBR只有512byte大小,由三部分组成:主引导记录,硬盘分区表和硬盘有效标志,其中主引导记录占用446byte,硬盘分区表占用64byte,硬盘有效标志占用2byte,通常为55AA.
4.由MBR来加载CentOS系统的开机系统管理程序GRUB(GRand Unitifed Bootloader),也就是/boot/grub/grub.conf文件.
grub.conf这个文件的内容如下:
#指定默认加载第一个系统,如果没有这一项,用户不选择的话,系统默认会一直停在这里
default=0
#开机菜单显示的时间,不建议设置太长时间
timeout=5
#开机菜单显示时的背景图,分辨率为640*480
splashimage=(hd0,0)/grub/splash.xpm.gz
#这一项为默认隐藏菜单,可以省略
hiddenmenu
#显示的开机菜单
title CentOS 6 (2.6.32-642.el6.x86_64)
#指定系统所在的硬盘的第一个分区
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=234a19e9-96c4-4710-af9b-536fdefbe875 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
#指明内核kernel的地址,这里的根文件系统为/boot这个分区,后面接的是开机时内核加载的参数
#ro指定开机过程中,以ro(ready only)方式加载根文件系统
#root=UUID=234a19e9-96c4-4710-af9b-536fdefbe875为系统的真正的根,这里是用硬盘分区的UUID号指定的
#rd_NO_LUKS 的意思是说系统上禁用会被initrd或init脚本自动挂载的加密设备
#LANG=en_US.UTF-8指定系统所用的语言
#rd_NO_LVM为系统不启用LVM逻辑卷
#rd_NO_MD 选项为系统禁用软RAID设备
#SYSFONT=latarcyrheb-sun16选项为系统开机时所用的字体
#KEYBOARDTYPE=pc选项为指定键盘的类型
#KEYTABLE=us选项为指定美式键盘
#rd_NO_DM选项为不启用硬RAID
#rhgb选项为不显示开机的画面
#quiet选项指定系统开机过程中加载的各种信息不显示出来
#指明initramfs.img文件的地址,这里默认的根系统为/boot分区
initrd /initramfs-2.6.32-642.el6.x86_64.img
5.依据GRUB中的信息,加载CentOS6系统的内核到内存中,并把内核解压缩.
6.内核初始化完成后,会加载initramfs.img这个虚拟的文件系统,并根据initramfs.img提供的各种驱动探测加载主机上所有的硬件设备,然后以只读的方式挂载根文件系统.
7.执行/sbin/init程序,读取系统的/etc/inittab文件,取得系统的运行级别,同时运行/etc/rc.d/rc.sysinit程序,初始化系统的各种信息,比如:
读取主机名hostname,
依据/etc/issue文件读取系统的欢迎信息
激活udev和selinux
检测根文件系统,并根据/etc/fstab文件来以读写方式重新挂载根文件系统
设置系统时钟
激活swap分区
根据/etc/sysctl.conf文件设置内核参数
激活lvm及software raid设备
加载额外设备的驱动程序
8.根据系统的运行级别,运行/etc/rc.d/rc#.d/下的各种文件,这里所有的文件都是/etc/rc.d/init.d/目录下文件的软链接
这个文件夹下面的程序都是以K和S开头的,基中
以K开头的文件是在系统开机过程中要被运行的服务,K后面跟的数字表示的是服务的运行次序;数字越小,越先运行;数字越小的服务,通常都会依赖到别的服务,
以S开关的服务则表示的是系统在关机或是切换运行级别时要结束的服务,S后面跟的数字表示的是服务结束的次序;数字越小,越先被结束;数字越小的服务,通常为被依赖到的服务
9.正常级别下,前面的程序运行完毕后, 最后一个S99local的程序指向/etc/rc.d/rc.local这个脚本,用户可以在这个脚本里可以写入自己不方便或是不需写入的系统服务脚本.
10.执行/bin/login程序,进入登录状态,等待用户登录
话说CentOS6的启动流程的更多相关文章
- CentOS6启动流程(含详细流程图)
参考:Linux启动流程和grub详解(作者:好笔记运维) 为什么把这位的参考放在前面,主要是这位大佬的流程图太详细了.虽说不一定要了解这么详细,但还是很佩服啊.不多说,上图(在新标签中打开图片) 下 ...
- CentOS的启动流程
因6和7俩个系列的启动流程有区别,所以我把他们分开来写 linux可看作是内核和根文件系统组成我们把内核单独拿出来总结一下 CentOS6系列启动流程 首先总结一下总体的流程,接下来展开来叙述:POS ...
- Linux-CentOS6.9启动流程排错
1 . CentOS6.9启动流程 POST 加电自检,是BIOS功能的一个主要部分.负责完成对CPU.主板.内存.硬盘子系统.显示子系统.串并行接口.键盘.CD-ROM光驱等硬件情况的检测. Boo ...
- CentOS6 启动流程图文解剖
我们在使用Linux操作系统的时候,我们只需按下电源键,等待,然后输入账户和密码就可以使用Linux操作系统了.那么在按下电源到输入账号和密码之前,操作系统都做了些什么?下面就来讲述在这段时间发生的动 ...
- CentOS6启动流程
CentOS6启动流程 1.加载BIOS的硬件信息,获取第一个启动设备 在通电之后,CentOS6会进行加电自检(Power On Self Test),这个过程主要是由BIOS完成的.在自检完毕,会 ...
- Linux启动流程CentOS6和7的区别
目 录 Linux启动流程 I 第1章 CentOS6启动流程 1 1.1 BIOS 1 1.2 MBR 1 1.3 GRUB 1 1.4 kernel(加载内核) ...
- centos6之前版本的启动流程
centos6 之前的系统启动: linux启动流程: 1)加电自检 2)读取MBR,引导加载程序grub,完成grub的三个阶段. 3)加载系统内核kernel,执行系统初始化信息. 4)启动用户空 ...
- Linux操作系统-CentOS6启动流程和服务管理
Linux操作系统-CentOS6启动流程和服务管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux组成 1>.Linux: kernel+rootfs ker ...
- CentOS6和7启动流程
CentOS6启动流程 https://linux.cn/article-8807-1.html BIOS 开机自检,硬件自检 MBR MBR磁盘分区是一种使用最为广泛的分区结构,它也被称为DOS分区 ...
随机推荐
- deeplearning.ai 卷积神经网络 Week 3 目标检测 听课笔记
本周的主题是对象检测(object detection):不但需要检测出物体(image classification),还要能定位出在图片的具体位置(classification with loca ...
- BZOJ:4209: 西瓜王
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4209 (虽然仅仅是看在名字的份上,我们还是得说这题是一道) 绝世好题!西瓜王!西瓜王!西瓜 ...
- [国嵌攻略][108][Linux内核链表]
链表简介 链表是一种常见的数据结构,它通过指针将一系列数据节点连接成一条数据链.相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入 ...
- RegExp对象的三个方法
RegExp 对象有 3 个方法:test().exec() 以及 compile(). test( ) test()方法检索字符串中的指定值.返回值是true或false. 例子: 因为字符 ...
- 坑爹的file_exists
介绍 我发现了一个问题,今天与大家分享.我把整个过程描述一下. 问题 公司有个框架是基于smarty写的,我负责php的升级,维护人员把新环境布上来之后,测试人员找我提出经常报错(错 ...
- window.top.location.href 和 window.location.href 的区别
window.location.href 是本页面跳转 window.top.location.href是最外层的页面跳转
- html动态生成的代码,绑定事件
如果使用jQuery,你可以这样写: // .class为你绑定事件的动态生成的结点 $(document).on('click', '.class', function() { // 你要绑定的事件 ...
- CColor类封装
CColor类封装 Color.h #pragma once #include <sstream> #include <string> using namespace std; ...
- mybatis中@Param的用法和作用
用注解来简化xml配置的时候,@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中 我们先来看Mapper接口中的@Select方法 package Ma ...
- Linux指令--性能监控和优化命令相关指令
原文出处:http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html.感谢作者无私分享 性能监控和优化命令相关指令有:top,free,v ...