Linux系统启动过程

204 阅读4分钟

引导过程

image.png

开机自检

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

BIOS硬件设置,是为了检测下一步是交给硬盘还是光驱还是网卡(第一启动项有问题,会出现不停重启现象)

总结:检测出第一个能够引导系统的设备,比如硬盘或者光驱

MBR引导

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

MBR只有446字节,后64字节为分区表,最后2个字节是005A,最后是一个完整的grub程序,前面的grub是一个精简的grub程序(在446字节中的grub),用于引导硬件找到内核,再读取文件系统

运行放在MBR扇区里的启动GRUB引导程序

可以通过hexdump -C -n 512 /dev/sda查看前512字节

image.png

GRUB

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

加载内核程序

内核接过系统控制权以后,会控制linux操作系统的运行过程。

把内核和镜像文件系统加载到内存中

CentOS 7系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

init进程

init 进程负责完成整个系统的初始化,最后等待用户进行登录。

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

centos6,7加载进程区别

init进程(centos6)

init进程的PID号永远为1

启动顺序:

  • 挨个启动(淘汰了)

systemd进程(centos7)

启动顺序:

  • 全部一起启动

systemd代替服务监听 启动

systemd

systemd的新特性

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

systemd的核心概念是:unit

systemd单元

image.png

  • 有很多个后缀,主要为记着三个

运行级别对应的systemd

image.png

  • 由于2,3,4的释义差不多,级别是同一个,并且systemd的target也是一样的,就卸载同一个里面就好,主要还是记得0,1,5,6,这几个级别

实验

修复MBR分区

  • 先备份MBR引导扇区到其他磁盘中去,但是这边我需要先分区,才可以做到备份

image.png

image.png

image.png

  • 分区完成,现在开始准备备份 image.png

image.png

  • 复制完成后,开始破坏mbr文件的的前512字节(所谓破坏,就是将其准一到别的地方)

image.png

  • 需要重启机器,由于mbr损坏就不会进入登录页面

image.png

image.png

  • 鼠标点进去,上下键,选择第三个,进入急救模式

image.png

image.png

image.png

image.png

image.png

重建grub程序

  • 当grub程序损坏时或者被删除时候怎么修复

演示

image.png

  • 重新启动会出现 image.png
  • 删除之后,需要重建grub程序,就需要进入急救模式,但是进入急救模式的方法不同
  • 需要再重新启动,在读条界面按 Esc 键进入启动菜单(这个时间很短,需要手速很快),改用光盘启动,进入急救模式,重建GRUB菜单配置文件。

image.png

image.png

image.png

image.png

image.png

image.png

image.png

以往root密码怎么办

在没有光驱的情况下

  • 在读条时候,按e键进入编辑模式

image.png

image.png

  • 光标找到linux开始行,按end键调到行尾,在行尾加上rd.break
  • 如果看屏幕上没有,就按住上下键会往下翻 image.png
  • 按住ctrl+x键启动

image.png

image.png

  • 如果SELinux是启用的,才需要执行下面操作,如没有启动,不需要执行

centos 6修改密码

  • 启动时候,按上下键
  • 按a
  • 输入s,在输入1,进入单用户模式
  • 最后passwd修改密码即可