系统环境:CentOS release 6.5 (Final)
内核版本:2.6.32-431.23.3.el6.x86_64
场景说明:服务器上的系统盘,通过raid卡,连接到主板上,现在需要将系统安装到系统盘上,所以必须要先加载raid驱动,然后才能够让系统识别系统盘上的文件系统,挂载真正的根文件系统。
以下是详细的过程分析:
方案1:将raid驱动编译进内核
方案2:将raid驱动添加进initrd.img
将通过方案2实现。
步骤一:正常情况下,启动异常提示:
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‘: -1 Required 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驱动。
步骤四:在其他已经安装系统的机器上,执行depmod -a, 建立驱动模块之间的依赖表,然后使用dracut指令重新生成一个initrd。替换到原来的initrd。启动成功
#depmod -a
#dracut -v /initrd.img