引导过程和服务控制

 linux的引导过程

1、开机自检

服务器主机开机后,根据主板BIOS的设置对cpu、内存、显卡等设备进行基础检测,检测成功后根据一、linux的引导过程预设的启动程序移交系统控制权,大多时候会移交系统控制权,大多时候会移交给本机硬盘。

总结:如果是网络启动的话会开启pxe。

2、MBR引导

当本机硬盘启动系统时,首先根据第一个扇区中MBR的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单

总结:运行在MBR扇区里启动GRUB引导程序

3、GRUB菜单

对于linux操作系统来说GRBR(统一管理器)是使用最为广泛的多系统引导程序。

系统控制权传递给GRUB以后,将会显示用户菜单给用户选择,并根据所选项(或采用默认值)加载linux内核文件,然后将系统控制权交给内核,需要主要的是cenos7采用的是GRUBR2启动引导器。

总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。

4、加载linux内核

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

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

5、init进程初始化

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

总结:加载硬件驱动程序,内核init加载到内存中运行。

systemd服务

  • 对比5 6 可以解决依赖关系并行启动
  • 按需启动
  • 自动解决依赖关系
  • 负责在系统启动或运行时,激活系统资源,服务器进程 和其它进程

init和systemd比较

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

Systemd新特性

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

Systemd 单元类型

在systemd中不同类型的systemd对象被统一称为单 元,是让系统知道该如何进行操作和管理资源的主要 对象,所以systemd有许多单元类型。

systemd单元文件最初默认存放在/lib/systemd/system目录中,每当安装新的软 件都会自动在这个目录中添加一个配置文件。

单元类型说明
Service描述一个系统服务
Socket描述一个进程间通信的套接字
Device描述一个内核识别的设备文件
Mount描述一个文件系统的挂载点
Automount描述一个文件系统的自动挂载点
Swap描述一个内存交换设备或交换文件
Path描述一个文件系统中文件或目录
Timer描述一个定时器(用于实现类似cron的调度任务)
Snapshot用于保存一个systemd的状态
Scope使用systemd的总线接口以编程的方式创建外部进程
Slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target描述一组systemd的单元

systemctl 命令用于管理各种类型的systemd单 元,可以使用“systemctl -t help”命令来查询 systemd支持的单元类型

[root@localhost ~]# systemctl -t help
Available unit types:
service
socket
busname
target
snapshot
device
mount
automount
swap
timer
path
slice
scope

使用“ls /lib/systemd/system”可以查看系统中所有的单元文件。 

修复mbr分区

故障原因

病毒、木马的等造成的破坏;

不正确的分区操作、磁盘读写误操作等。

故障现象

找不到引导程序,启动中断;

无法加载操作系统,开机后黑屏。

解决思路:

备份mbr引导扇区到其他磁盘

模拟破坏mbr引导扇区

引导镜像急救模式进行mbr扇区恢复

实验

[root@localhost ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0   37G  0 part /
sdb      8:16   0   40G  0 disk 
sr0     11:0    1 1024M  0 rom  
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xaa18be24 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk /dev/sdb -l

磁盘 /dev/sdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xaa18be24

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /cs
[root@localhost ~]# mount /dev/sdb1 /cs
[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        37G  4.0G   34G   11% /
devtmpfs        975M     0  975M    0% /dev
tmpfs           991M     0  991M    0% /dev/shm
tmpfs           991M   11M  981M    2% /run
tmpfs           991M     0  991M    0% /sys/fs/cgroup
/dev/sda1      1014M  164M  851M   17% /boot
tmpfs           199M   12K  199M    1% /run/user/42
tmpfs           199M     0  199M    0% /run/user/0
/dev/sdb1        10G   33M   10G    1% /cs
[root@localhost ~]# dd if=/dev/sda of=/cs/mar.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000201265 秒,2.5 MB/秒

 破坏MBR,模拟扇区故障

[root@localhost ~]# ls /cs/
mar.bak
[root@localhost ~]# ls /cs/ -l
总用量 4
-rw-r--r--. 1 root root 512 4月  12 16:49 mar.bak
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000193479 秒,2.6 MB/秒
[root@localhost ~]# init 6

 选择 troubleshooting ,然后选择“Rescue a CentOS system”(急救模式),从备份文件中恢复MBR扇区,最后重新启动

 

 

 

 成功进入用户登录界面,修复成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值