目录

raid的驱动安装流程大同小异

需要做的准备

起因

处理过程(需要联网,理论不联网也可以,博主暂未找到合适方式)

提取raid驱动源码和deb文件

方式一:提取raid驱动模块

方式二:编译raid驱动模块

开始安装ubuntu16.04.5系统

加载raid驱动模块到ubuntu安装内存中

安装raid驱动包到ubuntu系统中

重启服务器

结束语


raid的驱动安装流程大同小异

需要做的准备

  1. 服务器可以上网
  2. 准备一台相同系统版本的服务器编译源码

 

起因

有个客户买了我们的服务器,非同以往的配了一个少见的raid卡:avago  megaraid-9460-16i

售后反馈说ubuntu16.04.5的server版安装系统时无法找到磁盘,desktop版却可以正常安装进入系统。没理由哈,难道ubuntu同一版本的server和desktop内核版本不相同么

ubuntu bios raid卡管理界面 ubuntu raid驱动_驱动模块

ps 这台服务器的磁盘在raid上,也就是说无法识别到raid。同一个客户,已经是第二次发生无法识别raid,不过上一次的服务器是华为的,有理可说,这一次却是自己出厂那个的服务器,着实打脸。

本着不相信的态度去了现场,走了一遍ubuntu-server版,果然是server无法识别到raid,又对比了下ubuntu16.04.5 desktop(4.15)和server(4.4)的内核版本,的确不一样。

活久见,先处理眼前的吧。

处理过程(需要联网,理论不联网也可以,博主暂未找到合适方式)

提取raid驱动源码和deb文件

根据系统版本(我的是ubuntu,所以选择ubuntu)提取出主要的两个文件:

deb文件:megaraid_sas-07.713.02.00-1dkms.noarch.deb  (对应下图路径ubuntu\rpms-1\)

驱动源码:megaraid_sas-07.713.02.00-src.tar.gz

ubuntu bios raid卡管理界面 ubuntu raid驱动_megaraid-9460_02

将这两个文件放入已经制作好的ubuntu 16.04.5-server系统盘的doc目录中,另外准备一份 你的系统的sources.list文件,之后会install  软件,默认源太慢,建议换一个,我用的阿里源。

共三个文件,列表如下(install目录是系统盘原有的):

ubuntu bios raid卡管理界面 ubuntu raid驱动_驱动模块_03

方式一:提取raid驱动模块

在相同的ubuntu 内核版本中安装megaraid_sas-07.713.02.00-1dkms.noarch.deb 

安装前需要先安装dkms,由于dkms需要patch依赖,建议联网安装

# apt-get install dkms
# dpkg  -i megaraid_sas-07.713.02.00-1dkms.noarch.deb 
(正在读取数据库 ... 系统当前共安装有 353228 个文件和目录。)
正准备解包 megaraid_sas-07.713.02.00-1dkms.noarch.deb  ...

Uninstall of megaraidsas module (version 07.713.02.00) beginning:
正在将 megaraid-sas (07.713.02.00-1dkms) 解包到 (07.713.02.00-1dkms) 上 ...
正在设置 megaraid-sas (07.713.02.00-1dkms) ...

Creating symlink /var/lib/dkms/megaraid_sas/07.713.02.00/source ->
                 /usr/src/megaraid_sas-07.713.02.00

DKMS: add completed.

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area....
make KERNELRELEASE=4.4.0-177-generic -C /lib/modules/4.4.0-177-generic/build M=/var/lib/dkms/megaraid_sas/07.713.02.00/build modules......
cleaning build area....

DKMS: build completed.

megaraid_sas:
Running module version sanity check.
 - Original module
 - Installation
   - Installing to /lib/modules/4.4.0-177-generic/updates/dkms/

/etc/modprobe.d/dkms.conf: added alias reference for 'megaraid_sas'
depmod........

Backing up initrd.img-4.4.0-177-generic to /boot/initrd.img-4.4.0-177-generic.old-dkms
Making new initrd.img-4.4.0-177-generic
(If next boot fails, revert to initrd.img-4.4.0-177-generic.old-dkms image)
update-initramfs....

DKMS: install completed.
正在处理用于 initramfs-tools (0.122ubuntu8.14) 的触发器 ...
update-initramfs: Generating /boot/initrd.img-4.4.0-177-generic

安装完成后,查看驱动输出目录是否存在ko文件

# ls -l /lib/modules/$(uname -r)/updates/dkms/      
总用量 252
-rw-r--r-- 1 root root 256528 12月  9 10:26 megaraid_sas.ko

将编译的驱动模块拷贝到ubuntu系统盘的doc路径下,此时doc路径下应该会有以下文件

ubuntu bios raid卡管理界面 ubuntu raid驱动_raid驱动_04

方式二:编译raid驱动模块

博主愚钝,现场实施的时候没考虑到方式一

将源码压缩包megaraid_sas-07.713.02.00-src.tar.gz上传到另一台系统内核相同的环境中,解压后进入该目录,可以看到目录下有compile.sh文件

ubuntu bios raid卡管理界面 ubuntu raid驱动_raid驱动_05

执行compile.sh,执行前再次确认系统内核是否和现场需要的版本相同。

ubuntu bios raid卡管理界面 ubuntu raid驱动_raid驱动_06

将编译的驱动模块拷贝到ubuntu系统盘的doc路径下,此时doc路径下应该会有以下文件

ubuntu bios raid卡管理界面 ubuntu raid驱动_raid驱动_04

开始安装ubuntu16.04.5系统

将系统盘插入服务器,开机进入ubuntu安装界面,进行到检测不到磁盘时

ubuntu bios raid卡管理界面 ubuntu raid驱动_驱动模块

执行 ctrl+alt+f2,或者按esc退回到上一级,然后选择 execute a shell

ubuntu bios raid卡管理界面 ubuntu raid驱动_驱动模块_09

加载raid驱动模块到ubuntu安装内存中

进入shell后,进入到cdrom目录,再进入到doc目录,查看是否存在驱动文件(若没有找到准备的ko文件,就拷贝另一个U盘插入到服务器上,挂载U盘,找到准备好的那些文件),执行以下命令:

将doc目录下的文件全部复制到/target/root/目录下,然后进入/target/root目录下执行

# modprobe   scsi_transport_sas
# modprobe   raid_class
# modprobe   configfs
# insmod   megarai_sas.ko

执行完成后,输入exit返回图形安装界面,选择detect disks,正常情况可以识别到硬盘了

ubuntu bios raid卡管理界面 ubuntu raid驱动_raid驱动_10

如往常安装ubuntu一样,继续安装下去,直到出现“finish  the installation”,按ctrl+alt+f2进入命令行

ubuntu bios raid卡管理界面 ubuntu raid驱动_服务器_11

安装raid驱动包到ubuntu系统中

进入命令行后输入

ubuntu bios raid卡管理界面 ubuntu raid驱动_megaraid-9460_12

上图中命令如下:
# chroot  /target
# bash
# cd /root

ubuntu bios raid卡管理界面 ubuntu raid驱动_ubuntu_13

上图中命令如下:
# mv sources.list  /etc/apt/sources.list
# apt-get update

ubuntu bios raid卡管理界面 ubuntu raid驱动_ubuntu_14

ubuntu bios raid卡管理界面 ubuntu raid驱动_ubuntu_15

ubuntu bios raid卡管理界面 ubuntu raid驱动_驱动模块_16

上三张图 图中命令如下:
# apt-get install -y dkms
# dpkg -i megaraid_sas-07.713.02.00-1dkms.noarch.deb

重启服务器

确保上面命令行中的命令成功执行,缺少什么包安装什么包;

执行完成后,按ctrl+alt+f1回到图形界面。回车继续。重启后应该就可以正常进入系统了。

结束语

这方面经验不多,网络资源也难找,流程以供大家参考,有问题留言交流。