Linux下的系统引导过程及系统排错

1、系统引导过程

通电->bios初始化->grub磁盘引导阶段->grub文件引导阶段->指定boot所在分区->启动挂载,只读挂在/设备->启动init程序进入初始化阶段->启动systemd初始化进程->取/etc/systemd中的文件->启动程序->启动登陆环境

下面是以 GRUB2 和 systemd 为载体讲述操作系统的开机引导和启动过程,这二者是目前主流的 linux 发行版本所使用的引导装载程序和初始化软件

(1)BIOS

上电自检过程中其实 Linux 没有什么也没做,上电自检主要由硬件的部分来完成,这对于所有操作系统都一样。当电脑接通电源,电脑开始执行 BIOS(基本输入输出系统Basic I/O System)的 POST(上电自检Power On Self Test)过程。BIOS 被设计为用来初始化硬件组件,POST 作为 BIOS 的组成部分,用于检验电脑硬件基本功能是否正常。如果 POST 失败,那么这个电脑就不能使用,引导过程也将就此中断。

(2)引导装载程序GRUB2

GRUB2 全称是 GRand Unified BootLoader,Version 2(第二版大一统引导装载程序)。它是目前流行的大部分 Linux 发行版本的主要引导加载程序。GRUB2 是一个用于计算机寻找操作系统内核并加载其到内存的智能程序。它能够用来引导不同版本的 Linux 和其他的开源操作系统。

    阶段 1

在 POST 阶段结束时,BIOS 将查找在接入的磁盘中查找引导记录,其通常位于 MBR(主引导记录Master Boot Record),它加载它找到的第一个引导记录中到内存中,并开始执行此代码。MBR 中,引导代码实际所占用的空间大小为 446 字节。这个阶段 1 的 446 字节的文件通常被叫做引导镜像(boot.img),其中不包含设备的分区信息,分区是一般单独添加到引导记录中。

    阶段 2

这一阶段的主要功能是定位和加载 Linux 内核到内存中,并转移控制权到内核。内核的相关文件位于 /boot 目录下,这些内核文件可以通过其文件名进行识别,其文件名均带有前缀 vmlinuz。你可以列出 /boot 目录中的内容来查看操作系统中当前已经安装的内核。

(3)内核初始化

内核文件都是以一种自解压的压缩格式存储以节省空间,它与一个初始化的内存映像和存储设备映射表都存储于 /boot 目录之下。在选定的内核加载到内存中并开始执行后,在其进行任何工作之前,内核文件首先必须从压缩格式解压自身。一旦内核自解压完成,则加载 systemd进程,并转移控制权到 systemd。

(4)systemd

systemd 是所有进程的父进程。它负责将 Linux 主机带到一个用户可操作状态(可以执行功能任务)

2、磁盘引导程序错误
dd if=/dev/zero of=/dev/vda bs=446 count=1 #从无限零字节设备中,截取446字节到/dev/vda中,

reboot //重启,虚拟机mbr磁盘引导错误


真机:virt-manager

(1)硬件的修改,只能在虚拟机关闭的情况下才会生效!!!



(2)添加光盘


(3)从光盘启动


(4)开启虚拟机,执行如下步骤进入拯救模式




需要进行多次确认




(5)拯救模式,如下图:


(6)退出拯救模式,再次从硬盘启动


3、引导文件丢失
rm -fr /boot/grub2/grub.cfg  #删除自动引导文件

grub2-mkconfig > /boot/grub2/grub.cfg #直接恢复自动引导文件即可


当自动引导文件丢失,且系统已被重启,则手动引导即可:


进入虚拟机后,别忘了重新生成引导文件,否则每次都需要手动引导哦!


4、内核文件丢失


进入光驱中的Packages,将kernel-3.10.0-123.el7.x86_64.rpm安装包,复制到桌面
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id #拆解

cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot #拷贝至/boot


当内核文件丢失,且系统重启过,那么,按章上文所示方法进入拯救模式:


完成后,再次从硬盘启动即可

5、系统初始化文件丢失


#shell中,初始化恢复同mkinitrd /boot/initramfs-`uname -r`.img `uname -r`,某些环境存在兼容性的问题

当初始化文件丢失,且系统重启过,那么,按章上文所示方法进入拯救模式:


6、启动级别发生错误
systemctl set-default shutdown.target

reboot


在系统启动阶段 按上下健停止系统系统引导
选择启动引导标题,按“e”进行编辑

找到linux16引导条目这一行,在这行最后写 5 (默认开机级别)

ctrl+x启动设定过后的系统引导条目


成功进入虚拟机后,systemctl set-default graphical.target恢复启动级别


7、根用户密码重置

在系统启动阶段按上下健停止系统系统引导
选择启动引导标题,按“e”进行编辑
找到linux16引导条目这一行,在这行删除至ro,将ro改为rw,添加rd.break

ctrl+x启动设定过后的系统引导条目,执行如下操作:


猜你喜欢

转载自blog.csdn.net/yyyxxxs/article/details/80349035