Linux启动流程CentOS6和7的区别
目
录
CentOS6启动流程
https://linux.cn/article-8807-1.html
BIOS
开机自检,硬件自检
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
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来引导
kernel(加载内核)
读取grub.conf文件以确定内核的参数,准备启动内核
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文件
这里面可以自定义开机启动的命令。
CentOS7启动流程Systemd概述
centos7
- 首先BIOS开机自检
- 然后进入启动菜单
- 然后内核进行初始化
- 最后启动初始化进程
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 |
服务不能被设定开机启动,但可以由其他服务启动该服务 |
Linux启动流程CentOS6和7的区别的更多相关文章
- Linux启动流程CentOS6
1.运行级别 0 关机 1 单用户模式,可以想象为Windows的安全模式,主要用与系统修复 2 不完全的命令行模式,不含NFS服务 3 完全的命令行模式,就是标准字符界面 4 系统保留 5 图像模式 ...
- Linux启动流程(CentOS6)
内核级别: (POST)BIOS加电自检-->(Boot Sequence)从BIOS中读取启动顺序-->读取MBR中的bootloader-->加载内核-->读取伪根--&g ...
- Linux启动流程和服务管理(init和systemd)
目录 一:Linux启动流程 init和Systemd的区别 二:Linux服务管理(service,systemctl) 一:Linux启动流程 Rhel6启动过程: Rhel7启动过程: GRUB ...
- 20、linux启动流程和救援模式
1.Linux启动流程 2.Linux运行级别 1.什么是运行级别,运行级别就是操作系统当前正在运行的功能级别 System V init运行级别 systemd目标名称 作用 0 runlevel0 ...
- linux启动流程及自定义gurb
linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...
- linux启动流程
看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...
- Linux启动流程详解
在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...
- Linux启动流程详解【转载】
在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...
- 记录Linux启动流程的工具bootchart
/********************************************************************* * Author : Samson * Date ...
随机推荐
- bzoj 3238: [Ahoi2013]差异【SAM+树形dp】
首先只有lcp(i,j)需要考虑 因为SAM的parent树是后缀的前缀的最长公共后缀(--),所以把这个串倒过来建SAM,这样就变成了求两个前缀的最长公共后缀,长度就是这两个前缀在parent树上的 ...
- UVA - 11552 Fewest Flops
传送门: 题目大意:给你一个字符串,可以平均分成很多段,每一段之内的元素可以任意排序,最后再按原来的顺序把每一段拼起来,问最少的块数.(块:连续相同的一段字符成为一个块) 题解: 首先我们可以发现,每 ...
- Codeforces Round #418 (Div. 2) C
Description Nadeko's birthday is approaching! As she decorated the room for the party, a long garlan ...
- JS与JQ绑定事件的几种方式.
JS与JQ绑定事件的几种方式 JS绑定事件的三种方式 直接在DOM中进行绑定 <button onclick="alert('success')" type="bu ...
- AJPFX关于部分String类方法
string类使用于描述字符串事物常见的操作:1.获取: 1.1 字符串中的包含的字符数,也就是字符串的长度 int length():获取字符串的长度 1.2 根据位置获取位置上的某 ...
- 【转】一个Java对象到底占多大内存?
最近在读<深入理解Java虚拟机>,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存? 在网上搜到了一篇博客讲的非常好 ...
- CSS预处理less基本使用
中文API http://lesscss.cn 变量 @变量名:变量值 @maincolor:#aeeeee; @acolor:#ffffff; @ht200:200px; @ht50:50p ...
- iOS圆形图片裁剪,原型图片外面加一个圆环
/** * 在圆形外面加一个圆环 */ - (void)yuanHuan{ //0.加载图片 UIImage *image = [UIImage imageNamed:@"AppIcon1 ...
- break,continue,return的区别
break,continue,return的区别 break 当break语句用于循环语句时,会终止执行循环,并执行循环后代码(如果有的话). function main() { for(var i ...
- execl, execlp, execle, execv, execvp - 执行某个文件
总览 (SYNOPSIS) #include <unistd.h> extern char **environ; int execl( const char *path, const ch ...