Centos 内核更新后缺少initramfs 导致无法启动

简介: Centos 内核更新后缺少initramfs 导致无法启动


表现和缺少驱动表现类似, 提示无法挂载根分区,判断是initramfs缺少驱动,登录查是initramfs 不存在。  

使用旧内核或者修复盘引导启动并chroot


方法一:重新安装内核

使用yum reinstall kernel 发现在配置内核时出现错误,错误信息如下图,可以从下图中看到

在向/var/tmp  创建临时文件时出错, lsattr /var/tmp 发现有 i 权限,去掉后重新安装内核完成安装


如果cat /boot/grub2/grub.cfg |grep menuentry

看不到最新内核,执行

grub2-mkconfig -o /boot/grub2/grub.cfg 更新一下grub.cfg


注意: /tmp 目录不存在也可能导致内核安装出错,有用户将/tmp 删除掉软链到了数据盘的挂载点下,LiveCD修复内核找不到/tmp目录导致安装出错。

方法二:手工生成initramfs文件


mount /dev/vda1 /mnt     # 需要根据实际修改,目前存在的uefi启动的镜像,其根分区和boot分区不是一个for i in sys proc dev;do mount --bind /$i /mnt/$i;done
chroot /mnt
# --- 旧内核启动忽略上面部分 --- #cd /boot 
mkinitrd -f--allow-missing \
--with=xen-blkfront --preload=xen-blkfront \
--with=virtio_blk --preload=virtio_blk \
--with=virtio_pci --preload=virtio_pci \
--with=virtio_console --preload=virtio_console \
$target_initrd$vmlinuz# $target_initrd 要进行替换实际的initramfs文件名 $vmlinuz 替换为对应内核版本

注意:mkinitrd 并非都能成功,但是如无严重错误可以尝试重启是否解决,若无任何返回表明正常

下面是一个修复案例:

rpm 安装指定版本的内核,但是initramfs (4.19.12-1.el7.x86_64)不存在,导致重启未能正常启动,使用旧内核启动, 修复盘模式下 mkinitrd 提示 missing module.dep

# --- 使用旧内核启动 --- #depmod -a4.19.12-1.el7.elrepo.x86_64   #解决missing module.dep问题,缺少mkinitrd会出错cd /boot
mkinitrd -f--allow-missing \
--with=xen-blkfront --preload=xen-blkfront \
--with=virtio_blk --preload=virtio_blk \
--with=virtio_pci --preload=virtio_pci \
--with=virtio_console --preload=virtio_console \
initramfs-4.19.12-1.el7.elrepo.x86_64.img  4.19.12-1.el7.elrepo.x86_64 
cd /boot/grub2
grub2-mkconfig -o grub.cfg

参考文档

Kernel panic with error "FATAL: Could not load modules.dep no such file or directory" on RSA NetWitness

https://community.netwitness.com/t5/netwitness-knowledge-base/kernel-panic-with-error-quot-fatal-could-not-load-modules-dep-no/ta-p/677145/redirect_from_archived_page/true

相关文章
|
8月前
|
安全 Linux
Centos 7.x 升级内核
千万不要小瞧这操作。
190 0
|
2月前
|
Kubernetes 监控 Linux
容器服务ACK常见问题之新增一台CentOS 5.4内核的节点失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
9月前
|
安全 Linux 虚拟化
【Centos7系统内核如何更换?为什么需要更新内核?】
在CentOS 7系统中,内核是非常重要的一部分。它是操作系统的核心,负责管理系统的硬件资源和提供各种系统服务。
144 0
|
7月前
|
Linux 编译器 C语言
百度搜索:蓝易云【Linux系统:CentOS编译Linux内核教程!】
请注意,以上步骤仅提供了一个基本的编译内核的概述。实际的编译过程可能因系统配置、内核版本等因素而有所差异。建议参考Linux内核官方文档和其他可靠资源,以获取更详细和特定于你的系统的指导。在进行任何内核操作之前,请务必备份你的系统数据并了解相关风险。
172 2
百度搜索:蓝易云【Linux系统:CentOS编译Linux内核教程!】
|
8月前
|
Linux C语言
实验:CentOS 7 编译安装最新版内核 Linux Kernel 6.5.2
CentOS 7 编译安装最新版内核 Linux Kernel 6.5.2
469 0
|
11月前
|
Linux
Centos更新升级内核命令-以及区别.
建议在部署环境前使用命令升级,不建议在部署完业务后升级,可能会出现一些意想不到的问题!
491 0
|
Linux
CENTOS升级内核
CENTOS升级内核
117 0
|
Linux 开发工具
如何在 centos 7 中修改内核启动顺序
CentOS 7是CentOS项目发布的开源类服务器操作系统,于2014年7月7日正式发布。对于Centos 7 grub 配置有改变,如何修改?
如何在 centos 7 中修改内核启动顺序
|
Linux
CentOS 7 下编译安装 4.14 内核
CentOS 7 下编译安装 4.14 内核
311 1
CentOS 7 下编译安装 4.14 内核
|
2天前
|
前端开发 jenkins 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
13 1