首页 > 系统相关 >linux引导和服务

linux引导和服务

时间:2022-10-07 23:55:46浏览次数:59  
标签:引导 服务 GRUB 启动 systemctl 内核 linux

一、引导过程

引导过程总览

1.1开机自检

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

  • 硬件启动POST:加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测。
  • 主板的ROM:保存着有关计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序和系统启动自举程序等。

1.2MBR引导

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

1.3GRUB菜单

对于 Linux 操作系统来说,GRUB(统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)准备加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,CentOS 7采用的是GRUB2启动引导器。
总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。
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 启动阶段
(1)primary boot loader:

  • 1st stage:MBR的前446个字节引导硬件去找内核
  • 1.5 stage:MBR之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统

(2)secondary boot loader:2nd stage,分区文件/boot/grub2/grub.cfg

1.4加载linux内核,操作系统调度硬件

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

1.5init进程初始化这是linux运行的第一个程序

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

  • 传统init依赖于串行执行Shell脚本启动服务,导致效率低下,系统启动速度较慢需要排队启动。
  • systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度大家一起。

二、服务

2.1systemd服务

systemd服务:

  • 对比5和6可以解决依赖关系并行启动
  • 按需启动
  • 自动解决依赖关系

负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
Systemd新特性

  • 系统引导时实现服务并行启动
  • 按需启动守护进程
  • 自动化的服务依赖关系管理
  • 同时采用socket式与D-Bus总线式激活服务
  • socket与服务程序分离
  • 向后兼容sysv init脚本
  • 使用systemctl命令管理systemctl命令固定不变,不可扩展,非由systemd启动的服务
  • systemctl无法与之通信和控制
  • 系统状态快照

systemd 核心概念:

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

2.2修复MBR分区

  • 备份mbr引导扇区到其他磁盘
  • 模拟破坏mbr引导扇区
  • 引导镜像急救模式进行mbr扇区恢复

实验1:没有出错情况下

出错情况下:

 1 总结:
 2 1.先备份第一块硬盘的前512字节,不要备份再同一块硬盘上
 3 命令:dd if=/dev/sda of=/mnt/mvr.bak conut=1 bs=512
 4 
 5 2.模拟破坏前512字节
 6 命令:dd if=/dev/zero of=/dev/sda conut=1 bs=512
 7            hexdump -C -n 512 /dev/sda(看sda前512字节)
 8 
 9 3.重启
10 选第三个选项,再选第二个文件,输入1回车,回车
11 创建空文件夹,挂载到空文件夹上
12 把文件夹复制到sda下

2.3修复GRUB分区

实验2:重新构建grub文件

出错情况:

  • 将整个boot文件删除
  • 将/boot/grub2文件删除
  • 将/boot/grub2/grub.cfg文件删除
1 总结:
2 rm -rf /boot/grub2/grub.cfg              #模拟删除grub.cf 文件
3 进入急救模式,选择1 继续
4 chroot /mnt/sysimage                  #进入急救模式后,更改环境
5 grub2-install /dev/sda                  #重新建立加载sda分区
6 grub2-mkconfig -o /boot/grub2/grub.cfg    #重新构建grub菜单配置文件
7 exit                               #退出当前系统
8 reboot                              #重启

2.4修改密码

实验3:有光驱前提下

 

 没有光驱的情况下重启出现下面的图片:

补充:centos6修改密码

启动时按上下键---->按a---->输入s 空格 1进入单用户模式---->passwd修改密码

2.5启动关闭服务

1 开启关闭服务:
2 查看服务状态:systemctl status 服务名
3 启动服务:systemctl start 服务名
4 关闭服务:systemctl stop 服务名
5 重新加载服务:systemctl reload 服务名
6 重启服务:systemctl restart 服务名
7 立刻开机自启:systemctl enable --now 服务名
8 立刻关闭服务开机不自启:systemctl disable --now 服务名

标签:引导,服务,GRUB,启动,systemctl,内核,linux
From: https://www.cnblogs.com/feizirui/p/16767534.html

相关文章