当前位置: 首页 > news >正文

引导过程与服务控制

引导过程总览

  1.开机自检

服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移

交系统控制权,大多时候会移交给本机硬盘。

2.MBR 引导

当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record,

 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据

MBR 记录中的引导信息调用启动菜单(如 GRUB)。

3.GRUB 菜单

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

4.加载 Linux 内核

Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过

程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

5.init 进程初始化

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

系统初始化进程及文件

1 init 进程
Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为 PID
2 Systemd 概述
Systemd Linux 操作系统的一种 init 软件, CentOS 7 系统中采用了全新的 Systemd
启动方式,取代了传统的 SysVinit

排除系统启动类故障

1 .备份 MBR 扇区数据
由于 MBR 扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其
他的存储设备中,否则在恢复时将无法读取到备份文件
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1
2 .模拟 MBR 扇区故障
这里仍然使用 dd 命令,人为地将 MBR 扇区的记录覆盖,以便模拟出 MBR 扇区被破
坏的故障情况(切记要先做好备份,并且将备份文件存放到其他硬盘)
dd if=/dev/zero of=/dev/sda bs=512 count=1
3 .从备份文件中恢复 MBR 扇区数据
由于 MBR 扇区被破坏以后,就无法再从该硬盘启动系统,所以需要使用其他硬盘中的
操作系统进行引导,或者直接使用 CentOS 系统的安装光盘进行引导
以使用 CentOS 安装光盘引导为例,当出现安装向导界面时,选择“Troubleshooting”选项进入修复故障页面再选择“Rescue a CentOS Linux system”选项将以“救援模式”引导Linux 操作系统
然后系统会自动查找硬盘中的 Linux 分区并尝试将其挂载到 /mnt/sysimage 目录(选择
“1” 确认并按 Enter 键继续)。接下来会出现 rescue 字符界面.最后,按 Enter 键后将进入带 “sh-4.2#” 提示符的 Bash Shell 环境只要执行相应的命令挂载保存有备份文件的硬盘分区(sdb1)

GRUB 引导故障

GRUB 是大多数 Linux 操作系统默认使用的引导程序,可以通过启动菜单的方式选择进
入不同的操作系统
CentOS 系统中,执行以下操作可以查看 GRUB 配置文件 grub.cfg 的默认内容。
grep -v "^#" /boot/grub2/grub.cfg
grub.cfg 文件中包含很多内容,如加载 grubenv 中变量、设置默认引导项等。 CentOS 7
默认有两个启动项: CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core) CentOS Linux
(0-rescue- b15df1eb8205483f9f70c79709810abc) 7 (Core) 。无论是哪个启动项,都需要设
置如下所示的几个主要配置项。
  menuentry :指定在启动菜单中显示的操作系统名称。
  set root :指定包含内核等引导文件的 /boot 分区所在的位置。
  insmod :加载指定的模块到内核。
  linux16 :指定内核文件所在的位置,内核加载时权限为只读 “ro” ,并通过 “root=” 指 定根分区的设备文件位置。
initrd16 :指定启动内核所使用的临时系统镜像文件所在的位置。
进入 “bash-4.2#” Shell 环境以后,重写(或通过之前备份的文件恢复) grub.cfg 配置
文件即可。
sh-4.2# chroot /mnt/sysimage
// /mnt/sysimage 设置为当前环境的根
bash-4.2# vi /boot/grub2/grub.cfg
// 编辑 grub.cfg 文件 , 内容略
bash-4.2# exit
// 退出 chroot 环境
exit
sh-4.2# reboot //退出 sh-4.2 环境 , 系统会自动重启

遗忘 root 用户的密码

切换到待修复 Linux 操 作系统的根目录环境,直接执行“passwd root”命令重设 root 用户的密码即可;或者修改/etc/shadow 文件,将 root 用户的密码字段清空,重启后以空密码可登录系统
sh-4.2# chroot /mnt/sysimage
bash-4.1# passwd root

服务控制及优化启动过程

系统服务控制

systemctl 控制类型 服务名称

start (启动):运行指定的系统服务程序,实现服务功能。
  stop (停止):终止指定的系统服务程序,关闭相应的功能。
restart (重启):先退出,再重新运行指定的系统服务程序。
  reload (重载):不退出服务程序,只是刷新配置。在某些服务中与 restart 的操作
相同。
status (查看状态):查看指定的系统服务的运行状态及相关信息。

切换运行级别

1 .查看系统的 target
明确当前系统所在的 target 将有助于管理员排除一些应用故障
runlevel
若用户想查看系统启动时默认运行的 targe,可以执行“systemctl get-default”命令以显示系统默认的 target
2. 切换系统的 target
当用户需要将系统转换为其他的 target 时,可以通过传统的 init 程序进行,只要使用与
运行级别相对应的数字( 0 6 )作为命令参数即可,或者使用 systemctl 命令进行目标切换。

优化启动过程

1 .常见的系统服务
CentOS 系统中,默认安装的系统服务多达 100 余种,这些系统服务为用户提供了
丰富的应用服务。
2 .优化开机自动加载的服务
Linux 操作系统在每次开机后会进入默认的 systemd 运行目标(如字符模式或图形模式),
并运行该目标中默认设为启动的各种系统服务
1 )使用 ntsysv 工具
ntsysv 工具可以在字符模式中运行,为用户提供一个仿图形的交互式操作界面,专门用于
集中配置各种系统服务的启动状态
2 )使用 systemctl 工具
systemctl 工具与 ntsysv 的功能类似,但是 systemctl 不提供交互式的操作界面,它用
于查询或设置系统服务的默认启动状态
enable :开机自动启动。
disable :开机自动关闭。
is-enable :查看开机启动状态

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • springbootAl农作物病虫害预警系统-计算机毕业设计源码21875
  • 数据库|SQLServer数据库:数据的基本查询
  • 应急响应:D盾的简单使用.
  • MySQL 5.7 DDL 与 GH-OST 对比分析
  • TCP简易通信实现
  • 【图像超分】论文精读:SeD: Semantic-Aware Discriminator for Image Super-Resolution
  • Feapder 爬虫集群部署指南
  • STM32-USART时序与寄存器状态分析
  • 【区块链+乡村振兴】森林食品认证溯源平台 | FISCO BCOS应用案例
  • Redis02——缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、缓存工具封装)
  • Boost搜索引擎:项目整体代码及布局
  • 贝叶斯优化算法(Bo)与门控循环单元(GRU)结合的预测模型(Bo-GRU)及其Python和MATLAB实现
  • Haskell HTTP请求:如何解读响应状态
  • 片上POR和BOR的区别
  • 20240809 每日AI必读资讯
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • C++11: atomic 头文件
  • CSS 提示工具(Tooltip)
  • css选择器
  • HTTP中GET与POST的区别 99%的错误认识
  • HTTP中的ETag在移动客户端的应用
  • java中的hashCode
  • js算法-归并排序(merge_sort)
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • windows下如何用phpstorm同步测试服务器
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • - 概述 - 《设计模式(极简c++版)》
  • 给新手的新浪微博 SDK 集成教程【一】
  • 技术胖1-4季视频复习— (看视频笔记)
  • 码农张的Bug人生 - 见面之礼
  • 入门级的git使用指北
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 学习笔记TF060:图像语音结合,看图说话
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • mysql面试题分组并合并列
  • ​决定德拉瓦州地区版图的关键历史事件
  • #### golang中【堆】的使用及底层 ####
  • (1)Hilt的基本概念和使用
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (MATLAB)第五章-矩阵运算
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (第一天)包装对象、作用域、创建对象
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (转)甲方乙方——赵民谈找工作
  • (转载)从 Java 代码到 Java 堆
  • . Flume面试题
  • .NET 4.0中的泛型协变和反变
  • .NET Framework杂记
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NET简谈设计模式之(单件模式)
  • ::前边啥也没有