操作系统引导过程 与 服务进程的控制

发布时间:2024年01月04日

一,linux操作引导过程

bios加电自检? ? ? ??mbr? ??gurb? ? ?加载内核文件? ? 启动第一个进程

(一)bios?加电自检

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

硬件启动POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测

主板的ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等

问:boot 开机启动顺序:你可以把内核文件放在何处?

答:1,硬盘

? ? ? ?2,移动设备(u盘 移动硬盘 光驱)

? ? ? ?3,网络启动

问:什么原因造成服务器一直重启

答:

1,硬盘坏了

2,第一启动项是移动设备,无移动设备

3,第一启动项网络启动,无网

4,第一启动项网络启动,有网,但是没有网络操作系统服务

(二)mbr

因为grub太大 mbr第一个扇区太大,所以grub程序,分为两部分

作用:指引硬件找到内核文件? ? 即运行放在MBR扇区里的启动 GRUB引导程序

(三)grub

1,grub? 含义

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

对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是 使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)准备加载 Linux 内核文件,然后将系统控制权转交给 内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。

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

2,grub?功能和组成

bootloader: 引导加载器,引导硬件去找到 内核(操作系统的核心)

  • Windows: ntloader,仅是启动OS

  • Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核

Linux的bootloader

  • LILO:LInux LOader,早期的bootloader,功能单一

  • GRUB: GRand Unified Bootloader, CentOS 5,6 GRUB 0.97: GRUB Legacy, CentOS 7 以后使用GRUB 2.02

GRUB 启动阶段

  • primary boot loader :

    1st stage:MBR的前446个字节 引导 硬件去找 内核

    1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统

  • secondary boot loader :2nd stage,分区文件/boot/grub2/grub.cfg

(四)加载内核文件

把内核运行在内存中? ? ? 可以使用

(五)启动第一个进程(系统初始化进程)

启动第一个祖宗进程

centos6? ? init

centos7? ?systemd

总结开机启动的完整过程

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

二,系统初始化进程

(一)init? 进程

1,由linux?内核加载运行? /sbin/init? ?程序

2,是系统中第一个进程

3,init? 进程的pid号? (进程标识)永远为1

4,centos6只能用 chkconfig


(二)systemd

1,systemd? 是linux操作系统的一种inti?软件

2,centos7两个都能用 但是systemd 好用多了

3,centos7中?运行的第一个init? 进程是? /lib/systemd/systemd

(三)inti? systemd? 区别

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

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

三,对systemd详细介绍

(一)systemd?介绍

是系统的级的程序 代为管理系统上的服务程序

systemd 是保姆级程序,如果是yum,以及rpm安装的软件可以直接使用systemctl?去启动? 关闭? 重启? 开机自启高等功能。

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

(二)systemd?单元

在systemd中不同类型的systemd对象被统一称为单元,是让系统知道该如何进行操作和管理资源的主要对象,所以systemd有许多单元类型。

systemd单元文件最初默认存放在/lib/systemd/system目录中,每当安装新的软件都会自动在这个目录中添加一个配置文件。

systemd类型有:

单元类型扩展名说明
serviceservice描述一个系统服务软件
socketsocket描述一个进程间通信的套接字
devicedevice描述一个内核识别的设备文件
mountmount描述一个文件系统的挂载点
automountautomount描述一个文件系统的自动挂载点
swapswap描述一个内存交换设备或交换文件
pathpath描述一个文件系统中文件或目录
timertimer描述一个定时器(用于实现类似cron的调度任务)
snapshotsnapshot用于保存一个systemd的状态
scopescope使用systemd的总线接口?以编程的方式创建外部进程
sliceslice描述居于Cgroup?的一组通过层次组织的管理系统进程
targettarget描述一组systemd的单元

(三)linux 操作系统有运行级别

0 关机

1 单用户(类似windos的急救模式)

2 字符功能 少些功能

3 字符功能 从来没见过

4 字符功能? ? ? ? ? ? ? ? ?multi-user.target

5 图形界面? ? ? ? ? ? ? ? ?graphical.target

6 重启

语法:

init 0-6? ? ? ? ?切换系统运行级别

查看默认运行级别? ??systemctl get-default

设置默认级别? ? ? ? ? ?

runlevel? 查看当前运行级别

四,排查启动类故障

(一)mbr扇区故障

1,故障原因

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

2,故障现象

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

3,解决思路

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

4,解决方法

用磁盘备份

mbr分区?远程备份

5,实验模拟mbr?扇区故障时用磁盘备份解决

5.1新加一块磁盘,刷新磁盘供电接口

5.2?格式化? 并挂载

5.3?备份分区表以及mbr

5.4??输入hexdump -C -n 512 ?/dev/sda 查看磁盘的前512个字节

5.5? 模拟破坏

输入:dd ?if=/dev/zero ?of=/dev/sda ?count=1 ?bs=512??

这条命令的意思是在/dev/sda前512个字节写0,就相当于破坏了该文件的十六进制代码


可以看到都变成0

5.6解决故障

5.7?

5.8

?5.9

5.10? ? ?要再次挂载sdb? 磁盘挂载后才能用

?

5.11? ?将之前备份的内容? ?再复制到sda里

5.12查看? 已经恢复了

5.13? reboot? 重启、

6,实验模拟mbr?扇区故障时用远程备份解决

(二)grub故障

1,故障原因

  • MBR中的GRUB引导程序遭到破坏
  • grub.conf文件丢失,引导配置有误

2,故障现象

3,解决思路

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MBR扇区中重建grub程序

4,实验模拟破坏grub.cfg 配置文件并解决

4.1先模拟破坏grub.cfg 配置文件

输入mv ?/boot/grub2/grub.cfg ?/opt,在grob2目录下直接输入文件名就可以

??

4.2?重启,它会进入grub界面

4.3?重启后在读条时进入急救模式,这个要求手速比较快,大概在0.5秒作用

4.4? ??或者选择开机模式,打开电脑时进入固件

设置启动加载方式第一项为光盘启动

按F10保存退出

4.5

?和修复mbr一样 321? ? 进入急救模式? ? ? ? ? ? 以CD-ROM 模式进入

4.6从光盘的根切换到自己的系统根

chroot ??/mnt/sysimage ?

4.7重新安装grub2程序

把grub2程序重新安装在sda磁盘

grub2 -install /dev/sda

4.8重新生成配置文件

grub2-mkconfig ?-o ?/boot/grub2/grub.cfg

4.9退出重启

先输入exit退出到光驱的根下?再输入reboot重启

(三)破解密码

如果root密码遗忘了,需要进入急救界面修改密码

1,有光驱

1.1看到vm? 摁Esc进入急救模式

1.2? ? 以CD-ROM 模式进入

1.3直接切换到系统根,输入passwd修改密码

1.4? exit? reboot

2,无光驱

2.1? ?进入内核编辑

2.2在Linux开头行末尾处加上rd.break,添加后按ctrl? + x执行

2.3重新挂载

入mount ?-o ?remount,rw ?/sysroot 添加权限

2.4??切根

2,5??修改密码

2.6如果你的selinux没有关闭,则需要输入touch ?/.autorelabel? 刷新一下该文件时间,重新打上标记

3,安全措施
?

这样看,我们只要接触到服务器都能修改root?密码,有没有一个安全措施呢?

可添加grub?密码

五,服务程序管理

(一)服务程序的特点

1.一旦运行,一直运行

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

(二)管理服务程序

开启

关闭

重启

重新加载配置文件

查看状态

开机自启

开机不自启

(三)管理服务程序centos6的命令

1,chkconfig? ?的使用

0123456代表级别

0代表关机;1代表单用户;234代表字符界面(2没有nfs;4没有用过);5图形化界面;6重启

将3,5 打开 开机自启

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

chkconfig ?--add ?服务名称

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

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

例题:一个开机自启的服务卡主,导致系统起不来,怎么办?

? ? ? ? ? ?答:进入急救模式,把他干掉

举例:testsrv?服务启动?出了问题,因为这个服务设置了? 35?级别自动启动,会导致进入不了系统

解决办法:急救模式进去? 单用户模式(级别1)把这个服务自启动关闭

chkconfig? ?--list | grep??

chkconfig? --level? 35? testsrv? off
?

2,Service? 的使用

Service? ? ? ?服务程序? ?start? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??开启

Service? ? ? ?服务程序? ?stop? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??关闭

Service? ? ? ?服务程序? ??restart? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??重启

Service? ? ? ?服务程序? ??reload? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 重新加载配置文件

Service? ? ? ?服务程序? ?status? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??查看服务状态

(四)管理服务程序centos7的命令

1,systemctl? ?的用法

systemctl? ? ? ? ? start? ? ? ? ? ? 服务程序? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??开启

systemctl?? ? ? ? ?stop? ? ? ? ? ? ?服务程序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??关闭

systemctl?? ? ? ? ? restart? ? ? ? ?服务程序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??重启

systemctl?? ? ? ? ? reload? ? ? ? ? 服务程序? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 重新加载配置文件

systemctl? ? ? ? ? ? ?status? ? ? ? ? 服务程序? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??查看服务状态

systemctl enable 服务名 ? ? ? ? ? ? ? ?开机自启

systemctl enable --now 服务名 ? ? ?开机自启并立即启动

systemctl disable 服务名 ? ? ? ? ? ? ? 开机不自启

systemctl disable --now 服务名 ? ? 开机不自启并立即关闭

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

看非编译软件 的配置文件

2,实验编译安装nginx? 并将nginx交给systemctl? 管理

编译安装nginx? 并将nginx交给systemctl? 管理

1,下载源码包

2,解压

3,安装环境,发现一直有进程占用,kill 3159

5,指明安装路径

6,安装

7,编译安装? 需要手写配置文件

8,写配置文件

9,重新加载配置文件

10,开启并查看状态

注意事项:

1,如有报错,在? ?[Service] ?段 加上 ? 这个Type=forking? (后台程序)

2,不写restart 也没关系 restart就是先stop再start

systemctl restart 命令一样能用

3,stop?也可以这么写? ?

ExecStop=/ccc/nginx/sbin/nginx? ?-s? ?stop

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