使用DKMS 编译RAID卡驱动 并生成 Linux dd.iso 文件

一、测试背景和目的

随着硬件和OS的发展,一些新的RAID卡不支持安装老的操作系统。但有些客户可能需要在新的RAID卡上安装老的操作系统。此时需要编译RAID卡驱动,在安装操作系统时使用linux dd来手工加载RAID卡驱动。

二、测试环境

2.1 网络拓扑图

2.2 软硬件配置

|-------|----|---------------------|---------------------|
| 设备名字 | 数量 | 名称或用途 | 备注 |
| 虚拟机 | 1 | 用来编译,生成iso | 须跟要在物理服务器上安装的OS版本一致 |
| 物理服务器 | 1 | 用来验证是否可以手工加载Raid卡驱动 | RAID 卡 |
| | | | |

三、测试规划

四、测试人员和测试时间

本次测试由POC团队完成。

五、测试结果

在CentOS 7.3虚拟机里编译的 530 RAID卡驱动文件,在物理服务器上安装CentOS7.3 可以使用Linux dd 手工加载 530 RAID 驱动。

六、测试步骤、遇到问题和解决办法

6.1 测试步骤

6.1.1 环境准备

1:准备一台CentOS 7.3的虚拟机,需要安装make

安装make, kernel-hearders ,kernel-devel

kernel-headers, kernel-devel 版本与内核版本一致

2:安装dkms,如果有yum 源直接安装,如果没有,下载后安装。需要查看对应OS版本

3:下载RAID卡驱动,安装里面的***_src.rpm

安装raid卡 src rpm 包,会在当前目录生成一个 rpmbuild

root@centos7 \~\]# cd rpmbuild \[root@centos7 rpmbuild\]# pwd /root/rpmbuild \[root@centos7 rpmbuild\]# ls BUILD BUILDROOT RPMS SOURCES SPECS SRPMS 在SOURCES目录下有一个.bz2 的文件,用bzip2 -d 解压后,再用tar 解压 \[root@centos7 SOURCES\]# ls -l total 596 drwxr-xr-x. 2 root root 246 Sep 15 15:31 megaraid_sas-07.713.02.00 -rw-r--r--. 1 root root 604160 Feb 4 2020 megaraid_sas-07.713.02.00.tar -rw-r--r--. 1 root root 68 Feb 4 2020 megaraid_sas.conf \[root@centos7 SOURCES\]# pwd /root/rpmbuild/SOURCES cp megaraid_sas-07.713.02.00 /usr/src ![](https://file.jishuzhan.net/article/1734754679516041218/47a6d6323d4c0f35f72db81041575d5e.webp) ![](https://file.jishuzhan.net/article/1734754679516041218/f30cdb7afe38e2032ef7336fe44faf82.webp) #### **6.1.2 DKMS 编译并打包** 1、修改/usr/src/megaraid\* 目录下的dkms.conf \[root@centos7 megaraid_sas-07.713.02.00\]# cat dkms.conf # # Master copy of dkms.conf for megaraid_sas. # Dont edit this file manually. Auto build script makes necessary changes. # PACKAGE_NAME="megaraid_sas" PACKAGE_VERSION=07.713.02.00 MOD_PATH=${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION} MAKE\[0\]="make -C ${kernel_source_dir} SUBDIRS=${MOD_PATH}/build modules" CLEAN="make -C ${kernel_source_dir} SUBDIRS=${MOD_PATH}/build clean" BUILT_MODULE_NAME\[0\]="megaraid_sas" DEST_MODULE_LOCATION\[0\]="/kernel/drivers/scsi/megaraid/" MODULES_CONF_ALIAS_TYPE\[0\]="scsi_hostadapter" REMAKE_INITRD="yes" # # Patches # #PATCH\[0\]="rhel4.patch" #PATCH_MATCH\[0\]="2\\.6\\.9-\[\^11\]\*\\.EL" #PATCH\[1\]="sles9-sp1.patch" #PATCH_MATCH\[1\]="2\\.6\\.5-7\\.139" #PATCH\[2\]="sles9-sp2.patch" #PATCH_MATCH\[2\]="2\\.6\\.5-7\\.191" #PATCH\[3\]="rhel3-ga.patch" #PATCH_MATCH\[3\]="2\\.4\\.21-4\\.EL" #PATCH\[4\]="rhel3.patch" #PATCH_MATCH\[4\]="2\\.4\\.21-...\*\\.EL" PATCH\[20\]="rhel7.patch" PATCH_MATCH="3\\.10\\.0-514\\.\*" 版本号改成当前megaraid_sas 版本号,添加当前OS的kernel 版本,其余全部注释 2、将megaraid_sas 添加至dkms 树, ![](https://file.jishuzhan.net/article/1734754679516041218/4ae9f554f7524e1f3193b16cbbaab17a.webp) 会在/var/lib/dkms 生成module的名字,后期如果有问题,可以直接删除该目录 ![](https://file.jishuzhan.net/article/1734754679516041218/e8230700098f5e5a5becced44a64bdcb.webp) 3、build modules dkms build -m megaraid_sas -v 07.713.02.00 -k 3.10.0-514.el7.x86_64 -a x86_64 ![](https://file.jishuzhan.net/article/1734754679516041218/845cb429eba9a1652166d04a3a8d5987.webp) 4. install dkms install -m megaraid_sas -v 07.713.02.00 -k 3.10.0-514.el7.x86_64 -a x86_64 ![](https://file.jishuzhan.net/article/1734754679516041218/be5a9379994959d8d4c8e14febd62161.webp) 查看状态 ![](https://file.jishuzhan.net/article/1734754679516041218/2270feaa4c08486cc7e6590290e33ff6.webp) 安装完成后会在/var/lib/dkms/megaraid_sas/07.713.02.00/source目录下生成一些文件 5、打包成linux dd iso wenjian dkms mkdriverdisk -m megaraid_sas -v 07.713.02.00 -d redhat3 -k 3.10.0-514.el7.x86_64 -a x86_64 --media iso 创建linux dd iso ![](https://file.jishuzhan.net/article/1734754679516041218/d3b68c89839598fdea58c627297b5935.webp) 从上述目录下去取出iso 文件。 #### **6.1.3 在物理服务器上测试** 在物理服务器上使用该文件,通过linux dd 手工加载驱动。因为缺少物理服务器。此步骤由TSE Technical Support同事完成。 同事完成。 ## **七、 测试总结** 此测试时在CentOS7.3上针对530 RAID卡的编译,其余平台需要找对应的版本。

相关推荐
Estar.Lee8 分钟前
MySQL中外键约束详解 外键在表关系维护中的作用
运维·数据库·mysql·api·免费api
藥瓿亭1 小时前
K8S认证|CKS题库+答案| 11. AppArmor
运维·服务器·docker·云原生·容器·kubernetes·cks
胖大和尚1 小时前
Linuxkernel学习-deepseek-2
linux
we199898982 小时前
Linux:守护进程(进程组、会话和守护进程)
linux·运维·服务器
小鸡脚来咯2 小时前
RabbitMQ 各类交换机
服务器·网络·rabbitmq
无脑学c++2 小时前
在Ubuntu上使用 dd 工具制作U盘启动盘
linux·运维·ubuntu
Wooden-Flute2 小时前
八、数据库恢复技术
服务器·数据库·oracle
南棱笑笑生2 小时前
20250611在全志H3平台的Nano Pi NEO CORE开发板上运行Ubuntu Core16.04时让4G模块EC200A-CN使用AT命令拨号上网
linux·数据库·ubuntu
SimpleForest2 小时前
ubuntu 系统分区注意事项
linux·ubuntu·分区
小声读源码2 小时前
【排错】ubuntu挂载硬盘mount报错 unknown filesystem type ‘LVM2_member‘.
linux·运维·ubuntu