Linux服务器启动和修复方式

 更新时间:2026年02月24日 09:45:00   作者:feng68_  
本文介绍了Linux系统启动过程中的疑难问题及其解决方法,包括磁盘引导阶段、文件引导阶段、内核文件丢失、系统初始化文件丢失和/boot丢失等问题的诊断和修复步骤

一、通电

启动

启动所有硬件并进入系统做准备

修复

检查所有电源设备,确定供电设备正常,所有线缆是否插紧,检查线缆是否有损坏

二、BIOS环境检查

检查硬件是否正常、检查硬件是否插紧

以上问题是硬件问题不是我们要关注的,找修电脑的修,我们要关注的是第三步即以下部分

三、磁盘引导

了解mbr

mbr主要作用是使得磁头去读取启动分区(/boot分区)

在linux下找到/boot分区,如果此阶段出现问题,那么系统会处于黑屏并闪烁光标

模拟问题

模拟命令

 [root@Server ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1
 # 此命令表示用无限零字节覆盖/dev/sda上最前面的446个字节(最前的446个字节就是mbr主引导记录,其负责找到/boot)
 # /dev/sda 是系统boot分区所在的磁盘
 1+0 records in
 1+0 records out
 446 bytes copied, 0.000200806 s, 2.2 MB/s
 [root@Server ~]# reboot
问题现象

要把 光盘给取消勾选“启动时连接” 和 关掉(BIOS)或移除(取消启动时连接还不管用)网卡(不然它会上网去恢复,看不到现象),问题提示此如下:

解决问题

mbr是在安装系统时安装来的,那么我们再从光盘中安装就好了

1.重光盘启动

在光盘选项中勾选“启动时连接”,开机后选择“Troubleshooting”

2.进入系统挽救模式

这个挽救模式是由光盘提供的

3.得到shell后操作

开始执行修复命令,修复原理是把mbr重新安装到启动设备

chroot /mnt/sysroot		# 不同系统被挂载的地方可能不一致
grub2-install 启动设备(/dev/sda)		# 根据*所在分区不同而确定启动分区所在的设备		fdisk -l
exit
exit

执行命令使它正常挂载

grub2-install往哪里安装,往有*的设备上安装

4.成功回到引导界面

四、文件引导阶段

在文件系统引导阶段,系统会读取自动引导文件(/boot/grub2/grub.cfg),在此文件中指定系统启动过程中会读取什么文件,加载什么文件。

模拟问题

/boot/grub2/grub.cfg文件丢失

当/boot/grub2/grub.cfg文件丢失,那么将无法完成自动启动

模拟命令

事前准备,确定根分区和boot分区所在系统位置

 [root@Server ~]# df
 Filesystem     1K-blocks     Used Available Use% Mounted on
 devtmpfs            4096        0      4096   0% /dev
 tmpfs            1857340        0   1857340   0% /dev/shm
 tmpfs             742940    10584    732356   2% /run
 /dev/sda3       99634176  2930108  96704068   3% /      # 根分区(hd0,3)hard-->硬盘设备
 /dev/sda1         983040   264680    718360  27% /boot      # boot分区(hd0,1-->第一个设备的第一个分区)
 /dev/sr0        10825576 10825576         0 100% /media
 tmpfs             371468        0    371468   0% /run/user/0

把这文件删了就好,要是及时发现,还可以用grub2-mkconfig > /boot/grub2/grub.cfg命令重新生成覆盖挽救一下。

 [root@Server ~]# rm -rf /boot/grub2/grub.cfg
 [root@Server ~]# reboot
问题现象

解决问题

它自是不能自动启动了,还可以手动引导

 # 命令可以用tab键补全
 grub> set root=(hd0,msdos1)     # 指定boot分区位置
                                 # hdn便是boot分区在哪个硬盘上
                                 # msdosn在哪个分区
 # 回车后它给我们的内存有限,不要反复手残,然后报内存溢出的错误
 ​
 # 指定内核文件,只读挂载根设备
 grub> linuxx16 /vmlinuz-5.14.0      net.ifnames=0 selinux=0     # 只读挂载根分区,读取根分区里面的东西,注意:这里的selinux参数必须于你之前在中设定的参数一样,不写默认是1,不然参数不一样它会重启一遍去读取selinux,就白写命令了,net.ifnames=0也写上,之前做系统母盘时这两个参数都动过,具体情况根据机器具体而写。
 grub> initrd16 /in
 grub> boot  # 不是reboot,不然上面执行的命令白干,又得从新写一遍
 ​
 # 完成以上手动引导后再进入系统重写grub.cfg文件下次进系统就可以开机自动引导了
 [root@Server ~]# grub2-mkconfig > /boot/grub2/grub.cfg
 [root@Server ~]# reboot # 以成功自动引导

也是ok的啊,成功来到了登录黑框,现在只需从新写grub.cfg文件并覆盖到/boot/grub2/目录下就ok了

成功出现引导界面

内核参数文件丢失

模拟命令
 [root@Server ~]# ls /boot/loader/entries/
 3890aef9b6a64543b93a31bfc8c60d0d-0-rescue.conf
 3890aef9b6a64543b93a31bfc8c60d0d-5.14.0-427.13.1.el9_4.x86_64.conf
 [root@Server ~]# rm -rf /boot/loader/entries/*
 [root@Server ~]# reboot
问题现象

解决问题

问题现象和解决问题和“/boot/grub2/grub.cfg文件丢失”一样,先手动挂载。

进入系统后用kernel-install命令恢复

 [root@Server ~]# kernel-install add --help
 Usage:
   kernel-install [OPTIONS...] add KERNEL-VERSION KERNEL-IMAGE [INITRD-FILE...]
                                     # 内核版本      内核文件
   kernel-install [OPTIONS...] remove KERNEL-VERSION
   kernel-install [OPTIONS...] inspect
 Options:
   -h, --help     Print this help and exit
       --version  Print version string and exit
   -v, --verbose  Increase verbosity
 [root@Server ~]# uname -r       # 查看内核版本
 5.14.0-427.13.1.el9_4.x86_64
 [root@Server ~]# kernel-install add `uname -r` /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64
 [root@Server ~]# ls /boot/loader/entries/
 3890aef9b6a64543b93a31bfc8c60d0d-0-rescue.conf
 3890aef9b6a64543b93a31bfc8c60d0d-5.14.0-427.13.1.el9_4.x86_64.conf

内核文件丢失

启动内核过程系统都完成了以下工作:

  • 加载内核文件/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64
  • 只读挂载根设备
  • 读取/etc/fstab文件,确定挂载策略
  • 读取/etc/sysconfig/selinux文件,确定selinux状态
  • 加载系统时钟
模拟命令
 [root@Server ~]# rm -rf /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64
 [root@Server ~]# ls /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64
 ls: cannot access '/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64': No such file or directory
 [root@Server ~]# reboot
问题现象

哎,炸一看没什么问题

等它倒计时完了就有问题啦

解决问题

关机,确保光盘选项中的“启动时连接”是勾选上的,再在开机的一瞬间狂按esc,进入BIOS

手速菜的看下面操作

把光盘启动(CD-ROM Drive)加到第一即可,用“+/-”号移动,保存更改并退出F10(具体系统根据具体情况来操作)

接下来就是进入救援模式,选择部分和“磁盘引导”“进入系统救援模式”步骤一样;得到shell后执行下面命令

安装文件系统时是通过镜像安装的,所以资源在镜像中要挂载它才可以使用,把它挂载到软件仓库指向的那个目录,再通过rqm -qf /boot/来查看内核文件是从哪里来的

 chroot /mnt/sysroot
 mount /dev/cdrom /media/
 cd /media/BaseOS/Packages
 ls |grep kernel
 kernel-5.14.0-427.13.1.el9_4.x86_64.rpm     # 要用的是这个内核文件
 kernel-abi-stablelists-5.14.0-427.13.1.el9_4.noarch.rpm
 kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-core-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-modules-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-modules-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-tools-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm
 cp kernel-5.14.0-427.13.1.el9_4.x86_64.rpm /mnt/
 # 这b软件在 /media(挂载点)/BaseOS/Packages下,把它复制到/mnt下目录下,文件少,好操作
 cd /mnt/
 rmp2cpio kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm | cpio -id    # 用这个命令把它拆开
 ls
 hgfs  kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm  lib  usr
 cd lib/modules/5.14.0-427.13.1.el9_4.x86_64/
 ls
 config  modules.builtin  modules.builtin.modinfo  symvers.gz  System.map  vmlinuz
 cp vmlinuz /boot/vmlinuz-`uname -r`
 ls /boot        # 不放心可以ls /boot看一下有没有成功
 config-5.14.0-427.13.1.el9_4.x86_64
 efi
 grub2
 initramfs-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d.img
 initramfs-5.14.0-427.13.1.el9_4.x86_64.img
 initramfs-5.14.0-427.13.1.el9_4.x86_64kdump.img
 loader
 symvers-5.14.0-427.13.1.el9_4.x86_64.gz
 System.map-5.14.0-427.13.1.el9_4.x86_64
 vmlinuz-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d
 vmlinuz-5.14.0-427.13.1.el9_4.x86_64
 exit
 exit

退出后启动还是光盘启动,因为BIOS中,光盘启动优先级是最高的,把硬盘启动优先级调高就好了

系统初始化文件丢失

系统初始化作用

使用初始化环境开启系统所有开机启动服务

看初始化环境步骤如下

内核启动结束后开始读取“系统初始化镜像文件”(initramfs-5.14.0-427.13.1.el9_4.x86_64.img),用file命令查看是gzip文件,改后缀名为gz后用gunzip可以解开,里面的文件是初始化二进制程序,再用cpid -id 解开后会发现它和根下面的目录很相似。

 # 不知道是系统问题还是怎么样,我的不是gzip文件,是个可执行程序,看其他人现象把
 [root@Server ~]# file /boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img
 /boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img: ASCII cpio archive (SVR4 with no CRC)
 [root@Client ~]# cd /mnt/
 [root@Client mnt]# ls
 hgfs  initramfs-5.14.0-427.13.1.el9_4.x86_64.img
 [root@Client mnt]# mv initramfs-5.14.0-427.13.1.el9_4.x86_64.img initramfs-5.14.0-427.13.1.el9_4.x86_64
 [root@Client mnt]# cpio -id < initramfs-5.14.0-427.13.1.el9_4.x86_64
 79 blocks
 [root@Client mnt]# ls
 early_cpio  hgfs  initramfs-5.14.0-427.13.1.el9_4.x86_64  kernel
 [root@Client mnt]# tree /mnt/
 /mnt/
 ├── early_cpio
 ├── hgfs
 ├── initramfs-5.14.0-427.13.1.el9_4.x86_64
 └── kernel
     └── x86
         └── microcode
             └── AuthenticAMD.bin
 ​
 4 directories, 3 files

模拟命令
 rm -rf /boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img
问题现象
解决问题

问题现象和解决问题和“内核文件丢失”一样,先关机,开机进入BIOS,把光盘启动优先级调到最上面

得到shell后:

 chroot /mnt/sysroot
 mount /dev/cdrom /media/
 cd /media/BaseOS/Packages/
 ls |grep kernel
 kernel-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-abi-stablelists-5.14.0-427.13.1.el9_4.noarch.rpm
 kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm    # 是这个b文件
 kernel-debug-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-core-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-modules-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-debug-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-modules-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-modules-core-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-modules-extra-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-tools-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64.rpm
 kernel-uki-virt-5.14.0-427.13.1.el9_4.x86_64.rpm
 rpm -ivh kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm --force   # 强制安装
 ls /boot
 config-5.14.0-427.13.1.el9_4.x86_64
 efi
 grub2
 initramfs-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d.img
 initramfs-5.14.0-427.13.1.el9_4.x86_64.img      # 可以看到这个文件回来了
 initramfs-5.14.0-427.13.1.el9_4.x86_64kdump.img
 loader
 symvers-5.14.0-427.13.1.el9_4.x86_64.gz
 System.map-5.14.0-427.13.1.el9_4.x86_64
 vmlinuz-0-rescue-3890aef9b6a64543b93a31bfc8c60d0d
 vmlinuz-5.14.0-427.13.1.el9_4.x86_64
 exit
 exit

最后把硬盘启动优先级设置到最顶就好(高过光盘启动)

/boot丢失

模拟命令
 [root@Server ~]# rm -rf /boot/*
 [root@Server ~]# reboot
问题现象

解决问题

使用“内核文件丢失”方法得到shell

 chroot /mnt/sysroot
 grub2-install /dev/sda
 mount /dev/cdrom /media/
 cd /media/BaseOS/Packages/
 rpm -ivh kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm --force
 # 如果现象看到grub rescue> 则优先执行grub2-install /dev/sda,不然它报错打不开/boot/gurb2下的grubenv.new文件,但是也成功执行一部分了,最后也开得机可以正常使用,不知道有没有影响
 grub2-mkconfig > /boot/grub2/grub.cfg
 exit
 exit

最后把硬盘启动优先级设置到最顶就好(高过光盘启动)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • CentOS7.4下MySQL5.7.28二进制方式安装的方法步骤

    CentOS7.4下MySQL5.7.28二进制方式安装的方法步骤

    这篇文章主要介绍了CentOS7.4下MySQL5.7.28二进制方式安装的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Yum安装中出现错误mirrorlist.txt的解决方法

    Yum安装中出现错误mirrorlist.txt的解决方法

    前几天在使用Yum install命令安装软件的时候一直提示一个mirrorlist.txt错误,通过查找相关的资料现在找到了解决的方法,所以这篇文章就整理出来和大家分享一下,有同样遇到这个问题的朋友们可以参考借鉴下。
    2016-10-10
  • Apache中Virtual Host虚拟主机配置及rewrite参数说明

    Apache中Virtual Host虚拟主机配置及rewrite参数说明

    这篇文章主要介绍了Apache中Virtual Host虚拟主机配置及rewrite模块中的重要参数说明,是在同一个Apache服务器软件上部署多个站点的基础方法,需要的朋友可以参考下
    2016-03-03
  • centos7切换启动内核与切换启动模式的讲解

    centos7切换启动内核与切换启动模式的讲解

    今天小编就为大家分享一篇关于centos7切换启动内核与切换启动模式的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 在CentOS 7.2下安装Mono 5.0的方法教程

    在CentOS 7.2下安装Mono 5.0的方法教程

    这篇文章主要给大家分享了在CentOS 7.2下安装Mono 5.0的方法教程,文中介绍的非常详细,对大家学习安装Mono具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • FOXHIS西软系统sybase提示通知空间不足处理方法

    FOXHIS西软系统sybase提示通知空间不足处理方法

    各位酒店的电脑房经理有没有经历过在如下图这样的错误?有时候酒店的维护费没有到位或者时间急迫的时候我们需要自己的操作,操作步骤如下文所述
    2017-01-01
  • CentOS7.6系统下使用yum配置lnmp环境的方法

    CentOS7.6系统下使用yum配置lnmp环境的方法

    这篇文章主要介绍了CentOS7.6系统下使用yum配置lnmp环境的方法,需要的朋友可以参考下
    2018-12-12
  • Linux服务器安装GRUB步骤

    Linux服务器安装GRUB步骤

    在本篇文章中我们给大家整理了Linux服务器安装GRUB的详细步骤以及相关注意事项,有需要的朋友们参考下。
    2018-09-09
  • Xshell5连接虚拟机中的Linux的方法以及失败原因解决

    Xshell5连接虚拟机中的Linux的方法以及失败原因解决

    这篇文章主要介绍了Xshell5连接虚拟机中的Linux的方法以及失败原因解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • yum的repo文件详解、yum源的更换方式

    yum的repo文件详解、yum源的更换方式

    文章介绍了Fedora中的repo文件和yum.conf的配置,解释了如何修改repo文件以启用或禁用软件仓库,并检查GPG签名,还介绍了如何创建自己的私有yum仓库,包括使用命令生成关联关系文件,并提供了一个简单的操作流程
    2026-01-01

最新评论