引导过程和服务控制

目录

一、引导过程

1、定义

2、引导过程

二、服务控制

1、概念

2、 特点

3、单元类型

4、以 nginx.service 内容为例

5、系统的运行级别

6、如何对服务进程进行控制?

6.1操作

6.2控制类型

start 启动

stop 停止

restart 重启 先关闭再开启。

reload 重新加载单元配置

status 查看服务状态

三个实验

1、mbr引导:mbr分区表被删了,如何恢复?

2、grub引导菜单故障

3、root密码忘了


一、引导过程

1、定义

当你按下开机的电源键直到屏幕显示登录的画面,这中间系统做的一些开机过程

2、引导过程

2.1 服务器开机之后,根据主板的bios设置,对cpu、内存、显卡、键盘等待设备进行初步的检测。检测成功后,根据预设的启动顺序(默认的启动顺序,第二个就是硬盘,要么就是手工设置的u盘启动)系统的控制权从bois转到了硬盘(大多数时候转移给了本机的硬盘)

总结:初步检测硬件工作是否正常,检测成功后,把系统的引导控制权交给硬盘或者光驱或者u盘

2.2 MBR引导

MBR是硬盘的分区记录表,在这个表里面记录硬盘的分区,以及系统的启动盘的位置在哪儿。

系统的控制权到了硬盘,根据mbr记录表来找,系统的启动盘,找到之后将系统的控制权传递给包含操作系统引导文件的分区,以及mbr记录中,系统的启动菜单(grub)

2.3 GRUB菜单

硬盘启动之后,找到系统分区,也找到操作系统所在的位置,grub就会显示启动菜单,包含所有当前可选的操作系统。选择了其中一个操作系统之后,系统转移控制权,转移到操作系统的内核文件。

注意:centos7之后使用的都是grub2启动引导器

2.4 加载内核文件

操作系统的内核文件是一个预先编译好的特殊的二进制文件(可执行的代码)介于硬件资源和系统程序之间。负责分配资源,调动资源。只是分配和调动,并没有真正的运行。预加载到内存当中,系统程序等待启动。

2.5 init/systemd启动方式

/sbin/init进程是系统当中的第一个进程,是所有其他进程的父进程。init进程在系统中的进程号永远是1。

init是串行,一个一个启动,速度慢。

lib/systemd/system 是系统的第一个进程,他的进程号也是1。

systemd是并行,加载在内存中的程序,一起启动,速度快。

二、服务控制

systemd单元类型

1、概念

systemd是centos7之后用来管理系统服务进程管理。使用单元模式(unit)来描述和控制系统服务和资源

2、 特点

1、支持并行服务,提高系统的启动速度

2、可以自动重启

3、可以在进程运行期间动态的控制他的资源和相关服务参数。

4、可以自动解决服务启动过程中的依赖关系。

5、支持多种管理方式—命令行操作*、图形化工具。

3、单元类型
单元类型扩展名描述
service.service描述一个系统进程
target.target描述一组systemd的单元,进程在不同运行级别下的状态。
socket.socket程启动时根据其配置分配系统端口,监听端口状态。如果有请求,维护端口通信(提供网络服务)
device.device管理硬件设备,驱动程序,设备文件,设备属性
mount.mount管理文件系统的挂载,以及挂载之后的数据管理
automount.automount根据配置,自动的实现设备或者系统文件的挂载 
4、以 nginx.service 内容为例

1、[Unit]

# [Unit]:服务的说明

2、Description=nginx - high performance web server

# description:描述信息

3、Documentation=nginx documentation

# documentation:文档所在位置

4、After=network-online.target remote-fs.target nss-lookup.target

# after:依赖,启动的这个进程,systemd会根据after的条件把相关的进程一并启动。

5、Wants=network-online.target————#先启动网络服务,才能启动nginx

# wants:也是一个依赖条件,systemd也会把这个网络功能一并启动

6、[Service]

# [service]:服务运行的参数设置

7、Type=forking

# 后台运行

8、PIDFile=/usr/local/nginx/run/nginx.pid

# 服务进程号。注意文件位置,如果不对 启动不了

9、ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

# 注意启动文件位置

10、ExecReload=/bin/kill -s HUP MAINPID

# 重启进程

11、ExecStop=/bin/kill -s TERM $MAINPID

# 停止进程

12、[Install]

# 服务安装的相关设置,以及运行的模式

13、WantedBy=multi-user.target————#支持多用户模式

# 支持多用户模式

5、系统的运行级别

运行级别 systemd对应target的 说明

0 target 关机

1 rescue.target 单用户模式,系统维护时使用

2 multi-user.target 字符模式,和3一样

3 multi-user.target 字符模式,完整的字符模式,3模式可以支持多用户,在工作中,我们遇到的都是3

4 multi-user.target 字符模式,和3一样

5 graphical.target 图形化多用户模式(工作中没有)

6 reboot.target 重启

—查看系统运行级别 runlevel 切换系统级别 init 0 1 2 3 4 5 6

6、如何对服务进程进行控制?
6.1操作

systemctl 控制类型 服务名称(进程)

6.2控制类型
start 启动
stop 停止
restart 重启 先关闭再开启。

先stop 再start(修改服务的配置文件,必须要重启服务才能生效)

reload 重新加载单元配置

daemon-reload

status 查看服务状态

——running正常运行

——dead服务停止

——fail启动失败

要查找启动失败的原因:

exit-code 真正的启动失败 -报错

result:signal 表面有人强制终止了该进程,不一定是报错

三个实验

注意:这三个实验的虚拟机的设备状态和iso映像文件一定一定一定要选中!!!

1、mbr引导:mbr分区表被删了,如何恢复?

第一步:

打开虚拟机,镜像全选上,添加硬盘,默认下一步至确认。重置虚拟机,连接xshell。

第二步:

[root@localhost ~]# lsblk

多出一个sdb硬盘

[root@localhost ~]# fdisk /dev/sdb

命令(输入m获取帮助):n

Partition type:回车

Select (default p):回车

分区号(1-4.默认1):回车

起始 扇区 (2048-41943039,默认为2048):回车

命令(输入m获取帮助):w

—目的:创建sdb1备份盘

可以lsblk看一下,sdb下会出现sdb1备份盘

[root@localhost ~]# mkfs.xfs /dev/sdb1

—目的:创建文件系统

[root@localhost ~]# mkdir /backup

[root@localhost ~]# mount /dev/sdb1 /backup

—查看一下是否成功挂载,成功后cd到backup目录

[root@localhost backup]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1

—目的:mbr分区表在第一块硬盘当中的第一个分区,大小是512字节。把这个分区表从第一个硬盘当中提取出来,保存在sdb的硬盘当中。(就是把mbr分区表备份)注:bs后不加单位默认字节

查看目录下出现mbr.bak——bak为后缀名,随便取得

[root@localhost backup]# dd if=/dev/zero of=/backup/sda bs=512 count=1

—目的:用一个空文件把第一个硬盘当中的分区的分区表给填了,即相当于把它删了。

[root@localhost backup]# reboot或init 6

重启

第三步:

切换到虚拟机,选troubleshooting,再选rescue a Centos system

急救模式:

sh-4.2# mkdir /backupdir

sh-4.2# monut /dev/sdb1 /backuodir/

sh-4.2# df -h 看是否挂载成功

sh-4.2# cd backupdir/

sh-4.2# ls 出现mbr.bak,这个就是上面备份的文件

sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda

——还原步骤

sh-4.2# exit 相当于重启

2、grub引导菜单故障

[root@localhost ~]# cd /boot/

查看一下是否grub目录

[root@localhost root]# cd grub2/

查看出现grub.cfg

[root@localhost grub2]# rm -rf grub.cfg

——以上为grub删除步骤

[root@localhost grub2]# reboot

此时进入虚拟机,界面为grub>

检查iso,重置虚拟机,在启动白条走的过程中鼠标点进去,按esc,选CD-ROM Drive,再选troubleshooting,再选rescue a Centos system

sh-4.2# chroot /mnt/sysimage/

——目的:进入系统的根环境(实际上进的是光盘镜像)注:为什么对光盘镜像没有挂载还可以进mnt,因为sysimage默认挂载在mnt

sh-4.2# grub2-install /dev/sda

——目的:将grub菜单重新安装到sda,完毕!

bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg

——重新构建grup菜单的配置文件,完毕!

bash-4.2# exit

sh-4.2# reboot

可以查看一下是否有grub.cfg

3、root密码忘了

[root@localhost ~]# senteforce 0

检查iso,重置虚拟机,在启动白条走的过程中鼠标点进去,按esc,选CD-ROM Drive,再选troubleshooting,再选rescue a Centos system

sh-4.2# chroot /mnt/sysimage

bash-4.2# passwd root

New passwd:输入密码,再输入一遍

bash-4.2# exit

sh-4.2# reboot

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值