centos7 开机后进去了命令行_Linux系统管理:开机启动流程(二)

本文详细介绍了CentOS7系统开机启动的全过程,包括BIOS自检、MBR加载、GRUB2引导、Kernel内核引导、Systemd管理以及Runlevel-Target的概念。讲解了GRUB2配置、内核加载、Systemd的优势以及如何进入单用户模式和救援模式。此外,还提到了Systemd在开机启动服务管理中的重要性和相关命令。
摘要由CSDN通过智能技术生成

CentOS7

1.BIOS(开机自检)

2.MBR ( Master Boot Record 主引导记录)

3.GRUB2 Bootloader(引导菜单)

4.Kernel(内核引导)

5.Systemd (不再使用init,改成了systemd)

6.Runlevel-Target (运行级别)

1.BIOS

基本输入/输出系统是一个固件接口,它不仅控制启动过程,还提供对连接的外围设备的低级接口的所有控制。打开系统电源后,它将读取所有设备设置并执行开机自检(开机自检)过程,以识别硬件设备,以测试和初始化系统硬件组件。成功后处理后,它将加载MBR(主引导记录)以进行下一个引导处理。

2.MBR引导

主引导记录放在Linux引导硬盘的第一个扇区中,此信息通过BIOS预加载到ROM(只读内存)中。

MBR的大小只有512个字节,它包含用于引导操作系统的机器代码指令,称为引导加载程序,以及分区表。一旦BIOS找到引导加载程序(GRUB2)并将其加载到(ROM)内存或硬盘驱动器中,它就会控制引导过程。只是MBR(主引导记录)加载并执行GRUB2引导加载程序。

3.GRUB2(引导加载程序版本2)引导加载程序

言简意赅:grub2菜单,如果装了双系统会让你进行选择,Linux?还是windows?还是MacOS?

GRUB2是所有最新版本(如Red Hat/CentOS 7)中的默认引导加载程序,也是9.10版中的Ubuntu。它已经被GRUBbootloader(也称为GRUBLegacy)所取代。

grub2配置文件位于/boot/grub2/grub.cfg中,由grub2 mkconfig使用/etc/grub.d中的模板和/etc/default/grub中的设置自动生成。不建议编辑GRUB2配置文件。

引导加载程序(rhel 7的grub2)启动rhel7内核和初始RAM磁盘(initrd)。GRUB 2安装在服务器硬盘的引导扇区中,配置为加载Linux内核和initramfs,initrd是一个初始根文件系统,将在Linux系统上的实际根文件系统之前安装。

4.kernel内核引导

Linux内核是操作系统的核心,它是系统上第一个加载的程序。当系统启动时,内核从initrd.img加载所有必要的内核模块和驱动器,以加载Linux7中的系统第一个进程systemd,在6里面,init是爸爸,在7里面换了个爸爸,那就是systemd

下面的命令将帮助您找到SystemD进程ID(PID)

[root@zls ~]# ps -ef | grep 折叠ystemd
root 1 0 0 7月14 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 347 1 0 7月14 ? 00:00:00 /usr/lib/systemd/systemd-journald
root 379 1 0 7月14 ? 00:00:00 /usr/lib/systemd/systemd-udevd
root 522 1 0 7月14 ? 00:00:00 /usr/lib/systemd/systemd-logind
dbus 525 1 0 7月14 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation

systemd管理进程

systemd使用“targets”而不是runlevels。默认情况下,有两个主要级别:

1) multi-user(多用户).target: analogous to runlevel 3

#查看运行级别
[root@zls ~]# systemctl get-default
multi-user.target

2) graphical(图形化).target: analogous to runlevel 5

#设置默认运行级别
[root@zls ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
#查看默认界面
[root@zls ~]# systemctl get-default
graphical.target
[root@zls ~]# vim /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

CentOS7中的运行级别:

runlevel0.target -> poweroff.target

runlevel1.target -> rescue.target

runlevel2.target -> multi-user.target

runlevel3.target -> multi-user.target

runlevel4.target -> multi-user.target

runlevel5.target -> graphical.target

runlevel6.target -> reboot.target

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户运行级别(没有文件系统)

运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式

运行级别4:多用户运行级别

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

CentOS7如何进入单用户模式

1.重启Linux系统主机并出现引导界面时,按下键盘上的e键,进入内核编辑界面

593a93ac72cf1eaab4335a8548507ff9.png

2.在Linux16这行后面添加enforcing=0 init=/bin/bash,然后按下Ctrl+X组合键来运行修改过的内核程序

76bd49d91f7d73afb51b0820b33004aa.png

3.然后进入单用户模式界面。

#重新挂载/目录
bash-4.2# mount -o rw,remount /
#非交互设置root密码
bash-4.2# echo 1 |passwd --stdin root
#重新引导系统
bash-4.2# exec /sbin/init

1f6a7d8cc47cf4c8f032c5efa63c465f.png

不需要重新挂载的方式

5c7a651f765d288fb1f8d5c66f3e6505.png

如果centos7系统运行级别被设置成重启的级别...

386677762a6983fd5f04ab9c90f20bf0.png

eb2de3e84c96dab577eef39965d20fbc.png

CentOS7通过光盘进入救援模式

1.挂载光盘镜像

0de27bcea86e04512a60e8ea4164df8e.png

2.从BIOS启动

9c166fe947f0854c727583416f588ff7.png

3.进入BIOS设置从光盘启动

7cc78b89e7a1f7c3fc1a1f9c0c48e7e5.png

4.按F10保存并退出

33bbb70e358569cca29e8d27f0d5d257.png

5.进入救援模式

2c450e7fd71a1a9f67772d2017b39939.png

6.选择救援模式

3535e2bf8825575cbff8bafc4dc2cb77.png

7.选择继续

34f752a0038227b8239ebc03a4dcdd1c.png

接下来就可以...做你想做的事

生产场景1:

当系统坏了,无法登陆系统,但是需要把里面的数据拷贝出来,怎么办?

bash-4.2# mkfs.xfs -f /dev/sdc
bash-4.2# mkdir /data
bash-4.2# mount /dev/sdc /data
bash-4.2# cp -a /raid0 /data
bash-4.2# umount /dev/sdb

生产场景2:

修复MBR,主要出现在安装双系统的时候,后安装的系统把原来的MBR删除了,需要修复

1.破坏硬盘的钱446字节,模拟MBR引导损坏,会发现重启无法启动系统

[root@zls ~]# dd < /dev/zero >/dev/sda bs=1 count=446
记录了446+0 的读入
记录了446+0 的写出
446字节(446 B)已复制,0.0011061 秒,403 kB/秒

2.重启,查看系统状态

824eb4d00dbc01d1f58b252b516315bf.png

3.重启进入救援模式

2371720f865cecedd95c0228a5c3f3b4.png

4.进入系统,获取root权限

5acbc82103de663fd7b57bea63e75a94.png

5.修复MBR引导,然后重启连接服务器

09f1dcbdb2d2655df98d0d2c2e4f99af.png
#修复grub
bash-4.2# grub2-install /dev/sda
#退出
bash-4.2# exit
#重启进入系统
bash-4.2# reboot

生产场景3:

CentOS7 误删除grub文件,进行修复

1.模拟故障

#删除grub2
[root@zls ~]# rm -fr /boot/grub2/
#重启
[root@zls ~]# reboot

2.查看系统状态

98ce3b0e0169129361bf6a1ddb7fe9c5.png

3.重启进入救援模式

0526a1db4fa03cb9355ad05e509ceca6.png

4.重新安MBR,加载grub2中的grub.cfg文件

5c6efe0118702cf0805ad6761f382121.png

bash-4.2# chroot /mnt/sysimage
bash-4.2# grub2-install /dev/sda
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg

5.查看加载出来的文件

5f75a4fccff6dfbab0f72424cd38cf6e.png
bash-4.2# ls /boot/grub2

6.退出重启

bash-4.2# exit
sh-4.2# reboot

cefa6e8f0f929d1cb135c38ea87db3a7.png

满血复活...

修改CentOS7网卡名称为eth0和eth1

这个可以在安装系统的时候,修改网卡名称,如果已经安装过的系统,那我们还是从BIOS界面到光盘启动,进入系统安装界面。

f0b821b4c01c62dbe45059c56dae3ead.png

选择 Install CentOS 7然后按下Tab键

7b2bf7238db2ddfcd8d05cfefc46d514.png

biosdevname=0 net.ifnames=0

如果不是dell物理机环境:

net.ifnames=0

Systemd 进程管理

systemd的由来

Linux一直以来都采用init进程作为爸爸,但是init有两个缺点:

1.启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。

2.启动脚本复杂,初始化完成后,系统会加载很多脚本,脚本都会处理各自的情况,这回让脚本多而复杂。

CentOS5 是启动速度最慢的,串行启动过程,无论进程相互之间有无依赖关系。

CentOS6 相对启动速度有所改进,有依赖的进程之间依次启动而其他没有依赖关系的则并行启动。

CentOS7 所有进程无论有无依赖关系,都并行启动,当然有很多时候进程并没有真正的启动而是只有一个信号或者说是标记,在真正利用的时候,才会真正启动。

这就类似咱们使用的windows,最开始win95,win98,win7启动速度极其的慢,从win8,开始win8.1,win10启动速度,快的yp...噌一下子就起来了。

b2311ef6fdcfb1aa94ca4d92174e4cca.png

什么是systemd

systemd即为system daemon守护进程,systemd主要解决上文的问题而诞生,systemd的目标是,为系统的启动和管理提供一套完整的解决方案。

systemd的优势

1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)

2.CentOS7 支持开机并行启动服务,显著提高开机启动效率

3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。

4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。

5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。

systemd相关的配置文件

/usr/lib/systemd/system #类似C6系统的启动脚本目录/etc/init.d/

/etc/systemd/system/ #类似C6系统的/etc/rc.d/rcN.d/

/etc/systemd/system/multi-user.target.wants/

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 crond startsystemctl start crond.service启动服务service crond stopsystemctl stop crond.service停止服务service crond restartsystemctl restart crond.service重启服务service crond reloadsystemctl reload crond.service重新加载配置(不终止服务)service crond statussystemctl status crond.servre查看服务运行状态systemctl is-active sshd.service查看服务是否在运行中systemctl mask crond.servre禁止服务运行systemctl unmask crond.servre取消禁止服务运行

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

System V init(6系统)systemctl命令(7系统)作用chkconfig crond onsystemctl enable crond.service开机自动启动chkconfig crond offsystemctl disable crond.service开机不自动启动chkconfig --listsystemctl list-unit-files查看各个级别下服务的启动与禁用chkconfig --list crondsystemctl is-enabled crond.service查看特定服务是否为开机自启动chkconfig--add crondsystemctl daemon-reload创建新服务文件或者变更设置

systemctl服务状态说明

服务状态状态说明loaded服务单元的配置文件已经被处理active(running)服务的一个或多个进程在运行中active(exited)一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)active(waiting)服务已经运行但在等待某个事件inactive服务没有在运行enable服务设定为开机运行disabled服务设定为开机不运行static服务不能被设定开机启动,但可以由其他服务启动该服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值