引导过程与服务控制

227 阅读5分钟

开机引导和服务

开机引导过程

1.开机自检

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

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. 加载Linux内核 操作系统 调度硬件

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

5. init进程初始化 这是linux 系统运行的第一个程序

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

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

2.png

systemd服务

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

2.按需启动

3.自动解决依赖关系

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

Systemd新特性

  • 系统引导时实现服务并行启动

  • 按需启动守护进程

  • 自动化的服务依赖关系管理

  • 同时采用socket式与D-Bus总线式激活服务

  • socket与服务程序分离

  • 向后兼容sysv init脚本

  • 使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,

  • systemctl无法与之通信和控制

  • 系统状态快照

systemd 核心概念:unit

unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听

socket、保存的系统快照以及其它与init相关的信息

3.png

4.png

实验一,修复mbr扇区

######## 加块硬盘,刷新接口,分区,格式化分区
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
[root@localhost ~]# lsblk         #### 查看刷新接口是否成功
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   48G  0 part 
  ├─centos-root 253:0    0   40G  0 lvm  /
  └─centos-swap 253:1    0    8G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64
[root@localhost ~]# fdisk /dev/sdb      #### 磁盘分区
[root@localhost ~]# mkfs.xfs /dev/sdb1  #### 格式化磁盘分区
[root@localhost ~]# lsblk               #### 查看是否分区成功
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    5G  0 part /boot
└─sda2            8:2    0   48G  0 part 
  ├─centos-root 253:0    0   40G  0 lvm  /
  └─centos-swap 253:1    0    8G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0   15G  0 part 
sr0              11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64
[root@localhost ~]# mkdir /data             #### 创建个文件夹
[root@localhost ~]# mount /dev/sdb1 /data   ### 挂载分区
[root@localhost ~]# dd if=/dev/sda of=/data/xiu.bak bs=512 count=1
记录了1+0 的读入          ####  备份MBR扇区
记录了1+0 的写出
512字节(512 B)已复制,0.000260722 秒,2.0 MB/秒
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入          #### 模拟MBR扇区被破坏
记录了1+0 的写出
512字节(512 B)已复制,0.0002399 秒,2.1 MB/秒

[root@localhost ~]# hexdump -C -n 512 /dev/sda    #### 查看MBR扇区是否被破坏
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200
[root@localhost ~]# init 6     ##### 重启虚拟机

6.png

7.png

8.png

9.png

实验二,修复GRUB引导故障

rm -rf /boot/grub2/grub.cfg ##### 模拟GRUB 引导文件被破坏

init 6 #### 重启虚拟机

11.png

12.png

6.png

7.png

13.png

14.png

init 6 重启虚拟机

实验三,修改root用户密码

########  启动虚拟机 在加载系统界面按"E"键进入编辑模式
########  找到"linux16"开头的那段,光标跳到末尾输入"rd.break"
########  ctrl + x 继续
########  mount -o remount,rw /sysroot
########  chroot /sysroot/   切换根目录
########  passwd root
########  exit 
########  init 6  重启