1.linux系统启动步骤

(1)POST加电自检

Linux系统在接通电源之后,会自动启动POST加电自检程序来对内部的各个配件进行自检;自检出现错误系统无法启动,重则停机

(2)BIOS启动引导阶段

BOIS 基本输入输出系统:主板只读存储,检测并初始化硬件,并选择硬件引导

加电自检后,系统会进入BIOS阶段,在该阶段系统会启动Boot Sequence来查找引导设备,当找到有引导程序的设备时,系统会读取该引导设备的磁道一扇区mbr主引导程序,mbr会告诉系统下一步该干什么,进行下一阶段的启动

(3)GRUB启动引导阶段

GRUB 多重操作系统启动管理器,grub引导分为两个阶段:grub磁盘引导阶段、grub文件引导阶段

在该阶段系统会读取/etc/grub/grub.conf 系统配置文件,该文件为系统提供了菜单及加载的kernel位置,当kerenl被成功加载到内存重时,系统将进入下一阶段

(4)kerenl内核阶段

kerenl为系统的核心程序

进入内核阶段,系统会先探测可识别的所有硬件设备;随后系统会加载硬件驱动程序,进入系统初始化阶段, 将/挂载。

(5)init初始化阶段

初始化阶段,系统开始完成启动前的初始化操作,加载initrd镜像,根据文件执行脚本

(6)开启初始化进程systemd

开启selinux、加载内核参数、初始化系统时钟,键盘,主机名称、重新读写挂载/设备、**raid,lvm、**配额、启动multi-user.target.wants中的所有服务(具体开启的服务取决于系统启动的级别)、开启虚拟控制台、启动图形。

2.系统故障排错

(1)忘记root用户登录密码

  • 问题模拟:
    echo skdgl | passwd --stdin root
  • 解决方案:
    init 6 > rescue 按e > 倒数第二行删除到ro > rw rd.break #在启动阶段暂停 > ctrl x > chroot /sysroot #到root目录下 > echo redhat | passwd --stdin root #设置密码为redhat> touch /.autorelabel #selinux开启下需要重新设置标签 > exit > exit
  • 解决如图:
    linux系统故障排错linux系统故障排错

(2) grub系统引导阶段

一:grub磁盘引导阶段

  • 查看/所在硬盘:
    fdisk -l # *所在硬盘为/所在硬盘
    linux系统故障排错
  • 问题模拟:
    dd if=/dev/zero of=/dev/vda bs=446 count=1 #mbr主引导程序丢失
  • 解决方法:
    (1)为系统添加光盘,使用光盘启动系统,进入rescue援救模式
    (2)chroot /mnt/sysimage切换到主机真实环境
    grub2-install /dev/vda 启动分区所在的硬盘
    exit 退出主机环境
    exit退出援救模式
    (3)重新设置用硬盘启动系统,系统恢复正常
  • 解决如图:
    linux系统故障排错
    linux系统故障排错

linux系统故障排错
linux系统故障排错
linux系统故障排错

linux系统故障排错
linux系统故障排错
linux系统故障排错

二:grub文件引导阶段

  • 问题模拟:
    引导文件丢失 rm -fr /boot/grub2/grub.cfg

  • 解决方案:
    (1)为系统添加光盘,使用光盘启动系统,进入rescue援救模式
    (2) chroot /mnt/sysimage
    (3)grub2-mkconfig > /boot/grub2/grub.cfg
    (4)cp /boot/grub2/grub.cfg /etc
    exit
    exit
    (5)从硬盘启动

  • 问题如图:
    linux系统故障排错

  • 解决如图:
    linux系统故障排错

(3)内核阶段

  • 问题模拟:
    rm -fr /boot/vmlinuz-3.10.0-123.e17.x86_64 ##删除系统内核文件,使得内核文件丢失
  • 解决方案:思路是将镜像中的内核引导文件复制到/boot分区
    (1)在virt-manager里面,将光驱 IDE CDROM1 放在开机启动项第一位
    启动主机进入挽救模式
    (2)chroot /mnt/sysimage ##将系统挂载更改到根目录下
    mount /dev/sr0 /westos ##将光盘文件挂载
    cd /westos/Packages/ ##切换到安装包目录中(记住,不要ls,有4000多个包)
    cp kernel-3.10.-123.e17.x86_64.rpm /mnt/ ##将这个文件包拷贝到/mnt/下,因为在光盘目录中不能进行拆包
    cd /mnt/ ##切换到/mnt/
    ls ##查看/mnt/下拷贝过来的文件包
    rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id ##拆包
    ls ##查看包中的文件
    pwd ##查看当前路径
    cd boot/ ##切换到包中的boot/目录下
    ls -l ##包中存在内核文件
    cp vmlinuz-3.10.0-123.e17.x86_64 /boot/ ##将内核文件拷贝到系统的/boot/目录下
    exit ##退出chroot更改的根目录
    exit ##shell窗口
    (3)从硬盘启动
  • 问题如图:
    linux系统故障排错
  • 解决如图:
    linux系统故障排错

(4)初始化镜像文件丢失

  • 问题模拟:
    rm -rf /boot/initramfs-3.10.0-123.e17.x86_64.img
  • 解决方案:
    光盘启动rescue模式下,镜像文件的创建依靠于内核版本:
    ##生成系统初始化镜像, initramfs是/boot/grub2/grub.cfg 文件已经写好的,不能更改
    linux系统故障排错
    最后以硬盘启动
    注意: 重启速度慢的原因:
    开机慢是因为重新扫描selinux,可以将/etc/sysconfig/selinux中enforcing改成disabled,避免开机速度慢

(5)系统启动级别

(init 0)runlever0.target -> poweroff.target
runlever1.target -> rescue.target
runlever2.target -> multi-user.target
(init 3)runlever3.target -> multi-user.target
runlever4.target -> multi-user.target
(init 5)runlever5.target -> graphical.target
(init 6)runlever6.target -> reboot.target

相关文章: