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.