当前位置:首页>Linux>linux启动故障处理(can not load the kernel)

linux启动故障处理(can not load the kernel)

  • 2026-09-10 17:56:57
linux启动故障处理(can not load the kernel)

故障现象

linux主机OS无法正常启动,通过vnc连接后显示以下报错

  • error: file'/vmlinuz-xxxx' not found

  • you need to load the kernel first

  • can not load kernel

  • can not find file /vmxxx

故障原因

系统启动时通过配置文件grub.cfg查找内核相关文件并加载

若启动系统无法找到OS启动的内核文件,会出现上述错误

常见故障场景

  • 升级系统内核,未重新生成启动文件,并操作了重启
  • 误删了cfg启动指引文件

恢复方式

手动指定内核路径启动系统,重新生成启动文件

注:如果是误删了内核文件,无法通过本方式恢复

以centos7.6为例,不同的linux系统恢复思路差不多

进入grub命令行

  • 在故障界面按回车,可进入内核选项界面
  • 内核选项界面按c可进入grub命令行视图

也有可能系统起不来时,直接在grub命令行,继续后续步骤即可

查找系统盘

执行ls,查看当前硬盘列表

从第一个盘符(hd0),至最后一个(hd1),依次通过以下步骤(1-3)查找内核所在盘

1> 执行set root=(hdx,xx),其中x是代指,更改为实际盘符,如图中的(hd0)

2> 执行ls /,查看输出中是否有内核相关文件(如vmlixxx、initraxxxx的文件)。如果没有,重复步骤1、2

3> 正确的磁盘应当回显如下内容。如果全部磁盘都无正常回显,本方式不再适用

如图,推出系统盘应在(hd0,msdos1)

手动设置内核路径

  • 首先,找到一台正常的centos7.6机器,执行以下命令。记录红框信息
# 如果是UEFI启动
cat /boot/efi/EFI/centos/grub.cfg | grep linux

# 如果是BIOS启动
cat /boot/grub2/grub.cfg | grep linux

注:红框内的root=xxx,若写的是uuid。需要反向查询该主机的/目录挂载的磁盘路径并记录(通过lsblk -f找到uuid对应目录,root=<目录>)

  • 执行以下命令。记录红框信息
# 如果是UEFI启动
cat /boot/efi/EFI/centos/grub.cfg | grep initrd

# 如果是BIOS启动
cat /boot/grub2/grub.cfg | grep initrd
  • 登录故障主机,根据前文记录的信息,执行命令
# 按实际情况更改命令,不要照搬
# 示例为bios启动,如果是uefi,命令为linuxefi、initrdefi
linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root

initrd16 /initramfs-3.10.0-957.el7.x86_64.img

启动主机

  • 在grub命令行执行boot启动主机,若配置无误,可以正常加载系统

生成启动文件

正常开机后,执行以下命令,避免故障复现

# 如果是UEFI启动
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

# 如果是BIOS启动
grub2-mkconfig -o /boot/grub2/grub.cfg

最新文章

随机文章