分享交流
合作共赢!

CentOS6与CentOS7的差异对比

 

启动流程

CentOS6启动流程
这里写图片描述

1.post加电自检

这个过程是开机后,BIOS或UEFI进行硬件检查的阶段

2.MBR引导

自检硬件没有问题时候,这里以BIOS为例,BIOS将会直接去找硬盘的第一个扇区,找到前446字节,将MBR加载到内存中,MBR将告诉程序下一阶段去哪里找系统grub引导。此阶段属于grub的第一阶段。grub还有1.5阶段和2阶段。

3.GRUB引导

grub第1.5和2阶段,信息默认存放在扇区中,如果使用grub-install生成的2阶段的文件是存放在/boot分区中的。
为了加载内核系统,不得不加载/boot分区,而加载/boot分区,需要有/boot分区的驱动,/boot分区驱动是放在/boot分区中的,啊,我们好像进入了死循环了,Linux是怎么解决的呢?就是靠放在1.5阶段中的数据,是放在第一个扇区后的后续扇区中,具体占用多少字节,不太清楚,只知道1.5阶段和2阶段总共27个扇区。

stage1.5:

mbr之后的扇区,识别stage2所在的分区上的文件系统

stage2:

开机启动的时候看到的Grub选项、信息,还有修改GRUB背景等功能都是stage2提供的,stage2会去读入/boot/grub/grub.conf或者menu.lst等配置文件

4.读取grub.conf文件

读取grub.conf文件以确定内核启动的参数,准备启动内核

5.启动内核

加载内核,核心开始解压缩,启动一些最核心的程序。
因为为了让内核足够轻小,硬件驱动并没有放在内核文件里面,我们可以看到内核很小,才4M左右,我们可以想象Windows中的驱动,安装系统时候还需要使用驱动软件下载好长时间呢
因此需要使用/initramfs-2.6.32-696.el6.x86_64.img来驱动硬件

[root@CentOS6 ~]# ll -h /boot/vmlinuz-2.6.32-696.el6.x86_64
-r-xr-xr-x. 1 root root 4.1M Jul 8 21:06 /boot/vmlinuz-2.6.32-696.el6.x86_64

6.加载伪文件系统(ramdisk),

内核已将启动起来了,再调用ramdisk文件,尝试驱动所有的硬件设备,到这一步,内核起来了,所有驱动也装上了,因此后面的启动就可以交给程序了

7.启动init进程

grub中默认指定init=/sbin/init程序,可以在grub.conf中kernel行自定义执行程序init=/bin/bash,此时可以绕过下面步骤直接进入bash界面。
内核源代码文件中显示996行左右,规定了init启动的顺序,/sbin/init->/etc/init->/bin/init->/bin/sh,/bin/bash没有写,应该是和/bin/sh一样吧

(1)读取/etc/inittab文件

inittab文件里面定义了系统默认运行级别,这一步做了一些工作如下:

a)初始运行级别(RUN LEVEL)
b)系统初始化脚本
c)对应运行级别的脚本目录
d)定义UPS电源终端/恢复脚本
e)在虚拟控制台生成getty,以生成终端
f)在运行级别5初始化X

(2)执行/etc/rc.d/rc.sysinit程序

系统初始化一些脚本,主要完成以下工作

a)设置主机名
b)设置欢迎信息
c)激活udev和selinux可以在grub.conf中,kernel行添加selinux=0以关闭selinux
d)挂载/etc/fstab文件中定义的文件系统
e)检测根文件系统,并以读写方式重新挂载根文件系统
f)设置系统时钟
g)激活swap设备
h)根据/etc/sysctl.conf文件设置内核参数
i)激活lvm及software raid设备
j)加载额外设备的驱动程序
k)清理操作
(3)/etc/rc#.d/文件(各种服务)

里面定义的是各种服务的启动脚本,可以ls查看,S开头代表开机启动的服务,K开头的是关机要执行的任务。#代表数字,一个数字代表一个运行级别,共7个运行级别,这里就不多说了

(4)/etc/rc.d/rc.local文件

这里面可以自定义开机启动的命令。

8.执行/bin/login

执行/bin/login程序,等待用户登录

CentOS7启动流程

CentOS7和CentOS6启动流程差不多,只不过到init程序时候,改为了systemd,因此详细解释一下systemd后的启动流程

1.uefi或BIOS初始化,开始post开机自检

2.加载mbr到内存

3.GRUB阶段

4.加载内核和inintamfs模块

5.内核开始初始化,使用systemd来代替centos6以前的init程序

(1)执行initrd.target

包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了

(2)从initramfs根文件系统切换到磁盘根目录

(3)systemd执行默认target配置

centos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别时/etc/systemd/system/default.target,根据它的指向可以找到系统要进入哪个模式
模式:

0 ==> runlevel0.target, poweroff.target
1 ==> runlevel1.target, rescue.target
2 ==> runlevel2.target, multi-user.target
3 ==> runlevel3.target, multi-user.target
4 ==> runlevel4.target, multi-user.target
5 ==> runlevel5.target, graphical.target
6 ==> runlevel6.target, reboot.target
(4)systemd执行sysinit.target

有没有很眼熟?是的,在CentOS6上是被叫做rc.sysint程序,初始化系统及basic.target准备操作系统

(5)systemd启动multi-user.target下的本机与服务器服务

(6)systemd执行multi-user.target下的/etc/rc.d/rc.local

6.Systemd执行multi-user.target下的getty.target及登录服务

getty.target我们也眼熟,它是启动终端的systemd对象。如果到此步骤,系统没有被指定启动图形桌面,到此就可以结束了,如果要启动图形界面,需要在此基础上启动桌面程序

7.systemd执行graphical需要的服务

CentOS6,7启动区别

系统启动和服务器守护进程管理器,它不同于centos5的Sysv init,centos6的Upstart(Ubuntu制作出来),systemd是由Redhat的一个员工首先提出来的,它在内核启动后,服务什么的全都被systemd接管,kernel只是用来管理硬件资源,相当于内核被架空了,因此linus很不满意Redhat这种做法。

Sysv init运行程序顺序:

主要的区别就在这了。

桌面系统

[CentOS6] GNOME 2.x
[CentOS7] GNOME 3.x(GNOME Shell)

文件系统

[CentOS6] ext4(Fourth EXtended filesystem)
[CentOS7] xfs
1.实际测试Ext4的单个目录文件超过200W个,性能下降的就比较厉

2.Ext4 的inode 个数限制(32位数)最多只能有大概40多亿文件。而且Ext4的单个文件大小最大只能支持到16T(4K block size) 的话,这些至少对于目前来说已经是瓶颈了…
3.XFS使用64位管理空间,最大支持8EB减1字节的单个文件系统,实际部署时取决于宿主操作系统的最大块限制。对于一个32位Linux系统,文件和文件系统的大小会被限制在16TB
1024M=1G
1024G=1T
1024T=1PB
1024PB=1EB
ZB
YB
NB
DB

内核版本

[CentOS6] 2.6.x-x
[CentOS7] 3.10.x-x

启动加载器

[CentOS6] GRUB Legacy (+efibootmgr)
[CentOS7] GRUB2

防火墙

[CentOS6] iptables
[CentOS7] firewalld

默认数据库

[CentOS6] MySQL
[CentOS7] MariaDB

文件结构

[CentOS6] /bin, /sbin, /lib, and /lib64在/下
[CentOS7] /bin, /sbin, /lib, and /lib64移到/usr下

主机名

[CentOS6] /etc/sysconfig/network
[CentOS7] /etc/hostname

时间同步

[CentOS6]
ntp

“>ntpntp ntpq -p

[CentOS7]
chrony

“>chronychrony chronyc sources

修改时间

[CentOS6]
vim/etc/sysconfig/clockZONE=”Asia/Tokyo”UTC=fales

“>vim/etc/sysconfig/clockZONE=Asia/TokyoUTC=falesvim/etc/sysconfig/clockZONE=”Asia/Tokyo”UTC=fales sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

[CentOS7]
timedatectlset−timezoneAsia/Tokyo

“>timedatectlsettimezoneAsia/Tokyotimedatectlset−timezoneAsia/Tokyo timedatectl status

修改地区

[CentOS6]
vim/etc/sysconfig/i18nLANG=”jaJP.utf8”

“>vim/etc/sysconfig/i18nLANG=jaJP.utf8vim/etc/sysconfig/i18nLANG=”jaJP.utf8” /etc/sysconfig/i18n
$ locale

[CentOS7]
localectlset−localeLANG=jaJP.utf8

“>localectlsetlocaleLANG=jaJP.utf8localectlset−localeLANG=jaJP.utf8 localectl status

服务相关

1)启动停止
[CentOS6]
serviceservicenamestart

“>serviceservicenamestartserviceservicenamestart service service_name stop
$ service sshd restart/status/reload

[CentOS7]
systemctlstartservicename

“>systemctlstartservicenamesystemctlstartservicename systemctl stop service_name
$ systemctl restart/status/reload sshd

2)自启动
[CentOS6]
$ chkconfig service_name on/off

[CentOS7]
systemctlenableservicename

“>systemctlenableservicenamesystemctlenableservicename systemctl disable service_name

3)服务列表
[CentOS6]
$ chkconfig –list

[CentOS7]
systemctllist−unit−files

“>systemctllistunitfilessystemctllist−unit−files systemctl –type service

4)强制停止
[CentOS6]
$ kill -9

[CentOS7]
$ systemctl kill –signal=9 sshd

网络

1)网络信息
[CentOS6]
netstat

“>netstatnetstat netstat -I
$ netstat -n

[CentOS7]
ipn

“>ipnipn ip -s l
$ ss

2)IP地址MAC地址
[CentOS6]
$ ifconfig -a

[CentOS7]
$ ip address show

3)路由
[CentOS6]
route−n

“>routenroute−n route -A inet6 -n

[CentOS7]
iprouteshow

“>iprouteshowiprouteshow ip -6 route show

重启关闭

1)关闭
[CentOS6]
$ shutdown -h now

[CentOS7]
poweroff

“>poweroffpoweroff systemctl poweroff

2)重启
[CentOS6]
reboot

“>rebootreboot shutdown -r now

[CentOS7]
reboot

“>rebootreboot systemctl reboot

3)单用户模式
[CentOS6]
$ init S

[CentOS7]
$ systemctl rescue

4)启动模式
[CentOS6]
[GUICUI]
vim/etc/inittabid:3:initdefault:[CUIGUI]

“>vim/etc/inittabid:3:initdefault:[CUIGUI]vim/etc/inittabid:3:initdefault:[CUIGUI] startx

[CentOS7]
[GUICUI]
systemctlisolatemulti−user.target[CUIGUI]

“>systemctlisolatemultiuser.target[CUIGUI]systemctlisolatemulti−user.target[CUIGUI]systemctl isolate graphical.target
默认
systemctlset−defaultgraphical.target

“>systemctlsetdefaultgraphical.targetsystemctlset−defaultgraphical.target systemctl set-default multi-user.target
当前
$ systemctl get-default

此内容查看价格0.1立即购买
赞(0) 打赏
未经允许不得转载:琼杰笔记 » CentOS6与CentOS7的差异对比

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册