系统定制安装遇到RAID卡无法安装的解决方案

简介:

场景说明

硬件:华为服务器携带RAID阵列卡

系统:RedHat6.5

   系统安装到服务器的硬盘上,启动提示无法找到系统盘,中断退出。其实这主要是内核没有添加megaraid驱动的关系,而且光盘上提供的initrd虚拟根文件系统,也没有将megaraid打包进initrd之中。所以在安装的过程中,由于无法识别RAID卡,导致找不到硬盘,无法加载系统进内存,启动失败。

知识储备

                   Linux内核源码实际上有各大厂商提供的支持的RAID驱动的源码,内核源代码目录linux-2.6.11\drivers\scsi\megaraid下是RAID卡驱动,Kconfig.megaraid记录支持RAID卡的种类详细信息。

             除了内核源码有RAID卡的驱动源码,在系统的/lib/module/`uname–r`/driver/scsi/目录下还有编译好的megaraid.ko驱动文件,这个时候如果使用dracut指令,通过添加RAID驱动到initrd,重新打包,就能够解决问题。

 

解决方案

系统环境:CentOS release 6.5 (Final)

内核版本:2.6.32-431.el6.x86_64

 

#dracut --add-driver megaraid.ko  /boot/initrd.img

将在/boot目录下创建一个名为initrd.img文件的通用initramfs.这包含了你当前运行内核当前加载的全部内核模块,目前生成的虚拟文件大小是45MB

 

详细操作

       环境:CentOS release 6.5 (Final)+ 2.6.32-431.23.3.el6.x86_64。服务器上的系统盘,通过raid卡,连接到主板上,现在需要将系统安装到系统盘上,所以必须要先加载raid驱动,然后才能够让系统识别系统盘上的文件系统,挂载真正的根文件系统。

 

方案提供:

方案1:将raid驱动编译进内核

方案2:将raid驱动添加进initrd.img

将通过方案2实现。

步骤一:正常情况下,启动异常提示:

WARNING:at arch/x86/kernel/smp.c 118native_smp_send_reschedule +0x5c10x68c

dracut warning : No root device"Block:/dev/mapper/live -rw"

kernel panic

注明:可以通过在菜单中添加rdshell,获取控制台进行分析问题

步骤二:拷贝其他系统中的megaraid文件中的驱动,然后在init中,手动加载,并且拷贝insmod命令

1)解压initrd.img文件

2)拷贝megaraid文件夹

3)通过ldd insmod搜索需要的动态库

4)编辑init文件,加载驱动

5)重新打包initrd.

错误异常:

insmod: error inserting 'megaraid.ko': -1Required key not available

排查:内核版本不一致:

2.6.32-431.el6.x86_64,导致加载驱动失败,必须匹配上编译内核的版本

 

步骤三:到相同版本的机器上拷贝/lib/module/'uname -r'/kernel/driver/scsi/megaraid/,重新执行步骤二

出现异常:

dracut warning : No root device"Block:/dev/mapper/live -rw"

kernel panic

总结:通过rdshell获取kernel panic之后的控制台,发现模块已经正确加载,但是无法发现系统盘设备,想起根文件系统需要加载fat驱动。

#cd /dev/disk

can not find /dev/disk directory #说明还是没有检测到磁盘设备

正常情况下会生成如下的目录:

/dev/disk:

by-label by-id by-uuid 对设备进行映射

 

步骤四:在其他已经安装系统的机器上,执行depmod -a建立驱动模块之间的依赖表,然后使用dracut指令通过添加raid驱动参数,重新生成一个initrd。替换到原来的initrd。启动成功

#depmod -a

说明:depmod 程序生成/lib/module/'uname -r'/modules.dep文件,记录下驱动模块之间的

依赖关系,同时也会针对当前的PCI等接口,生成map文件。这些文件为hotplug(热拔插)

设备检测程序提供了自动加载驱动的依据。

#dracut --add-driver megaraid.ko -v/initrd.img





     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1548238,如需转载请自行联系原作者


相关文章
|
数据可视化 大数据 物联网
【专访蓝景科技】5G+实时云渲染赋能数字孪生,共建元宇宙
而同时,近年来,数字孪生技术被认为是具有战略性、颠覆性、先导性的技术,其应用场景已深入到城市治理、智慧园区、工业制造、医疗健康等新型智慧城市建设的方方面面,随着“探索建设数字孪生城市”被写入“十四五”规划纲要中,数字孪生技术已成为是构建新型智慧城市的重要技术手段。元宇宙和数字孪生都是信息化发展到一定程度的必然结果,二者之间既有不同之处,又深度融合。
【专访蓝景科技】5G+实时云渲染赋能数字孪生,共建元宇宙
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
266936 0
|
安全 调度
什么是用户态和内核态?
【10月更文挑战第29天】用户态和内核态是操作系统中两个不同的运行级别和权限状态,它们相互配合,共同构成了操作系统的运行基础,为计算机系统的稳定运行和应用程序的高效执行提供了保障。
1657 31
|
5月前
|
机器学习/深度学习 算法 5G
【模型预测控制MPC】使用二次规划来模拟多输入多输出(MIMO)系统的模型预测控制(Matlab代码实现)
【模型预测控制MPC】使用二次规划来模拟多输入多输出(MIMO)系统的模型预测控制(Matlab代码实现)
289 4
|
Linux 数据库
Linux内核中的锁机制:保障并发操作的数据一致性####
【10月更文挑战第29天】 在多线程编程中,确保数据一致性和防止竞争条件是至关重要的。本文将深入探讨Linux操作系统中实现的几种关键锁机制,包括自旋锁、互斥锁和读写锁等。通过分析这些锁的设计原理和使用场景,帮助读者理解如何在实际应用中选择合适的锁机制以优化系统性能和稳定性。 ####
366 6
|
SQL Java 关系型数据库
JDBC详解
Java Database Connectivity(JDBC)是Java语言中用于访问关系型数据库的标准接口,定义了一组API,使Java程序能以统一方式连接、访问和操作不同关系型数据库,简化数据库操作,提高Java应用程序的可移植性和可维护性。使用JDBC进行数据库操作主要包括创建数据源对象、建立连接、构造和执行SQL语句及释放资源等步骤。此外,还可以使用Set系列方法设置值,并使用get系列方法获取查询结果。
1104 2
JDBC详解
|
存储 人工智能 关系型数据库
使用 PostgreSQL pgvector 的 AI 应用程序中的多模态搜索
大型语言模型(LLM)的发展已拓展至多模态领域,不仅能处理文本,还能解析图像。本文介绍如何构建一个多模态搜索应用,用户可通过上传图片或输入文本来搜索印度菜谱。该应用支持多种LLM服务,如OpenAI及Ollama本地部署模型,并运用pgvector扩展在PostgreSQL中高效存储和检索向量嵌入。我们还展示了如何生成菜谱描述的嵌入并向数据库写入这些嵌入,以及如何通过API接口结合文本和图像查询来获取最相关的菜谱结果。此外,讨论了使用分布式SQL数据库如YugabyteDB增强应用的可扩展性和健壮性。
571 1
|
分布式计算 Hadoop 调度
|
机器学习/深度学习 人工智能 自然语言处理
HaaS AI之VSCode中搭建Pytorch简单卷积神经网络
PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebook的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架如TensorFlow都不支持的。
HaaS AI之VSCode中搭建Pytorch简单卷积神经网络
|
SQL XML 测试技术
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(七)
基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(七)