引导过程和服务

news2024/11/28 18:56:00

宏内核(monolithic kernel):又称单内核和强内核,Unix,Linux把所有系统服务都放到内核里,所有功能集成于同一个程序,分层实现不同功能,系统庞大复杂,Linux其实在单内核内核实现了模块化,也就相当于吸收了微内核的优点。

一、引导过程

1.Linux操作系统引导过程

1.开机自检

通过bios程序检查硬件是否正常,然后根据bios中的启动项设置,去找内核文件,如果硬件出现问题则会卡在开机界面提示不同报错。

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

1硬盘 2移动设备,u盘,移动硬盘,光驱 3网络启动

2.mbr

运行放在MBR扇区里的启动 GRUB引导程序,MBR引导:第一阶段grub引导及加载分区表

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

3.grup

grub菜单:第二阶段grub加载内核文件到系统内存中运行起来,内核文件置:/boot/grub2/grub.cfg(centos 7)(根据grup配置文件(grup.cfg)中记录的位置,去找到内核文件(高级语言))

4.加载内核(kernel)

把内核运行在内存中,加载内核:加载完毕进入操作系统

内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。 总结:把内核和镜像文件系统加载到内存中 可以使用

5.启动进程(init进程初始化)

启动操作系统后需要启动进程,启动第一个祖宗进程

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

centos7:systemd

 传统init依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢  ,  排对

     init 串行启动后续的程序:一个一个按顺序启动
systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度   大家一起

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

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

文字描述:

二、操作系统运行级别

(一)0关机  

init 0是关机      系统默认运行级别不能设置为0,否则不能正常启动,机器关的

(二)1单用户 类似windows的急模式

init 1是单用户安全模式

root 权限,用于系统维护,禁止远程登陆,就像 Windows 下的安全模式登录

(三) 2、3 、4都是字符界面

init 2、init 3 、init 4都是字符界面,但init 4(没用过),init2少些功能(nfs)所以常用的是init 3级别

(四) 5 图形界面   init 5是图形化界面

(五) 重启   init 6是重启

 runlevel 查看当前运行级别

输入runlevel  或者  systemctl get-default进行查看运行级别

三、服务

1、systemd介绍

在Linux系统中,systemd(System Daemon)是一个系统和服务管理器,用于替代传统的SysV init初始化系统。它负责系统的启动、运行时服务管理以及关机过程,并且提供了许多高级特性,如并行化启动服务、按需激活服务、依赖关系处理等。

引入:rpcbind程序如果启动,会监听111端口;如果rpcbind没有启动,systemd会代为监听

systemd:是系统级的程序,代为管理系统上的程序

systemd保姆级

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

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

systemd unit(单元) ,systemd方便管理程序,将程序按照特定的功能分成了很多单元(服务单元,文件路径、网络单元、挂载……)

2.systemd 单元类型

3.systemd新特性

systemd新特性

  • 系统引导时实现服务并行启动

  • 按需启动守护进程

  • 自动化的服务依赖关系管理

  • 同时采用socket式与D-Bus总线式激活服务

  • socket与服务程序分离

  • 向后兼容sysv init脚本

  • 使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,

  • systemctl无法与之通信和控制

  • 系统状态快照

systemd 核心概念:unit

unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息

在systemd中不同类型的systemd对象被统一称为单元,是让系统知道该如何进行操作和管理资源的主要对象,所以systemd有许多单元类型。
systemd单元文件最初默认存放在/lib/systemd/system目录中,每当安装新的软件都会自动在这个目录中添加一个配置文件。
systemctl 命令用于管理各种类型的systemd单元,可以使用“systemctl -t help”命令来查询systemd支持的单元类型。

四、实验

实验1:模拟破坏mbr和分区表 然后修复

修复mbr分区故障

        故障原因

  • 病毒、木马的等造成的破坏;
  • 不正确的分区操作、磁盘读写误操作等。
  • MBR位于第一块硬盘( /dev/sda) 的第一个物理扇区处,总共512字节
    

    故障现象

  • 找不到引导程序,启动中断;
  • 无法加载操作系统,开机后黑屏。
  • 使用dd命令模拟将MBR损坏,复制512字节到/dev/sda中进行覆盖MBR
     dd if=/dev/zero of=/dev/sda count=1 bs=512

    解决思路

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

实验步骤:

加盘:

备份:

模拟破坏:

然后进入急救模式修复:3  2  1

实验2:修复grub文件及程序

故障原因

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

故障现象

  • 系统引导停滞,显示“grub>”提示符
  • 解决思路
  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 向MBR扇区中重建grub程序

模拟破坏:

在虚拟机里点如下图

鼠标要在虚拟机里,进入急救模式

grub2-install /dev/sda    #重新安装gurb2程序在sda磁盘上
grub2-mkconfig -o /boot/grub2/grub.cfg #重新生成grub菜单配置文件
exit退出自己系统
reboot重启

实验3:破解密码

Centos 7遗忘root用户密码,需要进入急救界面修改密码

故障原因

  • 遗忘root用户的密码

故障现象

  • 无法进行需要root权限的管理操作
  • 若没有其他可用帐号,将无法登录系统
有光驱:

进入急救模式:3 2 1

无光驱:

首先在系统加载内核时按任意键盘停止倒计时,一般习惯使用上下键,然后如下图 按e

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

mount –o remount,rw /sysroot  #进入后修改根目录的权限   
chroot /sysroot   #切换到根命令

五、服务程序管理

1.介绍

什么是服务程序?

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

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

2.管理服务程序

开启

关闭

重启

重新加载配置文件

开机自启

开机不自启

1.runlevel命令——只能查看切换运行级别与当前运行级别

2.chkconfig命令

chkconfig 必须保证 服务脚本 在 /etc/init.d/目录中有可执行权限的文件(服务管理脚本(case语句))才能执行

3.systemctl命令

systemctl 命令用于管理各种类型的systemd单元  ( centos 7)

systemctl   start     服务名启动服务
systemctl   stop     服务名关闭服务
systemctl   status   服务名查看服务状态
systemctl   reload   服务名重新加载服务
systemctl   restart  服务名重启服务
systemctl   enable   服务名开机自启
systemctl   enable --now  服务名开机自启,并立即启动
systemctl   disable  服务名开机不自启
systemctl   disable --now  服务名开机不自启,并立即关闭

基本格式: systemctl  [控制类型]  服务1、服务2(可多个)

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

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

实验:编译安装nginx用systemctl 进行管理

在/lib/systemd/system目录下创建一个对应服务的.service文件

如果有报错加,没有忽略

输入完毕后保存退出,而后需要重新加载systemd守护进程(daemon)的配置文件,输入systemctl  daemon-reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1356735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS 系列学习教程(总目录)

ROSLearning 一、ROS概览 1.1 ROS简介 To be continued… 1.2 ROS安装 Ubuntu 安装 ROS 详细教程(以最后一个ROS1版本Noetic为例) 1.3 ROS Hello World ROS创建工作空间添加包并编译 ROS Hello World 1.4 ROS架构 ROS架构:文件系统 …

three.js相机按照指定路线在建筑模型中漫游(支持开始,暂停)

three.js相机按照指定路线在模型中漫游(支持开始,暂停) 关键点 相机运动曲线 // 相机路线 const points [new THREE.Vector3(0, 40, 300),new THREE.Vector3(50, 40, 300),new THREE.Vector3(50, 40, 50),new THREE.Vector3(150, 40, 50),…

在js中foreach、for in和for of 的区别是什么

for in 是一种在 JavaScript 中遍历对象属性的方法,它可以遍历一个对象的所有可枚举属性,但不能遍历数组。 for of 是一种在 JavaScript 中遍历可迭代对象的方法,它可以遍历数组、字符串、Set、Map 等可迭代对象。 foreach 是 JavaScript 中…

华清远见作业第二十一天——IO(第四天)

思维导图&#xff1a; 创建出三个进程完成两个文件之间拷贝工作&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一半内容&#xff0c;父进程回收子进程的资源。 代码&#xff1a; #include<myhead.h> int main(int argc, const char *argv[]) {if(argc!3)…

GROUP_CONCAT报错解决

有如下表 其中awardee和awardee_unit都是保存的json类型的字符串, awardee是多个人员id, awardee_unit是部门的全路径 查询时要注意转换 需要将name拼接起来合并成一行,直接 GROUP_CONCAT 会报错 百度的大部分答案是修改数据库配置去掉严格模式,如果不方便修改数据库可以这样…

kubernetes(三)

文章目录 1. k8s弹性伸缩1.1 安装heapster监控1.2 弹性伸缩使用和验证 2. 持久化存储2.1 emptyDir 1. k8s弹性伸缩 k8s弹性伸缩&#xff0c;需要附加插件heapster 1.1 安装heapster监控 使用heapster(低版本)可以监控pod压力大不大 使用hpa调节pod数量&#xff0c;自动扩容或…

应用案例——音箱系统的芯片组成

人类的语言交流是人类交互的主要方式&#xff0c;从键盘&#xff0c;鼠标&#xff0c;触屏控制&#xff0c;人机交互的本质始终没有改变&#xff0c;无法完成对话式的交流&#xff0c;而语音交互的出现打破了这一现状&#xff0c;它可以解放双手&#xff0c;甚至解放双眼&#…

双碳目标---碳储量、碳收支、碳循环

以全球变暖为主要特征的气候变化已成为全球性环境问题&#xff0c;对全球可持续发展带来严峻挑战。2015年多国在《巴黎协定》上明确提出缔约方应尽快实现碳达峰和碳中和目标。2019年第49届 IPCC全会明确增加了基于卫星遥感的排放清单校验方法。随着碳中和目标以及全球碳盘点的现…

C练习——定期存取并行

题目&#xff1a;假设银行一年整存零取的月息为1.875%&#xff0c;现在某人手头有一笔钱&#xff0c;他打算在今后5年 中&#xff0c;每年年底取出1000元作为孩子来年的教育金&#xff0c;到第5年孩子毕业时刚好取完这笔钱&#xff0c;请编 程计算第1年年初时他应存入银行多少钱…

基于EMD-SpEn(样本熵)联合小波阈值去噪

代码原理 基于 EMD-SpEn&#xff08;样本熵&#xff09;联合小波阈值去噪方法是一种用于信号降噪的信号处理方法&#xff0c;它结合了经验模态分解 (EMD)、样本熵 (SpEn) 和小波阈值处理技术。 首先&#xff0c;使用 EMD 将原始信号分解为一组称为经验模态函数 (IMFs) 的信号…

基于SpringBoot的在线考试系统源码和论文

网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现在线考试的信息化管理。则对于进一步提高在线考试管理发展&#xff0c;丰富在线考试管理经验能起到不少的促进作用。 在线考试系统能够通…

未来已来,Ai原生应用与人高度结合!学习就在现在?

原生应用&#xff1a;OpenAI™ChatGPT、Baidu.Inc™文心一言 也可以体验CSDN的INSCODE AI&#xff0c;集成多个国内GPT内容。 文章目录 前言----编程语言的未来&#xff1f;一、编程语言的教育1.1 学校所见所闻1.2 开启我们的Ai行程~io&#xff01;1.3 Ai结果评论 二、Ai编程教…

Linux-进程间通信_管道

项目场景&#xff1a; 须熟知文件管理和进程方面的基础知识 通过Xshell和VScode 相互进行远程开发&#xff0c;学习进程间通信的其中一种方式——管道。 问题描述 依照我们曾经所学的知识&#xff0c;我们仅仅只能在单个进程中进行数据的交互&#xff0c;但是在实际应用中&a…

树莓派外设开发综述及WiringPi库安装

树莓派常用的接口 IO&#xff1a; input&#xff1a; output&#xff1a; PWM&#xff1a; IIC spi uart WiringPi库 树莓派一个非常重要的 WiringPi库&#xff08;Linux下 动态库 ”.so“ 静态库”.a"&#xff09; &#xff08;是一个特定平台&#xff0c;特…

【Jasypt】SpringBoot配置文件加密

1、加密介绍 在yml配置文件中会存在一些敏感数据&#xff0c;比如用户名&#xff0c;密码&#xff0c;第三方应用的密钥等等。这些信息是以明文的形式出现在文件中&#xff0c;存在较大安全隐患。Jasypt&#xff08;Java Simplified Encryption&#xff09;是一个Java库&#…

秋招复习之数组与链表

目录 前言 1 数组 初始化数组&#xff1a; 访问元素 插入元素 删除元素 遍历数组&#xff1a; 查找元素 扩容数组&#xff1a; 数组的优点与局限性 2 链表 初始化链表 插入节点 删除节点 访问节点 查找节点 数组 vs. 链表 常见链表类型 3 列表 初始化列表 访问元素 插入与删…

Vue 单文件组件的基础入门指南

本文是我2年前做的一个学习小demo&#xff0c;在这里分享一下 希望对想要学习Vue的小伙伴能有一丢丢的小帮助~_~ 1 Vue CLI Vue CLI (opens new window)是一个基于Vue.js进行快速开发的完整系统。 这里我使用 Vue CLI 生成了一个Vue项目&#xff0c;命令为&#xff1a;vue cr…

高效工具汇总,让学习和办公飞起来

目录 1、寻找论文&#xff0c;效率很高2、学习各类编程的地方 1、寻找论文&#xff0c;效率很高 AMiner&#xff0c;由清华大学计算机科学与技术系的唐杰教授团队开发的一个显著的学术搜索和挖掘系统。系统提供了一整套功能以协助学术研究&#xff0c;包括研究人员档案、专家搜…

JAVA的引用与C++的指针有什么区别

JAVA的引用与C的指针有什么区别 1. Java值类型与引用类型1.1 变量初始化1.2 变量赋值1.3 函数传参 2. Java数据存储方式2.1 Java局部变量&&Java方法参数2.2 Java数组类型引用和对象2.3 String类型数据 3. Java引用类型3.1 强引用3.2 软引用3.3 弱引用3.4 虚引用 4. JAV…

SpringBoot启动时执行初始化操作还只会用@PostConstruct?进来看看其它方式~

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…