引导和服务

一、Linux操作系统引导过程

1、引导过程总览图

2、引导过程的详细步骤

1.开机自检(BIOS)

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

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

2.MBR引导

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

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

3.GRUB菜单

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

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

4.加载内核(kernel)

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

总结:把内核和镜像文件系统加载到内存中 可以使用。

5.init进程初始化

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

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

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

二、系统初始化进程

1、init进程(串行启动)

  • 由Linux内核加载运行/sbin/init程序
  • init进程是系统中第一个进程
  • init进程的PID(进程标号)号永远为1

2、Systemd(并行启动)

  • System是Linux操作系统的一种init软件

  • Centos7中采用全新的Systemd启动方式,取代传统的SysVinit

  • Centos7中运行的第一个init进程是/lib/systemd/systemd

3、Centos6与Centos7的区别:

CentOS 6串行运行,但有依赖关系还是一步一步执行 ;CentOS 7所有程序并行运行。
启动方式不同:CentOS6 是service  服务名  start/stop  。

CentOS 7是systemctl  start/stop  服务名   。
引导程序不同:CentOS6 是grub,CentOS 7是grub2
文件类型不同:CentOS6 是ext4,CentOS 7是xfs。

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

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

4、Systemd单元类型

注意:套接字文件是应用程序之间的数据连接文件,格式是,例如:127.0.0.1:3306。

5、运行级别所对Systemd的目标

6、systemctl命令

  • systemctl status httpd #查看服务的运行状态

  • systemctl start httpd #启动

  • systemctl stop httpd #停止

  • systemctl restart httpd #重启

  • systemctl reload httpd #重新加载

三、修复mbr扇区故障

1、故障原因:

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

MBR位于第一块硬盘( /dev/sda) 的第一个物理扇区处,总共512字节

2、故障现象

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

使用dd命令模拟将MBR损坏,复制512字节到/dev/sda中进行覆盖MBR
 dd if=/dev/zero of=/dev/sda count=1 bs=512

3、解决思路

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

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

 4、操作步骤

修复MBR扇区故障
第一步  先加一块硬盘     刷新
第二步  分区 
第三步  mkfs.xfs  /dev/sdb1      格式化  
第四步  mount  /dev/sdb1  /mnt   挂载 
第五步  df -h  查看
第六步  dd if=/dev/sda  of=/mnt/zzt  count=1  bs=512   复制备份zzt是备份的文件名
## if 复制的文件是哪个   of 复制到那个文件里   count=1  复制1次   bs=512  1次512字节 
第七步  ls  /mnt/  查看
第八步  hexdump -C -n 512 /dev/sda   查看512字节
第九步  dd if=/dev/zero  of=/dev/sda  bs=512 count=1     复制0到硬盘的512字节
第十步  重启 之后在光驱进行操作
引导界面进入急救模式,从备份文件中恢复MBR扇区数据,先加载好光盘镜像,重启操作系统,
当出现安装向导界面时,选择  Troubleshooting  选项再选择  Rescue a CentOS Linux system  选项,进入急救模式选择  1  选择  Continue 并按Enter键继续再次按Enter键后将进入带"sh-4.2#"提示符的Bash Shell环境
mkdir bak   #创建文件夹
mount  /dev/sdb1  bak/     #挂载  
ls /bak/                   #查看 
dd if=/bak/zzt  of=/dev/sda  count=1 bs=512    #导给  
hexdump -C -n 512 /dev/sda              #查看 

5、实战

 1.新加一块盘,进行分区、格式化、以及挂载

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

3.模拟破坏/dev/sda

4.引导界面进入急救模式,从备份文件中恢复MBR扇区数据,先加载好光盘镜像,重启操作系统,
当出现安装向导界面时,选择 Troubleshooting 选项
再选择 Rescue a CentOS Linux system 选项,进入急救模式选择 1 选择 Continue 并按Enter键继续
再次按Enter键后将进入带 sh-4.2# 提示符的Bash Shell环境

5.最后重启:reboot

四、修复GRUB扇区故障

1、故障原因

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

2、故障现象

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

3、解决思路

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

4、操作步骤

方法一:

以防万一,要是这个文件grub.conf丢了就完了,所以先备份
mv  grub.cfg  /opt  移走
reboot 重启
进入急救模式,选 CD-ROM Drive  回车、进去选择  Troubleshooting  选项
再选择  Rescue a CentOS Linux system  选项
#进入急救模式选择  1   选择  Continue  并  按Enter键继续
#进入急救模式,加载光盘镜像,切换到系统根环境
sh-4.2# chroot /mnt/sysimage     进入光驱系统里的根     当前系统的根
#重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
bash-4.2# grub2-install /dev/sda
#重新构建GRUB菜单的配置文件
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
#退出chroot环境,并重启
bash-4.2# exit
sh-4.2# reboot

方法二:

以防万一,要是这个文件grub.conf丢了就完了,所以先备份
mv  grub.cfg  /opt  移走
reboot 重启
进入急救模式,选 CD-ROM Drive  回车、进去选择  Troubleshooting  选项
再选择  Rescue a CentOS Linux system  选项
#进入急救模式选择  1   选择  Continue  并  按Enter键继续
#进入急救模式,加载光盘镜像,切换到系统根环境
sh-4.2# chroot /mnt/sysimage     进入光驱系统里的根     当前系统的根
#重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
bash-4.2# grub2-install /dev/sda
#重新构建GRUB菜单的配置文件
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
#退出chroot环境,并重启
bash-4.2# exit
sh-4.2# reboot

5、修改密码

先要关闭一下核心防护  setenforce 0
进入急救模式,选  CD-ROM Drive 回车、进去选择  Troubleshooting 选项
再选择  Rescue a CentOS Linux system   选项
进入急救模式选择 1  选择  Continue  并按Enter键继续
在输入  chroot /mnt/sysimage
       passwd  root  #回车
显示passwd: 输入密码

五、优化启动过程

1、ntsysv工具

  • 提供一个交互式、可视化窗口
  • 可以在字符终端运行
  • 便于集成管理多个服务

2、systemctl工具

  • 不提供交互式、可视化窗口
  • 管理单个服务效率更高

六、系统服务控制与运行级别设置

1、Linux系统运行级别

1.查看当前级别

runlevel命令:runlevel只能查看切换运行级别与当前运行级别systemctl能查看默认的运行级别。

systemctl工具

2.临时切换运行级别

init命令

systemctl 工具

2、chkconfig命令

chkconfig命令用于检查,设置系统的各种服务

chkconfig --list #列出所有的系统服务chkconfig --add httpd #增加httpd服务chkconfig --del httpd #删除httpd服务chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态chkconfig --list #列出系统所有的服务启动情况chkconfig --list mysqld #列出mysqld服务设置情况chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VitulBox中Ubuntu虚拟机安装JAVA环境——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项

前言 在进行之后操作是请下载好JDK,之后的内容是以Ubuntu虚拟机中安装java环境续写。 建议大家先把文章看完在配,因为有一些出错原有在后面,看完之后调整顺序。 提示:以下操作是在虚拟机hadoop用户下操作的,并为安装…

C++ 实现Windows WIFI管理器

文章目录 前言一、代码二、补充知识三、遇到的问题字符集转换 四、剩余问题总结 前言 出于项目需要,需要用C开发一个wifi界面,实现wifi扫描、wifi连接与断开、wifi密码记住的基础功能。 一、代码 话不多说,直接上代码。 #pragma once #inc…

基于猫群算法优化的Elman神经网络数据预测 - 附代码

基于猫群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于猫群算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于猫群优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要:针…

SQL 在已有表中修改列名的方法

文章目录 1. MySQL2. SQL Server3. Oracle / PostgreSQL Question: 假设有一张表 StudentInfo,表中有一个列名是 Student_Name ,想要把这个列名改成 StudentName 应该如何操作? 建表语句如下: --建表 if object_id(S…

洗地机有没有必要买?家用洗地机推荐

随着生活水平的提高,人们对家居环境的卫生和清洁要求也相应提高,因此家用洗地机作为一种现代化的清洁工具逐渐受到了广泛关注和青睐。那么,洗地机到底有没有必要买? 洗地机对于一些家庭确实是非常有必要的,特别是对于工作繁忙、…

vivado 定义相对放置的宏

定义相对放置的宏 关于相对放置的宏 相对放置宏(RPM)是一组基本逻辑元件(BEL)的列表。 逻辑元件的示例包括: •FF •LUT •DSP •闸板 RPM主要用于将小组逻辑紧密地放在一起,以改进资源效率并实现更…

Docker中的核心概念

1.镜像 Image 一个镜像就代表一个软件。mysql镜像、redis镜像、mq镜像 2.容器 Container 一个镜像运行一次就会生成一个容器,容器就是一个运行的软件服务。 3.远程仓库 Repository 远程仓库用来存储所有软件的镜像,Docker Hub 4.本地仓库 用来存储…

Vue.js 3.4版本发布:解析速度提升2倍,双向绑定革新等新功能

引言 随着2024年的来临,Vue团队的领军人物Evan You宣布了Vue.js 3.4的发布。这个版本不仅仅是修复了一些bug,还带来了一些非常实用的新功能和性能提升。 解析速度提升2倍 这次更新中,Vue.js 3.4实现了解析速度的大幅提升。尤其是在构建模板和脚本的源代码映射时,单文件组…

HarmonyOS-ArkTS基本语法及声明式UI描述

初识ArkTS语言 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,建议开发者具备TS语…

12月,全国各地电子签推广应用政策汇总

12月,国务院及各地政府办公厅、市监局、住建委等机关部门,持续推动电子印章、电子合同等功能在“政府采购、工程项目审批、企业开办等”领域深化应用,加快实现电子签章互信互认,不断简化办事流程,让越来越多高频常办事…

Node.js本地搭建简单页面小游戏

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

【LeetCode每日一题】1154. 一年中的第几天(直接计算+调用库函数)

2023-12-31 文章目录 [1154. 一年中的第几天](https://leetcode.cn/problems/day-of-the-year/)方法一:直接计算思路: 方法二:调用库函数思路 1154. 一年中的第几天 方法一:直接计算 思路: 1.根据所给的字符串&#…