centos6启动过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos6启动过程相关的知识,希望对你有一定的参考价值。
前言
每次在虚拟机里点击开启虚拟机后会看到屏幕不停地出现很多代码,后面有些跟着【ok】,有些代码后面跟着红色的【failed】。那么问题来了,为啥有些启动服务都失败了,系统还是进去了呢?本文就此给大家详细介绍一下,centos5和6 的启动流程。以后遇到系统无法启动,可以做到心中有数。
一、加电自检POST,通过Bios读取cmos上的配置信息,读取硬件的信息。并检测能否正常运行,硬件设备初始化。
二、选择启动顺序
1、加载MBR,存在于0磁道0扇区前446字节;
2、读取位于MBR中存放的bootloader,功能是:识别、加载操作系统中的核心文件,交给内存。提供菜单信息和用户选择加载不同的操作系统,告诉下一阶段去哪里找系统和grub引导。
3、为了打破MBR中只有446Byte存放bootloader,grub分为三个阶段
stage1:存放于MBR中,用于加载stage1_5阶段,目的是为了识别并驱动stage2所在分区文件系统。
stage1_5: 存放于MBR之后的扇区,让stage1中的bootloader能识别stage2所在分区的文件系统
stage2:存放于磁盘分区上(/boot/grub),用于加载临时根文件ramdisk和加载内核文件
功能:(1)提供启动菜单、并提供交互式接口
a:内核参数
e:编辑模式、用于编辑菜单
c:命令模式,交互式接口
(2)加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏启动菜单
(3)为菜单提供了保护机制
为编辑启动菜单进行认证
为启用内核或操作系统进行认证
总结:stage1_5就是向grub提供文件系统的驱动的,这样stage1就能访问stage2及内核所在分区(/boot)
grub的配置:/etc/grub.conf,读取此文件的参数,准备启动内核
三、加载系统内核kernel,执行系统初始化信息
内核存放在/boot下,是一个vmlinuz的文件,通过initramfs文件(ramdisk)虚拟一个根文件系统在内存中,来加载合适的驱动程序,并以只读方式加载真正的根文件系统,然后运行用户空间的第一个应用程序/sbin/init
ramdisk:centos 5 iniCentOS 5: initrd
工具程序:mkinitrd
CentOS 6,7: initramfs
工具程序:mkinitrd, dracut
制作ramdisk文件的制作:
(1) mkinitrd命令
为当前正在使用的内核重新制作ramdisk文件
mkinitrd /boot/initramfs-$(uname-r).img $(uname-r)
(2) dracut命令
为当前正在使用的内核重新制作ramdisk文件
dracut /boot/initramfs-$(uname-r).img $(uname-r)
四、启动/sbin/init
1、 init的程序的类型:
SysV: init, CentOS 5之前 配置文件:/etc/inittab
Upstart: init,CentOS6 配置文件:/etc/inittab————————-仅设置设置默认运行级别
/etc/init/*.conf ——————-Upstart将配置文件拆分存放于/etc/init下以.conf结尾
Systemd:systemd, CentOS 7 配置文件:/usr/lib/systemd/system、/etc/systemd/system
2、流程
(1)初始运行级别
(2)系统初始化脚本————–/etc/rc.d/rc.sysinit:a、设置主机名(/etc/sysconfig/network中的HOSTNAME)
b、欢迎信息
c、激活udev和selinux
d、 挂载/etc/fstab定义的文件系统
e、挂载根文件系统(读写方式)
f 、系统时钟
g、根据/etc/sysctl.conf文件设置内核参数
h、激活swap
i、激活LVM和software RAID设备
j、加载额外的驱动程序
k、清理操作
(3)对应运行级别的脚本目录
centos 5 的/etc/inittab有类似的几行: 13:3:wait:/etc/rc.d/rc 3 ————–读取/etc/rc.d/rc3.d的链接文件来决定如何启动或关闭赴服务:S开头的 进行start操作,K开头的stop。链接文件的源文件在/etc/init.d/目录下服务脚本
例外:S99local没有链接到/etc/init.d/下的服务脚本,而是链接到/etc/rc.d/rc.local (/etc/rc.local)。后序如果有不方便或者没必要写进脚本的程序,又希望开机自启动,可以直接写进这个脚本。
(4)配置好组合键的功能
(5)配置不断电系统PF、PR
(6)启动tty6个终端
(7)如果是3级别,启动字符界面
五、启动终端,登录。
六、到这里linux大概的过程就结束了,学习启动过程是为了在系统出故障时,能做到快速判断。后面一篇文章会详细模拟启动故障,根据启动所需的文件来恢复。
以上是关于centos6启动过程的主要内容,如果未能解决你的问题,请参考以下文章