Linux启动流程CentOS6和7的区别

本文详细介绍了CentOS6和CentOS7的启动流程。CentOS6启动涉及BIOS、MBR、GRUB、内核加载和init进程等环节;CentOS7采用systemd初始化进程服务,开机速度提升。还对比了两个系统在服务器启动与停止管理、运行级别(目标)管理及服务管理方面的命令差异。

Linux启动流程    I

1 CentOS6启动流程    1

1.1 BIOS    1

1.2 MBR    1

1.3 GRUB    1

1.4 kernel(加载内核)    1

1.5 init进程    1

2 CentOS7启动流程Systemd概述    1

2.1 centos7    1

2.2 systemd    1

 

  1. CentOS6启动流程

https://linux.cn/article-8807-1.html

  1. BIOS

 

    开机自检,硬件自检

  1. MBR

        MBR磁盘分区是一种使用最为广泛的分区结构,它也被称为DOS分区结构,但它并不仅仅应用于    Windows系统平台,也应用于Linux,基于X86的UNIX等系统平台。它位于磁盘的0号扇区(一扇    区等于512字节),是一个重要的扇区(简称MBR扇区)。

 

        1、MBR只支持2TB的硬盘

        1、只支持4个主分区

    

    MBR:(master boot loade)主引导记录 446B

    DPT:(disk partition table)磁盘分区表 64B

    Magic:魔术字55AA 2B

    磁盘扇区:0-0-1扇区 引导扇区

    磁盘有三个逻辑概念:磁道,柱面,扇区,512B

  1. GRUB

    1、grub第1.5和2阶段,信息默认存放在扇区中,如果使用grub-install生成的2阶段的文件是存放在/boot分区中的。

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

    3、stage1.5:
        mbr之后的扇区,识别stage2所在的分区上的文件系统

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

 

    操作系统引导菜单

    windows:msconfig

    linux:GRUB

    注意:windows和linux双系统的时候,默认GRUB来引导

  1. kernel(加载内核)

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

  1.     init进程

    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文件

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

  1. CentOS7启动流程Systemd概述

  2.     centos7

    1. 首先BIOS开机自检
    2. 然后进入启动菜单
    3. 然后内核进行初始化
    4. 最后启动初始化进程

       

  3. systemd

    初始化进程作为Linux系统的第一个进程,它需要完成Linux系统中相关的初始化工作,为用户提供合适的工作环境。RHEL/CentOS 7系统已经替换掉了熟悉的初始化进程服务System V init正式采用全新的systemd初始化进程服务。如果您之前学习的是RHEL/CentOS 6系统,可能会不习惯。systemd初始化进程服务采用了并发启动机制,开机速度得到了不小的提升。

CentOS6系统, 管理员可以使用如下指令来管理服务器的启动与停止

//关机相关命令

shutdown -h now //立即关机,常用

init 0 //切换系统关机级别,容易理解

//重启相关命令

reboot //重启命令,常用

init 6 //切换系统重启级别,容易理解

CentOS7系统, 管理员可以使用systemctl命令来管理服务器启动与停止

//关机相关命令

systemctl poweroff //立即关机,常用

//重启相关命令

systemctl reboot //重启命令,常用

Systemd目标名称

无论如何, RHEL/CentOS 7已经没有了"运行级别"这个概念,Linux系统在启动时要进行大量的初始化工作,比如挂载文件系统和交换分区、启动各类进程服务等,这些都可以看作是一个一个的单元Unit, systemd用目标target代替了System V init中运行级别的概念,这两者的区别如下所示

System V init运行级别

systemd目标名称

作用

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

重启

emergency

emergency.target

救援(急救)模式

RHEL/CentOS6系统运行级别管理

//查看运行级别

[root@student ~]# runlevel

N 3 //如果N是其他数字,代表上一次运行级别

//切换运行级别

[root@student ~]# init 3

 

//永久修改配置文件

[root@student ~]# /etc/inittab

RHEL/CentOS7系统目标管理

//查看系统默认启动运行级别

[root@student ~]# systemctl get-default

 

//查看系统有哪些target

[root@oldboy ~]# ls /lib/systemd/system/*.target

/lib/systemd/system/basic.target /lib/systemd/system/poweroff.target

……

 

//修改默认启动运行级别(永久生效)

[root@student ~]# systemctl set-default TARGET.target

# multi-user.target: analogous to runlevel 3

# graphical.target: analogous to runlevel 5

systemd服务管理

由于之前长期使用RHEL/CentOS 6系统, 已经习惯使用service chkconfig等命令来管理系统服务,但在RHEL/CentOS 7系统中是使用systemctl命令来管理服务的。

如下是RHEL/CentOS 6系统中System V init命令与RHEL/CentOS 7系统中systemctl命令的对比,后续课程中会经常用到它们。

systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令

System V init(6系统)

systemctl命令(7系统)

作用

service NAME start

systemctl start NAME.service

启动服务

service NAME stop

systemctl stop NAME.service

停止服务

service NAME restart

systemctl restart NAME.service

重启服务

service NAME reload

systemctl reload NAME.service

重新加载配置(不终止服务)

service NAME status

systemctl status NAME.servre 查

看服务运行状态

 

systemctl is-active sshd.service

查看服务是否在运行中

 

systemctl mask NAME.servre

禁止服务运行

 

systemctl unmask NAME.servre

取消禁止服务运行

systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

System V init(6系统)

systemctl命令(7系统)

作用

chkconfig NAME on

systemctl enable NAME.service

开机自动启动

chkconfig NAME off

systemctl disable NAME.service

开机不自动启动

chkconfig –list

systemctl list-unit-files

查看各个级别下服务的启动与禁用

chkconfig –list NAME

systemctl is-enabled NAME.service

查看特定服务是否为开机自启动

chkconfig–add NAME

systemctl daemon-reload

创建新服务文件或者变更设置

systemctl服务状态说明

服务状态

状态说明

loaded

服务单元的配置文件已经被处理

active(running)

服务的一个或多个进程在运行中

active(exited)

一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)

active(waiting)

服务已经运行但在等待某个事件

inactive

服务没有在运行

enabled

服务设定为开机运行

disabled

服务设定为开机不运行

static

服务不能被设定开机启动,但可以由其他服务启动该服务

 

 

 

转载于:https://www.cnblogs.com/majinhai/p/9534087.html

<think>好的,用户想了解CentOS 6CentOS 7启动流程对比,可能是为了准备面试或者对比两者的差异。首先,我需要回忆这两个版本的主要区别,特别是启动过程的变化。记得CentOS 7采用了systemd替代了传统的SysV init,这一点应该是关键差异。 接下来,启动流程的阶段划分需要明确。CentOS 6启动过程大致分为BIOS、MBR、GRUB、内核加载、init进程、运行级别对应的服务启动。而CentOS 7虽然前几个阶段类似,但到了init进程部分被systemd取代,服务管理方式完全不同。需要分阶段对比,比如预引导阶段、引导加载程序、内核初始化、用户空间初始化、服务管理等部分。 用户可能还想知道具体的组件差异,比如GRUB版本的不同,CentOS 6使用GRUB Legacy,而CentOS 7使用GRUB 2。另外,服务管理工具从chkconfigservice变成了systemctl,运行级别的概念被target取代,这些都需要详细说明。 面试中常见的问题可能包括:主要区别是什么,systemd的优势,如何查看启动时间,如何设置默认运行目标等。需要准备这些问题的答案,并给出具体的命令示例,比如使用systemctl list-units --type=target来查看目标单元。 还要注意引用用户提供的参考内容中的信息,比如引用[1]提到CentOS 7的引导启动方式,预引导阶段的细节。同时,引用[2]中提到的Linux内核版本对容器化的支持,可能systemd的改进有关联,但这里主要聚焦启动流程,可能需要弱化这部分。 最后,确保回答结构清晰,分点对比,使用中文,并且按照要求处理数学公式代码块。检查是否有遗漏的关键点,比如并行启动服务、日志管理工具的变化等,这些都是systemd带来的改进,需要强调以突出差异。</think>### CentOS 6CentOS 7 系统启动流程对比 #### 1. **预引导阶段** - **CentOS 6**: 从BIOS加载MBR(主引导记录),读取第一个扇区的引导程序`GRUB Legacy`,初始化硬件检测[^1]。 - **CentOS 7**: 同样通过BIOS加载MBR,但使用`GRUB 2`作为引导加载程序,支持更复杂的配置动态模块加载[^1]。 #### 2. **引导加载程序** - **CentOS 6**: 使用`GRUB Legacy`,配置文件为`/boot/grub/grub.conf`,手动生成配置。 - **CentOS 7**: 使用`GRUB 2`,配置文件为`/boot/grub2/grub.cfg`,通过`grub2-mkconfig`自动生成配置。 #### 3. **内核初始化** 两者均加载内核`initramfs`镜像,但后续流程不同: - **CentOS 6**: 内核启动后调用`/sbin/init`,基于**SysV init**系统,按运行级别(Runlevel)顺序执行`/etc/rc.d/rc*.d/`中的脚本。 - **CentOS 7**: 内核启动后调用`systemd`(PID=1),替代传统init系统,通过**并行启动服务**提升效率,使用`target`替代运行级别。 #### 4. **用户空间初始化** - **CentOS 6**: - 运行级别定义:`0`(关机)、`1`(单用户)、`3`(多用户文本)、`5`(图形界面)等。 - 服务管理:`service``chkconfig`命令。 - **CentOS 7**: - 使用`target`:例如`multi-user.target`(等价于Runlevel 3)、`graphical.target`(等价于Runlevel 5)。 - 服务管理:`systemctl`命令,支持依赖关系解析按需启动。 #### 5. **关键差异总结** | 特性 | CentOS 6 | CentOS 7 | |---------------------|---------------------------|---------------------------| | 初始化系统 | SysV init | systemd | | 启动速度 | 串行执行脚本,较慢 | 并行启动服务,更快 | | 服务管理命令 | `service`, `chkconfig` | `systemctl` | | 日志管理 | `syslog` | `journald`(二进制日志) | | 默认文件系统 | ext4 | XFS | #### 6. **面试常见问题示例** 1. **systemd的主要优势是什么?** - 并行启动服务、按需加载依赖、统一日志管理(`journalctl`)、支持快照状态回滚[^1]。 2. **如何查看系统启动时间?** ```bash # CentOS 6 who -b # CentOS 7 systemd-analyze ``` 3. **如何设置默认运行目标为多用户模式?** ```bash systemctl set-default multi-user.target ``` 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值