RHEL7与6开机过程比较

在对比两个开机版本之前,还是需要先预习一下RHEL6的开机过程,http://blog.csdn.net/u013028736/article/details/51534773
这里详细介绍了开机的过程,这里简单回忆一下。下面开始对比。

第一步: BIOS自检
这步是找到BIOS检查CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等,(启动顺很熟悉,每次gost装机的时候,要把开机首选项设置成从U盘启动)。

第二步: 读取MBR(Master boot Record)
MBR是位于一扇区,零磁道,0柱面的一个有512B的文件,里面有446B是引导区(PRE-BOOT) ,用来找到活动分区(active)并将活动区读入0×7c00内存,其实被复制到内存的就是我们说的BOOT Loader,准确到电脑上就是GRUB。还有66B是分区表(PARTITION PABLE)这里记录了硬盘信息。(分了几个区之类的)

第三步: 加载Boot Loader
Boot Loader的种类有很多, 其实是一段小程序,初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状 态,以便为最终调用操作系统内核做好一切准备。其中Grub、Lilo和spfdisk是常见的Loader。下面使用Grub(就是开机的时候选择哪一个内核)。

第四步:加载内核
系统将解压后的内核放置在内存中(这里说系统到底是哪一个系统呢?)开始调用start_kernel()函数, 来初始化各种设备,到这里内核环境已经建立起来了。

上面的四步两个版本没差别。

第五步: 加载init
RHEL6 : 加载/sbin/init 程序 ,这个程序的运行内容在/etc/inittab中,下面是inittab中的内容:

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:

这里描述了系统的运行级别。
init 0 halt (Do NOT set initdefault to this)
init 1 Single user mode
init 2 Multiuser, without NFS (The same as 3, if you do not have networking)
init 3 Full multiuser mode
init 4 unused
init 5 X11
init 6 reboot (Do NOT set initdefault to this)
然后读取的就是/etc/rc.sysinit脚本 代码太多。功能是初始化PATH,网络配置(/etc/sysconfig/network),swap,/proc。当然还有rc0 - rc5 就是对应的运行级别 S代表开机启动,K代表开机不启动,中间是服务名字,数字是优先级。
K01smartd K50netconsole K84wpa_supplicant S08ip6tables S13irqbalance S25netfs S70spice-vdagentd S97rhsmcertd

在/etc/rc.d/rc.local是留给用户自定义的地方。

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

对比与RHEL7:
使用了systemd代替了init,开机速度更快(各个服务平行运行)
更改运行基本从6的init + 【数字】变成了
systemctl poweroff
systemctl isolate rescure.target
systemctl isolate multi-usr.target
systemctl isolate graphical.target
systemctl teboot
(2 没写是无网络多用户模式,4,没有使用)

随之而来的是/etc/inittab文件无效。取而代之的是 /etc/systemd/system/default.target,这是一个软链接指向/usr/lib/systemd/system/graphical.target,当改变默认运行级别的时候,软连接指向的文件也随之改变

[root@bogon Desktop]# systemctl set-default multi-user.target 
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

当然 systemctl 也代替了 service。

下一次总结的是rhel6和rhel7修改grub引导配置的区别。

你可能感兴趣的:(linux)