使用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

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}

MAKE0="make -C {kernel_source_dir} SUBDIRS={MOD_PATH}/build modules"

CLEAN="make -C {kernel_source_dir} SUBDIRS={MOD_PATH}/build clean"

BUILT_MODULE_NAME0="megaraid_sas"

DEST_MODULE_LOCATION0="/kernel/drivers/scsi/megaraid/"

MODULES_CONF_ALIAS_TYPE0="scsi_hostadapter"

REMAKE_INITRD="yes"

Patches

#PATCH0="rhel4.patch"

#PATCH_MATCH0="2\.6\.9-\^11*\.EL"

#PATCH1="sles9-sp1.patch"

#PATCH_MATCH1="2\.6\.5-7\.139"

#PATCH2="sles9-sp2.patch"

#PATCH_MATCH2="2\.6\.5-7\.191"

#PATCH3="rhel3-ga.patch"

#PATCH_MATCH3="2\.4\.21-4\.EL"

#PATCH4="rhel3.patch"

#PATCH_MATCH4="2\.4\.21-...*\.EL"

PATCH20="rhel7.patch"

PATCH_MATCH="3\.10\.0-514\.*"

版本号改成当前megaraid_sas 版本号,添加当前OS的kernel 版本,其余全部注释

2、将megaraid_sas 添加至dkms 树,

会在/var/lib/dkms 生成module的名字,后期如果有问题,可以直接删除该目录

3、build modules

dkms build -m megaraid_sas -v 07.713.02.00 -k 3.10.0-514.el7.x86_64 -a x86_64

  1. install

dkms install -m megaraid_sas -v 07.713.02.00 -k 3.10.0-514.el7.x86_64 -a x86_64

查看状态

安装完成后会在/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

从上述目录下去取出iso 文件。

6.1.3 在物理服务器上测试

在物理服务器上使用该文件,通过linux dd 手工加载驱动。因为缺少物理服务器。此步骤由TSE Technical Support同事完成。

同事完成。

七、 测试总结

此测试时在CentOS7.3上针对530 RAID卡的编译,其余平台需要找对应的版本。

相关推荐
GeW12 小时前
超详细!RHCE10版通用备考策略,内含评分细则解读
linux
用户0413284651313 小时前
Linux 服务开机自启动怎么配置?systemctl enable 原理详解
linux
BreezeJiang20 小时前
从域名到 Node.js:一次云服务器请求经过了哪些层?
服务器
草莓熊Lotso1 天前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
张文君1 天前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
IT大白鼠1 天前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
贝锐1 天前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien20041 天前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
天远Date Lab1 天前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
2601_962074681 天前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器