首页 > 其他分享 >引导过程与服务控制

引导过程与服务控制

时间:2024-06-03 18:00:01浏览次数:17  
标签:引导 服务 操作系统 控制 系统 扇区 init Linux MBR

1 Linux操作系统的引导过程
        系统引导是操作系统运行的开始,在用户能够正常登录到系统之前,Linux操作系统的引导过程将完成一系列的初始化任务,并加载必要的程序和命令终端,为用户登录做好准备

1.1   引导过程总览
        Linux操作系统的引导过程一般包括以下几个阶段:开机自检、MBR引导、GRUP菜单、加载Linux内核、init进程初始化。

开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。
MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。
GRUP菜单
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS7采用的是 GRUB2 启动引导器。
加载Linux内核
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux 操作系统的运行过程。在 CentOS 系统中,默认的内核文件位于“/bootvmlinuz-3.10.0-514.el7.x86 64”
init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录。
1.2   系统初始化进程及文件
init进程
Linux 操作系统中的进程使用数字进行标记,每个进程的身份标记号称为PID。在引导Linux 操作系统的过程中,“/sbin/init"是内核第一个加载的程序,因此init 进程对应的 PID 号总是为 1。
init 进程运行以后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为init进程的子进程。反过来说,init 进程是这些进程的父进程。当然,这些子进程也可以进一步生成各自的子进程,依次不断繁衍下去,最终构成一棵枝繁叶茂的进程树,共同为用户提供服务。
从以上描述可以看出,init 进程正是维持整个 Linux 操作系统运行的所有进程的“始祖”,因此init 进程是不允许被轻易终止的。需要切换不同的系统运行状态时,可以向init 进程发送正确的执行参数,由init 自身来完成相关操作。
Systemd 概述
Systemd 是 Linux 操作系统的一种 init 软件,CentOS7系统中采用了全新的 Systemd启动方式,取代了传统的 SysVinit。Systemd启动方式使系统初始化时诸多服务并行启动,大大提高了开机效率。CentOS7 系统中“/sbin/init"是"/lib/systemdlsystemd”的链接文件。换言之,CentOS7系统中运行的第一个init 进程是“/lib/systemd/systemd”。systemd 守护进程负责 Linux 的系统和服务,systemctl 用于控制 Systemd 管理的系统和服务状态。
Systemd 将其管理的资源组织成各种类型的单元(Unit), 表中列出了 Systemd 使用的各种单元类型。


       Linux 系统服务是指运行在后台并提供特定功能的应用程序,如网站服务、FTP 服务等。Linux 通过将不同的系统服务进行搭配组合来协同满足不同的功能需求。不同的服务组合其实现的功能也各不相同,就好比不同的药方能医治不同的病症一样。
早期 Linux 操作系统中的 SysVinit 机制,默认包括七种不同的服务搭配方式,其中每一种搭配方式称为运行级别,类似于 Wndows 系统中的正常启动、安全模式、不带网络连接的安全模式等。这些运行级别分别使用数字0,1,…,6来表示。为了向下兼容 SysVinit系统,Systemd 使用了相应的target(目标)模拟了 SysVinit 的运行级别,表 8-2 中列出了运行级别所对应的 target,并说明了各种 target 的含义及用途。

2 排除系统启动类故障
        Linux 操作系统的启动过程涉及 MBR(Main Boot Record,主引导记录)、GRUB 启动菜单、系统初始化配置文件等各方面,其中任何一个环节出现故障都可能导致系统启动失常,因此一定要注意做好相关文件的备份工作。

2.1 MBR扇区故障
        MBR 位于物理硬盘的第一个扇区(512 字节),该扇区又称为主引导扇区(MBR 扇区),除了包含系统引导程序的部分数据外,还包含整个硬盘的分区表记录。当主引导扇区发生故障时,将可能无法进入引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时很可能进入黑屏状态。

1、备份MBR扇区数据
        由于 MBR 扇区中包含了整个硬盘的分区表记录,因此该扇区的备份文件必须存放到其他的存储设备中,否则在恢复时将无法读取到备份文件。例如,执行以下操作可以将第-块硬盘(sda)的 MBR 扇区备份到第二块硬盘的 sdb1 分区中(挂载到/backup 目录)。

 2、模拟MBR扇区故障
        这里仍然使用 dd 命令,人为地将 MBR 扇区的记录覆盖,以便模拟出 MBR 扇区被破坏的故障情况(切记要先做好备份,并且将备份文件存放到其他硬盘)。例如,执行以下操作可以从设备文件 zero 中读取 512 字节的数据,并将其覆盖到第一块硬盘(sda),从而破坏 MBR 扇区中的数据,

重启系统将会出现“Operating system not found”的提示信息,表示无法找到可用的操作系统,因此无法启动主机。

3、从备份文件中恢复MBR扇区数据
        由于 MBR 扇区被破坏以后,就无法再从该硬盘启动系统,所以需要使用其他硬盘中的操作系统进行引导,或者直接使用CentOS 系统的安装光盘进行引导。不管使用哪种方式目的都是相同的--获得一个可以执行命令的 Shel 环境,以便从备份文件中恢复 MBR 扇区中的数据。

     当出现安装向导的时候,选择”Troubleshooting”选项

        再选择“Rescue aCentOS Linux system”选项,将以“救援模式”引导Linux操作系统。 

        然后系统会自动査找硬盘中的 Linux分区并尝试将其挂载到/mntisysimage 目录(选择“1”确认并按 Enter 键继续)。接下来会出现 rescue 字符界面 

         最后,按 Enter 键后将进入带“sh-4.2#”提示符的 Bash Shell 环境只要执行相应的命令挂载保存有备份文件的硬盘分区(sdb1),并将数据恢复到硬盘“/devisda中即可,具体操作如下。需要注意的是,当前使用的系统环境是光盘中的Linux 目录结构。

        完成恢复操作以后,执行“exit”命令退出临时Shell环境,系统将会重启

2.2 GRUB 引导故障
        GRUB 是大多数 Linux 操作系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统(如果有)。当配置文件/boot/grub2/grub.cfg 丢失,或者关键配置出现错误,或者 MBR 中的引导程序遭到破坏时,Linux 主机启动后可能只出现“grub>”的提示符,无法完成进一步的系统启动过程

        若在该提示符后可以进行编辑,则通过输入对应的引导命令(可参考其他相同版本CentOS 中/boot/grub2/grub.cfg 文件的引导语句),然后执行“boot"命令即可正常引导 Linux操作系统 

        之后的启动过程与正常启动 CentS 系统的过程是一样的。登录进入操作系统以后,需要找到配置文件/bootgrub2/grub.cfg,并修复其中的错误,或者直接重建该文件。具体内容可以参考其他正常主机中的同名文件。

       grub.cfg 文件中包含很多内容,如加载 grubenv 中变量、设置默认引导项等。CentOs7默认有两个启动项: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:指定启动内核所使用的临时系统镜像文件所在的文件位置。
        由于在“grub>"环境中使用的命令较为复杂,且一般也难以记住相关的命令选项、内核加载参数等,因此用户可以采用另一种修复办法,同样使用 CentOS 的安装光盘引导进入急救模式(参考上一小节)。若分区表未被破坏,则急救模式将会找到硬盘中的 Linux 根分区,并将其挂载到光盘目录结构中的/mnt/sysimage/文件夹中。

        进入“bash-4.2#”的 Shel 环境以后,重写(或通过之前备份的文件恢复)grub.cfg 配置文件即可。重写完 grub.cfg 配置文件后,需要使用 grub2-mkconfig 工具更新 grub.cfg 配置文件。

        在上例中,若未执行“chroot /mntsysimage”命令,则重新建立的 grub.cfg 配置文件应该位于/mnt/sysimage/boot/grub2/grub.cfg。

        如果是 MBR 扇区中的引导程序出现损坏,则在重建 grub.cfg 配置文件后仍然可能无法成功启动系统,这时可以通过 CentOS 救援模式的 Shel 环境重新安装 grub 引导程序。切换到待修复的 Linux 操作系统根环境,执行“grub2-install /dev/sda”命令可以重新将 grub 引导程序安装到第 块硬盘(sda)的 MRB 扇区。

         在 Linux 主机中重装 Windows 操作系统(不覆盖 Linux 操作系统)后导致 Linux 操作系统无法启动的情况。因为对于使用双操作系统的主机,后安装的Windows 操作系统将使用自己的引导数据覆盖 MBR 扇区中的记录,导致开机后不再出现GRUB 菜单从而无法进入 Linux 操作系统。如果后安装 Linux 操作系统,GRUB 程序将自动识别硬盘中的 Windows 操作系统并将其加载到 GRUB 菜单配置中。

        注意:执行“dd if=/dev/zero of=/dev/sda bs=446 count=1”命令可以模拟出对 MBR 扇区中 GRUB 引导程序的破坏(注意先做好备份),但并不会破坏分区表(实际上分区表保存在MBR 扇区中的第 447~510 字节中,MBR 总共 512 字节,前 446 字节是主引导记录,从第447 字节开始后的 64 字节,每 16 字节为一组,是硬盘分区表)。

8.2.3  遗忘root用户的密码
        当忘记 root用户的密码时,将无法登录 Linux操作系统执行管理、维护等任务,而只能通过其他用户(普通用户)登录使用一些受限制的功能。当然,如果操作系统中还有其他具有 root 权限的用户(uid 为0),或者拥有修改root账号密码权限的用户,也可以使用这些用户登录操作系统,然后重新设置root用户的密码。

        然而,大多数时候 Linux 主机中具有 root 权限的用户只有一个,因此需要通过其他途径来重设 root账号的密码。最简便的途径是使用 CentOS 的安装光盘进入急救模式。

        若使用 CentOS 的安装光盘进入急救模式的 Shel 环境,则只需切换到待修复 Linux 操作系统的根目录环境,直接执行“passwd root"命令重设root 用户的密码即可;或者修改/etc/shadow 文件,将 root用户的密码字段清空,重启后以空密码可登录系统。以下操作即为进入急救模式重设 root 用户密码。

3 服务控制及优化启动过程
        在 Linux 操作系统完成引导以后,如何控制系统服务的运行状态?如何在不同的运行级别之间进行切换?如何优化启动过程,减少系统占用的资源?

3.1  系统服务控制
        在 CentOS 系统中,各种系统服务的控制脚本默认放在/usr/lib/systemd 目录下。通过systemctl 命令工具可以实现对指定系统服务的控制,语法格式如下:

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

        若要査看指定 postfix 服务的运行状态,只需将上述命令中的“start"改为“status"即可若要停止 postfix 服务,只需将“start”改为“stop”即可

        控制类型“restart”用在需要释放旧的资源全部从头开始的情况,它会先关闭相应的服务程序,然后重新运行。例如,当在网卡的配置文件中设置了新的IP地址以后,为了激活新的IP 地址,可以重新启动名称为network的系统服务

        对于在实际生产环境中运行的服务器,不要轻易执行stop或restart 操作,以免造成客户端访问中断,带来不必要的损失。若只是要为系统服务启用新的配置,可以采用相对温和一些的“reload”"参数重新加载配置,而不是生硬地执行“restart"。例如,对正在为用户提供Web 访问的 httpd 服务,当需要应用新的配置时,建议执行“systemctl reload httpd.service命令来重新载入配置,而不是执行“systemctl restart httpd.service”。 

3.2  切换运行级别
        在前面的章节讲解 Systemd 相关知识的时候,已经介绍过 target 的含义及类型。不同的 target 代表系统不同的运行状态,所启用的服务或程序也不一样。例如,对于互联网中的网站、电子邮件等服务器来说,只需要运行在文本模式就可以了,无须启用图形桌面程序。

1、查看系统的target
        明确当前系统所在的 target将有助于管理员排除一些应用故障。若未能确知当前所处的目标,可以直接执行"runleve!"命令进行查询,显示结果中的两个字符分别表示切换前的目标、当前的目标。若之前尚未切换过运行级别,则第1列将显示“N”,命令如下:

        若用户想查看系统启动时默认运行的target,可以执行“systemctl get-default”命令以显示系统默认的 target

2、切换系统的target
        当用户需要将系统转换为其他的target时,可以通过传统的init 程序进行,只要使用与运行级别相对应的数字(0~6)作为命令参数即可,或者使用svstemctl命令进行目标切换。例如,为了节省系统资源,将系统运行的target由图形模式(5)切换为字符模式(3),可以执行“init 3”或“systemctl isolate multi-user.target”命令

or

        将系统切换到字符模式以后,图形桌面环境不再可用。这时按 Alt+F7 组合键也无法恢复图形桌面环境。需要再次使用图形桌面时,可以执行“init 5"或者“systemctl isolategraphical.target”命令切换回去。

        通过切换 target 的操作,还可以实现两个特殊的功能,那就是关机和重启。运行级别 0、6 分别对应关机、重启这两个特殊模式,因此只要执行“init 0”与“init 6”命令就可以实现相应的关机、重启操作了

        而运行级别 0、6 又分别对应着 systemd 的“poweroff.target”和“reboot.target”目标,因此执行“systemct poweroff’与“systemct reboot”命令也可以实现相应的关机、重启操作

        上述内容中的运行级别切换均为临时切换,若要永久切换运行级别,可通过In(链接)命令指定当前系统的默认运行级别。例如,执行如下命令可将当前系统的开机默认运行级别从 graphical.target 更改为 multi-user.target。其中,-s选项表示创建软链接;-f表示强行删除任何已存在的目标文件。

3.3  优化启动过程
        1、常见的系统服务


        必须强调的是,这些服务到底是选择开启还是关闭,应根据主机的实际功能需求来定,不要生搬硬套。例如,如果当前的 Linux 主机用来向局域网提供文件共享服务,那么 smb服务应开启,而不能关闭。

        2、优化开机自动加载的服务
        Linux操作系统在每次开机后会进入默认的systemd运行目标(如字符模式或图形模式),并运行该目标中默认设为启动的各种系统服务。若要禁止某些系统服务自动运行,可以使用ntsysv 或者 systemctl 工具进行优化。

(1)使用ntsysv工具
        ntsysv 工具可以在字符模式中运行,为用户提供一个仿图形的交互式操作界面,专门用于集中配置各种系统服务的启动状态。当需要同时设置多个服务的启动状态时,使用 ntsysv 工具会非常方便。

        单独执行“ntsysv”命令时仅用于管理当前运行目标中的服务;通过“--leve!”选项可以对指定运行目标(级别)中的服务进行管理。例如,执行“ntsysv--level35”命令可以打开 ntsysv管理程序,同时对运行目标 3、5中的各种系统服务的默认启动状态进行调整

        操作时按↑、↓方向键来选择不同的系统服务,按Space(空格)键设置服务的默认启动状态(“[*]"表示启动,“[]表示关闭)。如果要查看所选定服务的说明信息,按 F1 键可以获取帮助。

(2)使用systemctl工具
        systemctl 工具与 ntsysv的功能类似,但是 systemctl 不提供交互式的操作界面,它用于查询或设置系统服务的默认启动状态。当需要设置某一个服务在当前运行目标中的默认启动状态时,使用 systemctl 工具会更有效率。使用systemctl 工具控制服务开机启停的命令格式如下:

常见的选项有三种:

enable:开机自启动
disable:开机自启动关闭
is-enable:查看开机状态
        例如,执行以下操作即可配置 apache 服务开机自动启动或关闭,并查看开机启动状态当 apache 服务设置为开机自动启动时,在/etc/systemd/system/multi-user.target.wants/日录下面会出现一个文件名为 httpd.service 的软连接文件。当 apache 服务设置为开机自动关闭时,在/etc/systemd/system/multi-user.target.wants/日录下面的 htpd.service 软连接文件就会被删除。

        在当前系统下执行“systemctl list-units --type=service”命令可以查看当前系统中所有已激活的 系统服务,命令如下:

标签:引导,服务,操作系统,控制,系统,扇区,init,Linux,MBR
From: https://blog.csdn.net/m0_68625092/article/details/139420861

相关文章

  • FastAdmin 后端控制器与前端页面传参
    1.菜单让链接带参 2.控制器传参数到前端JS$this->assignconfig('tab',$tab); 3.JS传参回后端index_url:'contract/contract/index/tab/'+Config.tab, ......
  • 服务器遭遇挖矿怎么办?
    背景根据某安全公司安全威胁检测到在2019年中,恶意软件拦截量为181.07亿次,其中挖矿类恶意软件感染占比最多(58%),其次为远程木马(占比14%),企业或组织内文件共享等机制也使得感染型病毒的比例在9%左右。恶意软件一哥挖矿软件攻击势头非常猛,加密货币挖矿流量较去年增长约100%,在类型上......
  • 泛微e9阿里云linux服务器部署迁移总结
    1.基础部分,linux基础命令打开指定目录:cd[目录名称]创建目录:mkdir[目录名称]查看目录大小:du-sh[目录名称]启动停止服务:进入目录:cd/weaver/resin4/bin/启动服务:./startresin.sh停止服务:./stopresin.sh编辑文件vim【文件......
  • 京准电子 GPS北斗卫星授时服务器在煤矿数据系统的应用
    京准电子GPS北斗卫星授时服务器在煤矿数据系统的应用京准电子GPS北斗卫星授时服务器在煤矿数据系统的应用京准电子官微——ahjzsz卫星授时服务器在煤矿领域有着重要的应用,主要集中在以下几个方面:煤矿安全监控系统:煤矿通常具有庞大的安全监控系统,包括视频监控、传感器设备等......
  • Python基础---程序的控制结构
    Python基础—程序的控制结构Python基础---程序的控制结构一、程序流程成图(一)顺序结构(二)程序的分支控制结构1:单分支结构2.二分支结构3.多分支结构4.分支嵌套(三)程序的循环结构1、while循环2.while循环扩展模式3.for循环4.for循环扩展模式二、循环控制语句(一)conti......
  • Vue 3 中实现引导页
     Vue 3中实现引导页五秒后自动进入首页,并在进入首页时检查用户ID的逻辑使用组合式API(setup)使用VueRouter进行页面导航在首页组件中检查用户ID如果无用户ID,导航回登录页面1.设置引导页组件<template><transitionname="fade"><divv-if="showSplash">......
  • 基于单片机8155四层电梯控制系统设计
    **单片机设计介绍,基于单片机8155四层电梯控制系统设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机8155的四层电梯控制系统设计概要如下:一、系统概述本设计旨在通过单片机8155为核心控制器,构建一个四......
  • [MQTT]服务器EMQX搭建SSL/TLS连接过程(wss://)
    目录......
  • 无需公网IP、无需云服务器,实现远程直连NAS该怎么做?
    手机图片、视频太多,存储空间不够用怎么办?出门在外无法直连家中NAS,远程访问NAS速度慢?自建私有云、多媒体服务器,如何多人远程共享媒体资源?可以归纳为以下几种主要方案:1、使用内网穿透工具:内网穿透的原理是依靠一台具有公网IP的服务器作为请求的中转站,从而从公网访问内网主机......
  • 从零开始:腾讯云轻量应用服务器上部署MaxKB项目(基于LLM大语言模型的知识库问答系统)
    使用腾讯云轻量应用服务器部署和使用MaxKB项目前言一,MaxKB介绍MaxKB是基于LLM大语言模型的知识库问答系统,旨在成为企业的最强大脑。它支持开箱即用,无缝嵌入到第三方业务系统,并提供多模型支持,包括主流大模型和本地私有大模型,为用户提供智能问答交互体验和灵活性。二,效果展示 ......