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

一,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 命令去管理程序  ,需要手写一个配置文件

操作系统引导过程 与 服务进程的控制_第1张图片

(二)systemd 单元

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

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

systemd类型有:

单元类型 扩展名 说明
service service 描述一个系统服务软件
socket socket 描述一个进程间通信的套接字
device device 描述一个内核识别的设备文件
mount mount 描述一个文件系统的挂载点
automount automount 描述一个文件系统的自动挂载点
swap swap 描述一个内存交换设备或交换文件
path path 描述一个文件系统中文件或目录
timer timer 描述一个定时器(用于实现类似cron的调度任务)
snapshot snapshot 用于保存一个systemd的状态
scope scope 使用systemd的总线接口 以编程的方式创建外部进程
slice slice 描述居于Cgroup 的一组通过层次组织的管理系统进程
target target 描述一组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新加一块磁盘,刷新磁盘供电接口

操作系统引导过程 与 服务进程的控制_第2张图片

5.2 格式化  并挂载

操作系统引导过程 与 服务进程的控制_第3张图片

5.3 备份分区表以及mbr

操作系统引导过程 与 服务进程的控制_第4张图片

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

操作系统引导过程 与 服务进程的控制_第5张图片

5.5  模拟破坏

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

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


可以看到都变成0

5.6解决故障

操作系统引导过程 与 服务进程的控制_第6张图片

5.7 操作系统引导过程 与 服务进程的控制_第7张图片

5.8操作系统引导过程 与 服务进程的控制_第8张图片

 5.9操作系统引导过程 与 服务进程的控制_第9张图片

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

 操作系统引导过程 与 服务进程的控制_第10张图片

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

操作系统引导过程 与 服务进程的控制_第11张图片

5.12查看  已经恢复了

操作系统引导过程 与 服务进程的控制_第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目录下直接输入文件名就可以

  操作系统引导过程 与 服务进程的控制_第13张图片

4.2 重启,它会进入grub界面

操作系统引导过程 与 服务进程的控制_第14张图片

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

操作系统引导过程 与 服务进程的控制_第15张图片

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

操作系统引导过程 与 服务进程的控制_第16张图片

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

操作系统引导过程 与 服务进程的控制_第17张图片

按F10保存退出

操作系统引导过程 与 服务进程的控制_第18张图片

4.5

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

操作系统引导过程 与 服务进程的控制_第19张图片

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

chroot   /mnt/sysimage  

操作系统引导过程 与 服务进程的控制_第20张图片

4.7重新安装grub2程序

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

grub2 -install /dev/sda

操作系统引导过程 与 服务进程的控制_第21张图片

4.8重新生成配置文件

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

操作系统引导过程 与 服务进程的控制_第22张图片

4.9退出重启

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

(三)破解密码

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

1,有光驱

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

1.2    以CD-ROM 模式进入

操作系统引导过程 与 服务进程的控制_第23张图片

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

操作系统引导过程 与 服务进程的控制_第24张图片

1.4  exit  reboot

2,无光驱

2.1   进入内核编辑

操作系统引导过程 与 服务进程的控制_第25张图片

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

操作系统引导过程 与 服务进程的控制_第26张图片

2.3重新挂载

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

操作系统引导过程 与 服务进程的控制_第27张图片

2.4  切根

2,5  修改密码

操作系统引导过程 与 服务进程的控制_第28张图片

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

操作系统引导过程 与 服务进程的控制_第29张图片

3,安全措施
 

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

可添加grub 密码

五,服务程序管理

(一)服务程序的特点

1.一旦运行,一直运行

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

(二)管理服务程序

开启

关闭

重启

重新加载配置文件

查看状态

开机自启

开机不自启

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

1,chkconfig   的使用

操作系统引导过程 与 服务进程的控制_第30张图片

0123456代表级别

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

将3,5 打开 开机自启

操作系统引导过程 与 服务进程的控制_第31张图片

在/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

操作系统引导过程 与 服务进程的控制_第32张图片

5,指明安装路径

6,安装

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

操作系统引导过程 与 服务进程的控制_第33张图片

8,写配置文件

操作系统引导过程 与 服务进程的控制_第34张图片

9,重新加载配置文件

10,开启并查看状态

操作系统引导过程 与 服务进程的控制_第35张图片

注意事项:

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

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

systemctl restart 命令一样能用

3,stop 也可以这么写   

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

你可能感兴趣的:(linux,运维,服务器)