13.LINUX——引导过程与服务控制

目录

1.linux 操作系统引导过程

13.LINUX——引导过程与服务控制
开机的时候,先是硬件自检BIOS 基本的输入输出系统 主板上的ROM芯片
配置BIOS 使用的是汇编语言 可以配置密码,时间等 配置BIOS信息的内容放在 CMOS 上面,是以RAM存储,对硬件加电自检 寻找可以引导系统启动的设备或者程序(光盘,硬盘,U盘,网络)
UEDI 使用的是C语言。比较容易实现,未来可能会接替BIOS

MBR引导 主引导记录,在磁盘的第一扇区,512字节的MBR
启动引导程序 boot loader 456字节
存放MBR分区表 64字节 一个分区16字节,有4个分区
16进制的字段, 2个字节 :根据系统型号决定,例如55AA AA55 ,意思可引导
核心目标: boot loader 寻找内核,加载内核,寻找的是系统里面的操作系统自己本身的 loader ,去进行识别,会有选项 提供用户,这就是GRUB菜单

GRUB菜单 centos 6 grub / centos 7 grub2
将会显示提供用于选择,并根据-选项加载linux内核文件

加载内核 boot loader 移交控制权,进行解压,在系统中运行
本身也会进行自检,检查驱动程序是否安装
加载上module 模块,系统引导器程序会从本地硬盘中加载内核以及内存文件系统 initramfs,其中包含启动时所有必要的硬件内核模块、初始化脚本等
为了挂载,加载驱动,依赖一个虚拟文件系统,帮助识别挂载,
内核无法自己主动识别驱动,boorleader 找到内核,找到initarnfs文件系统(伪根)
之后找到真正的根 文件系统

init进程 初始化
centos 7里面是 init 6
会产生第一个系统的进程 systemd 进程号 PID=1
在initramfs中找到驱动程序的所有硬件,然后作为PID 1
从initramfs执行/lib/systemd/systemd
systemd启动initrd.target中所有单元,包括挂载/etc/fstab
然后从initramfs根文件系统切换到磁盘根目录并且systemd启动默认target(字符界面还是图形化界面)也就是 /etc/systemd/system/default.target
最后等待用户登陆

system 启动之后,有一个支持的软件环境,systemd 服务
systemd 服务:

  1. sysint 对系统进行初始化,准备一些文件系统,用户名,网络的基本设置,文件系统的格式
    2.multiuser 然后进入命令行模式,系统自启动的服务
    3.getty 为用户准备一个登录环境,安装图形化界面的步骤
    4.graphcal 实现图像界面化的登录.

2.排除启动故障错误

centos7忘记密码恢复方法
https://www.cnblogs.com/rzxiaojia/p/8360558.html
启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式
在linux16/linux/linuxefi所在参数行尾添加以下内容:init=/bin/sh
按Ctrl+x启动到shell
挂载文件系统为可写模式:mount –o remount,rw /
运行passwd,并按提示修改root密码
运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启

MBR扇区修复
1、首先模拟故障
新加一块硬盘,格式化挂载
dd if=/dev/sda of=/opt/sdb/mbr.bak bs=512 count=1
dd if=/dev/zero of=/dev/sda bs=512 count=1
2、重启电脑,无法进入系统
3、设置boot选项从光盘进入
4、选择修复模式进入
5、mkdir /bak
6、重新挂载sdb,mount /dev/sdb /bak
7、dd if=/bak/mbr.bak of=/dev/sda
8、reboot重启
9、boot修改第一启动项为硬盘,顺利进入系统

grub修复
1、从光盘启动,进入救援模式,进入修复shell

执行chroot /mnt/sysimage #初始系统已经挂载到了/mnt/sysimage下面,想要进入初始系统下面,需要执行chroot /mnt/sysimage命令
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot

3. 服务控制及切换运行级别

13.LINUX——引导过程与服务控制
init 0 正常关机的状态,其中一个命令 shutdown
init 1 修复系统,root系统,相当于windos的安全模式,单用户模式
init 2 不太常用,没有共享存储,无网络 ,多用户模式
init 3 默认字符界面,多用户模式,不止root 用户可以使用,如果是最小安装,没有图形界面 默认init 3
init 4 保留,不使用
init 5 图形化界面,实现图形界面的多用户模式
init 6 重启 或者reboot 或者 shutdown -r

运行级别:
13.LINUX——引导过程与服务控制

4.优化启动过程

13.LINUX——引导过程与服务控制
13.LINUX——引导过程与服务控制

5.相关命令

命令 作用
systemctl --version 查看systemd的版本
systemctl start name.service 开启服务
systemctl stop name.service 停止服务
systemctl restart name.service 重启服务,先停止后启动
systemctl reload name.service 重新加载服务的配置文件,服务不会中断
systemctl status name.service 查看服务状态
systemctl enable name.service 设置开机自启
systemctl disable name.service 设置服务开机不自启
systemctl is-enable name.service 查看服务是否开机启动
systemctl cat kube-apiserver .service 查看服务的system服务配置
systemctl unmask name.service 取消屏蔽服务
systemctl get-default 查看当前系统默认启动的target
systemctl set-default multi-user.target 设置启动的target为 multi-user.target
systemd-analyze 查看系统启动耗时,等同于systemd-analyze time
上一篇:常用Linux命令(后续在补)


下一篇:Linux引导过程