Adding Areca storage controller drivers to RHEL 9 based Linux

Adding an Areca ARC-188x series PCIe 2.0/3.0 to SAS/SATA 6/12Gb RAID Controller to a server involved installing the arcmsr driver to the existing CentOS 9 based Linux OS.

This install from source from the vendor was required because the package install for kmod-acrmsr failed with an error:

nothing provides kernel(_dev_info) = 0x749cbadd needed by kmod-arcmsr-1.50.00.05-20210429.12.el9_8.elrepo.x86_64 from elrepo

Steps to obtain build and install the arcmsr driver were:

a) Determine the driver to download it and download it to /usr/local/src/
Use the output of “lspci | grep Areca” to identify the card’s model # (“ARC-188x” in this case) and download the relevant zip file from https://www.areca.us/products/_driver_raidcard_1110.html#linux
In our case we downloaded the RHEL 9.4 based zip file and got a file named 9_4.zip from the Areca site, which we extracted to /usr/local/src/areca-download-rhel9_4/


b) In the /usr/local/src/areca-download-rhel9_4/ directory, create a new directory for the extracted contents of the arcmsr-1.51.0X.16-20231226.zip file:

mkdir arcmsr-1.51.0X.16-20231226 && cd arcmsr-1.51.0X.16-20231226 && unzip ../arcmsr-1.51.0X.16-20231226.zip

c) In your extracted arcmsr-1.51.0X.16-20231226/ directory, we need to apply some patches to the arcmsr.c file for modern RHEL 9 based kernels eg: from 5.14.0-6xx onwards kernel levels

The diff output of the patching required to arcmsr.c is:

201,202d200
< #include
< #include
1284c1282

< nvec = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_INTX);

> nvec = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY);

ACB *pacb = from_timer(pacb, t, refresh_timer);

nvec = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY);

4614c4612

< ACB *acb = container_of(t, ACB, eternal_timer);

ACB *acb = from_timer(acb, t, eternal_timer);

5317c5315

< ACB *pacb = container_of(t, ACB, refresh_timer);

d) Now you can begin the DKMS Add, Build, Install process with:

Create dkms.conf file:


cat << EOF > dkms.conf
PACKAGE_NAME=”arcmsr”
PACKAGE_VERSION=”1.51.00.16″
BUILT_MODULE_NAME[0]=”arcmsr”
DEST_MODULE_LOCATION[0]=”/kernel/drivers/scsi/”
AUTOINSTALL=”yes”
EOF




Setup DKMS source directory:

mkdir /usr/src/arcmsr-1.51.00.16/
cp /usr/local/src/areca-download-rhel9_4/arcmsr-1.51.0x.16-20231226/* /usr/src/arcmsr-1.51.00.16/

Run the DKMS commands to build and install the kernel module:


dkms add -m arcmsr -v 1.51.00.16

dkms build -m arcmsr -v 1.51.00.16 ## if needed: -k `uname -r`

dkms install -m arcmsr -v 1.51.00.16

Check with: dkms status

Reboot to confirm.

This entry was posted in Sales. Bookmark the permalink.

Leave a Reply