Linux的引导过程与服务控制

发布时间:2024年01月17日

一、开机启动的完整过程:

引导过程:

开机自检(bios) —》MBR引导 —》?GRUB菜单 —》?加载内核(kernel) —》init进程初始化

1.bios开机自检:

检测硬件是否正常,然后根据bios中的启动项设置,去找内核文件

服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘灯设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱?

2.mbr:

因为grup太大,第一个扇区存不下所有的grub程序,所以分为2部分指引硬件找到内核文件:

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设备,将系统控制权传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用启动菜单(如grub)

总结:运行放在MBR扇区里的启动GRUB引导程序

3.GRUB:

根据grub配置文件(grub.cfg)中记录的位置,去找到内核文件

对于Linux操作系统来说,GRBU(统一启动加载器)是使用最为广泛的多系统引导程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核,需要注意的是,Centos7 采用的是GRUB2启动引导器。
注意:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg ,来获取内核和镜像文件系统的设置和路径位置

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置

4.加载内核文件:

把内核运行在内存中

Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux操作系统的运行过程,在Centos系统中,默认的内核文件位于“/boot/vmlinuz-3.10.514.e17.x86_64”

总结:把内核和镜像文件系统加载到内存中

5.启动第一个进程:

为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,左后等待用户进行登录,systemd

总结:加载硬件驱动程序,内核把init进程加载到内存中运行

概述:

加电后bios程序会自检硬件,硬件无故障后,会根据第一启动项去找内核,一般来说第一启动项是硬盘,找到硬盘后,会根据mbr的指引找到完整的grub程序,再根据grub的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后会启动第一个程序。

二.系统初始化进程

1、init进程:

init进程是系统中第一个进程

init进程的PID(进程标记)号永远为1

2、Systemd:

systemd是linux操作系统的一种init软件

centos7中采用全新的systemd启动方式,取代传统的sysvinit

centos7中运行的第一个init进程是/lib/systemd/system

区别:

init ?串行启动后续的程序 ?一个一个按顺序启动

systemd ? 是并行启动程序 ?全部一起启动

概括:

路径:/lib/systemd/system/*.service为结尾的文件

systemd能够识别并管理这些以.service为结尾的程序

?3、Systemd单元类型:

  • 最主要的三个单元类型为Service、Socket和Targe
  • 这些单元类型以后缀的形式附在资源名后面,如网络服务 network.service

?4、运行级别所对应的Systemd目标

查看当前运行级别 ?runlevel ?

各个级别的作用:

0 ?关机

1 ?单用户 ? 类似于windows的急救模式

2 ?字符界面 ? 少些功能(nfs)

3 ?字符界面

4 ?字符界面 ?从来没用

5 ?图形界面

6 ?重启

init ?0 ?关机

init ? 3 ?切换到字符界面

注意:

yum及rpm安装的软件可以直接使用systemctl去启动 关闭 重启 开机自启等功能

编译安装 不可以直接使用systemctl命令去管理程序 需要手写一个配置文件

systemd unit(单元) ,systemd方便管理程序,将程序按照特定的功能分成了很多单元

三.修复mbr扇区故障:

1、MBR扇区故障分析

1.1 故障原因

  • 病毒、木马等造成的破坏
  • 不正确的分区操作、磁盘读写误操作

1.2 故障现象

  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏

1.3 解决思路

  • 应提前作好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复

1、在覆盖前需要使用dd进行备份,如果没有备份,那这个系统就挂了。
怎么备份?备份需要使用dd命令将/dev/sda中的前512字节复制到一个新的硬盘中,
新的硬盘需要进行分区、格式化、挂载(建议永久挂载),挂载在新创建的目录下面。
2、进入linux中的急救模式,
(在重启前需要在DVD中的设置镜像,不然就无法进去急救模式)。
3、在shell环境中,新创建一个目录,然后将这个硬盘挂载在这个目录下
因为硬盘在前面已经复制过MBR的备份进去,所以它里面还是存在的,

1.4实验:

1.新加一块盘,

然后做好分区

格式化

挂载

2.2.将备份文件复制到新盘

3.模拟破坏/dev/sda?

?4.进入急救模式

?

?

?

?reboot重启成功!

四.修复gurb扇区故障

1.故障原因:

MBR中的GRUB引导程序遭到破坏

grub.conf文件丢失、引导配置有误

2.故障现象:

系统引导停滞,显示“grub>”提示符

3.解决思路:

尝试手动输入引导命令

进入急救模式,重写或者从备份中恢复grub.conf

向MBR扇区中重建grub程序

4.实验:

/boot/grub/目录下的包是用于启动菜单的背景图片及样式

/boot/grub2/grub.cfg #GRUB配置文件
1.破坏gurb.cfg配置文件

?2.进入急救模式

?

?

先切换根,从光盘的根切换到自己的系统的根?

五.Centos 7遗忘root用户的密码

1.故障原因

遗忘root用户的密码

2.故障现象

无法进行需要root权限的管理操作

若没有其它可用账号将无法登陆系统

3.解决思路

进入急救模式重设密码

4.实验步骤

4.1.有光驱:

切换根目录直接改密码

4.2无光驱:

1.进入系统,在选择内核模式,选择第一行,按e

2.将光标移动到linux行开头行的最后,添加? rd.break?

?

3.ctrl + x 运行

进入到单用户模式

?

4.切换到真正的根

更改密码?

如果开启了selinux需要重新打上标记


?

六.服务程序管理:

?查看系统服务的启动状态
systemctl is-enabled 服务名称
服务名称设置系统服务的启动状态
systemctl enable 服务名称       #开启开机自启动
systemctl disable 服务名称       #关闭开机自启动

什么是服务程序:

1.一旦运行一直运行不会退出

2.一般是后台运行,不会影响前台的操作

1.chkconfig ? ? ?centos 6

service ?服务程序 ?start

service ?服务程序 ?stop

service ?服务程序 ?restart

service ?服务程序 ?reload

service ?服务程序 ?status

在 ?/etc/init.d写一个同名文件的脚本(必须要有 执行权限)

chkconfig ?--add ? 服务名称

chkconfig ?--level ?35 ?服务程序 ?on ?开机自启

chkconfig ?--level ?35 ?服务程序 ?off ?关闭开机自启

2.systemd ? ?centos 7

格式:

systemctl ?控制类型 ?服务名称

常用控制类型:

类型?动作
start??启动
stop??停止
restart???重新启动
reload??重新加载
status???查看服务状态
enable?? ?开机自启
disable开机不自启

开机自启:?

systemctl enable ?服务名

开机自启,并立即启动

systemctl ?enable ?--now ?服务名

开机不自启:

systemctl ?disable ?服务名

开机不自启,并立即关闭

systemctl ?disable ?--now ?服务名

注意:如果用 yum 安装以及rpm 安装会自动生成一个配置文件,不需要我们手动加入systemd,会自己添加

3.服务配置文件

/usr/lib/systemd/system/NAME.service

三部分组成:

[Unit] ? ? ? ? ? ? ? ? ? ? ? 定义systemd单元的元数据

[Service] ? ? ? ? ? ? ? ? ?服务的配置,只有systemd单元是服务类型时才有这一段信息

[Install] ? ? ? ? ? ? ? ? ? 定义是否是开机启动
?

?

?

install段编辑完之后,需要刷新一下:

???

4.实验步骤:

1.编译安装

2.编写服务配置文件

3.刷新

4.开启查看状态? 关闭查看状态

文章来源:https://blog.csdn.net/m0_75067030/article/details/135645678
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。