答案:定制Linux安装镜像,将驱动封装到ISO中
一张图了解Linux启动过程
其中Kernel步骤,也就是我们之前碰到驱动问题的关键点,我们可以通过系统内的kernel引导文件内容略知一二,以下截取部分作为说明:
Label linux menu label ^Install or upgrage menu default kernel vmlinuz append initrd=initrd.img
从上面的文字可以看出,先会加载kernel文件,然后再加载Ramdisk(initrd.img),由于kernel文件非常小,只还有系统启动基本的模块,并不包含大部分驱动文件,所以很多设备的驱动模块都会在initrd.img(Centos6.5等比较旧的系统中initrd.img可能不包含新的RAID卡和网卡驱动)中进行加载;
PS:initrd.img只会加载进内存(重启驱动后就丢失),所以本文后还有安装驱动到盘体的操作;
基本概念介绍就到此,那我们开始正文
-----感谢晋台分享
本文内容:
Linux 内核文件initrd加入RAID驱动重新编译封装和光盘、U盘Kickstart自动安装方法
适用场景:
由于引导内核文件RAID驱动老旧在安装Linux系统时发现找不到硬盘,需更新RAID驱动到内核文件并用Kickstart方式封装ISO,实现系统自动完成安装。
1.RAID驱动文件为自编译 .ko和RPM方式,更新RAID驱动到内核并重新打包内核。
2.RAID驱动文件为官方标准DD方式,更新RAID驱动到内核并重新打包内核。
3.RAID驱动文件为官方标准DD方式,利用Kickstart方式通过网络路径加载RAID驱动。
注意事项:
拷贝光盘文件时最好是带目录一起,这样会把所有的隐藏文件一起复置过来,不然在引导过程中会有问题。
挂载iso到指定目录并拷贝到相应目录:
mount –o loop Redhat.iso /media/cd cp –arf /media/cd /cd
一、RAID驱动文件为自编译 .ko和RPM方式打包驱动
准备工作:
∙对内核重新编译和封装最好是相应版本的系统里操作,这里使用虚拟机方式完成。
∙准备新RAID驱动
∙本次验证为Redhat6.5,KS自行准备
1、内核文件加入新RAID驱动并重新封装
在mount iso 目录中取得内核文件initrd.img并解开、删除原内核文件如下图例:
在解开内核文件目录中查找RAID存放路径,如下图例:
如下图例:查看内核文件中运行RAID驱动模块的版本,发现比较老旧。同理拷贝的新RAID驱动也可以用此命令查看。
驱动路径:
modules/2.6.32-431.el6.x86_64/kernel/drivers/scsi/megaraid/
如下图例:拷贝新RAID驱动文件到内核目录tmp/ 下和RAID驱动加载路径下
注:把R