Linux引导过程

2021/5/14 7:27:22

本文主要是介绍Linux引导过程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux引导过程

  • Linux引导过程一共分为五个步骤
    • 开机加电自检
    • MBR引导
    • grub菜单
    • 加载内核
    • 进程初始化
  • 运行级别
    • init 0
    • init 1
    • init 2
    • init 3
    • init 4
    • init 5
    • init 6
      • systemd中的单元类型
  • 相关实验
    • centos7忘记密码恢复方法
    • MBR扇区修复
    • grub修复

Linux引导过程一共分为五个步骤

开机加电自检

对硬件进行自检,找到可引导的硬盘后将控制器给MBR

MBR引导

MBR中存放boot loader启动引导程序,存放了分区表,里面有一个55AA或AA55字段,表示有操作系统,同时生成一个initramfs虚拟文件系统,同时寻找内核并加载内核,调用grub菜单

grub菜单

系统控制权传递给GRUB 以后,将会显示提供用于选择,并根据选项加载linux内核文件,centos6是grub菜单,centos是grub2菜单。

加载内核

检测硬件驱动程序,加载module模块用于存放硬件驱动程序,其中initramfs为了驱动和挂载系统

进程初始化

在initramfs中找到驱动程序的所有硬件,然后作为PID 1从initramfs执行/lib/systemd/systemd,centos6是init进程,centos7是systemd进程

运行级别

Linux系统中有七种

init 0

关机,systemd中是target

init 1

维护系统,单用户模式,systemd中是rescue.target

init 2

没有网络,没有共享存储的命令行,systemd中是multi-user.target

init 3

命令行模式,systemd中是multi-user.target

init 4

用作保留,未使用,systemd中是multi-user.target

init 5

图形界面模式,systemd中是graphcal.target

init 6

重启,systemd中是reboot.target

查看当前运行级别用runlevel,或者systemctl get-default

systemd中的单元类型

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

systemctl的管理命令
/etc/systemd/system 用于存放不同级别的开机自启服务
/run/sysytemd/system 系统执行过程中所产生的服务脚本所在目录
/usr/lib/systemd/system 每个服务最主要的启动脚本设置

systemd
systemctl is-enabled httpd查看是否开机自启
systemctl enable httpd设置开机自启
systemctl disable httpd设置开机不自启
systemctl status httpd查看当前服务的状态
systemctl reload httpd不关闭进程重启
systemctl start httpd开启httpd服务
systemctl stop httpd关闭httpd服务
systemctl list-unit-files | grep enabled查看当前启动的进程
systemctl cat httpd查看服务启动配置文件
systemctl isolate multi-user.target切换模式为命令行模式

相关实验

centos7忘记密码恢复方法

启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式
在这里插入图片描述
按Ctrl+x启动到shell,然后重新挂载,重新设置密码
在这里插入图片描述
然后重启
在这里插入图片描述
如果发现重启一直进不去,可以进入/etc/selinux中删除config这个文件即可
注意:密码必须八位,不然会提示密码不正确

MBR扇区修复

先模拟扇区故障,将a硬盘第一块扇区移走

[root@localhost ~]# dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000147779 秒,3.5 MB/秒
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000145505 秒,3.5 MB/秒
[root@localhost ~]# 

发现一直不能开机
在这里插入图片描述
设置boot选项从光盘进入,选择修复模式进入
在这里插入图片描述
选第三个
在这里插入图片描述
选第二个
在这里插入图片描述
选1继续
在这里插入图片描述
进入shell
在这里插入图片描述
重新创建一个挂载点挂载,然后将备份的第一个扇区转入sda中
在这里插入图片描述
然后将boot选项设置成硬盘启动
在这里插入图片描述
然后就可以输入密码了
在这里插入图片描述

grub修复

模拟grub故障
在这里插入图片描述
删掉图形化菜单后开机
在这里插入图片描述

设置boot从光盘启动
在这里插入图片描述
同上进入修复模式,然后按1继续
在这里插入图片描述
然后输入
在这里插入图片描述
然后重新创建grub2中的被删除的文件
在这里插入图片描述
在这里插入图片描述
然后将boot设置硬盘启动
在这里插入图片描述



这篇关于Linux引导过程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程