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

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

一,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类型有:

单元类型 扩展名 说明
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新加一块磁盘,刷新磁盘供电接口

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

相关文章
|
2天前
|
网络协议 Unix
每天3分钟操作系统修炼秘籍(17):进程间通信(3):套接字
每天3分钟操作系统修炼秘籍(17):进程间通信(3):套接字
|
2天前
|
存储 调度 C++
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
22 1
|
2天前
|
存储 负载均衡 算法
深入理解操作系统的进程调度
【6月更文挑战第20天】本文将探讨操作系统中的进程调度,包括其定义、重要性以及常见的调度算法。我们将通过具体的例子和代码片段来深入理解进程调度的工作原理和实现方式。最后,我们将讨论进程调度在现代操作系统中的应用和挑战。
|
4天前
|
调度
操作系统之进程调度机制
操作系统之进程调度机制
9 1
|
4天前
|
存储 缓存 运维
深入理解操作系统:从进程管理到内存分配
在数字时代的心脏,操作系统扮演着至关重要的角色。本文将深入探讨操作系统的核心机制,包括进程管理、内存分配和文件系统,揭示它们如何协同工作以支持现代计算需求。通过技术深度解析和实际应用示例,我们将一窥操作系统的复杂性与优雅,理解其在软件开发和系统性能优化中的重要性。
|
5天前
|
负载均衡 算法 调度
深入理解操作系统之进程调度
本文旨在探究操作系统核心机制之一——进程调度。文章首先概述进程与线程的基本概念,随后详细解析进程调度的目标、常见算法及其优缺点,并探讨现代操作系统中进程调度的高级话题,如多核调度和实时系统的调度策略。通过实例分析,本篇文章将帮助读者深化对进程调度复杂性的理解,并指出未来可能的发展方向。
|
9天前
|
消息中间件 分布式计算 物联网
深入理解操作系统之进程与线程管理
操作系统的核心职责之一是进程与线程管理,它关乎系统的效率和稳定性。本文将剖析进程与线程的基本概念、生命周期以及它们在现代操作系统中的实现机制。通过对比分析,我们将揭示进程与线程的区别、优势及其适用场景,并探讨它们对系统性能的具体影响。进一步,文章将讨论进程间通信(IPC)的几种方式,以及同步和异步处理在多任务环境中的重要性。最后,我们将展望未来操作系统在进程与线程管理方面可能的发展趋势。
|
17天前
|
Rust 算法 安全
操作系统之进程同步
操作系统之进程同步
13 0
|
18天前
|
存储
操作系统:管程与进程通信机制解析
操作系统:管程与进程通信机制解析
14 0
|
18天前
|
算法 数据库
操作系统:经典进程同步问题的高级探讨
操作系统:经典进程同步问题的高级探讨
20 1

热门文章

最新文章