引导过程和服务

sl08 23 / 2023-07-31 / 原文

引导过程和服务

1,引导过程详解

image-20230730130641135

1.1开机自检(BIOS

加电自检,检硬件是否有故障,如果无故障,就去bios中设置的第一启动项找grub的第一阶段。

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

硬件启动POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测

主板的ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等

2.MBR引导

第一个扇区的前446字节,有一个 grub程序第一阶段,引导硬件找到grub完整的程序。

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

3.GRUB菜单

GRUB菜单,会根据grub.cfg 配置文件找到操作系统。

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 启动阶段

  • primary boot loader :

    1st stage:MBR的前446个字节 引导 硬件去找 内核

    1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统

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

4、加载内核(操作系统)

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

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

5、启动程序

centos7 systemd,centos6 init 这分别是linux 系统运行的第一个程序

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

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

2,服务

2.1systemd服务

1.相比Centos 5 6 可以解决依赖关系并行启动

2.按需启动

3.自动解决依赖关系

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

是开机第一个启动的程序,提供保姆服务,可以将沉睡的程序换醒。

systemd单元文件默认存放在/lib/systemd/system目录中,每当安装新的软件都会自动在这个目录中添加一个配置文件。 systemctl 命令用于管理各种类型的systemd单元,可以使用“systemctl -t help”命令来查询systemd支持的单元类型。

在编译安装时,可在默认目录下添加 .Service文件用systemctl命令来管理程序/lib/systemd/system/nginx.service

使用systemctl命令管理服务命令

systemctl start 程序名 开启服务 systemctl stop 程序名关闭服务 systemctl restart 程序名 重启服务 systemctl reload 程序名重新加载服务配置文件 systemctl status 程序名查看服务状态 systemctl enable 程序名开机自启 systemctl disable 程序名关闭开机自启

用systemctl 开启nginx,和查看nginx服务状态

image-20230730135101238

 

3、运行级别

Linux 可以支持运行级别的设置,运行级别就是操作系统当前正在运行的功能级别,级别是从 0 到 6

0系统停机/关机模式,系统默认运行级别不能设置为0,否则不能正常启动,一开机就自动关机
1 单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
2 多用户模式,没有NFS网络支持。
3 完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式。
4 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 图形化模式,登陆后进入图形GUI模式或GNOME、KDE图形化界面,如x Windows系统。
6 系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动,就会一直开机重启开机重启。
runlevel 命令可以查看当前的运行级别
[root@localhost ~]#runlevel
3 5
3 是之前运行过的级别
5是现在的运行级别
N代表之前没有改变
[root@localhost ~]#
设置运行级别
命令格式:

systemctl [command] [unit.target]
command参数:

  get-default :取得当前的target  

  set-default :设置指定的target为默认的运行级别   3 5

  isolate :切换到指定的运行级别

  unit.target :上面列出的运行级别

 

image-20230730141933048

image-20230730142052252

image-20230730142132679