loading RAID controller drivers to clone boot disk to RAID1 array

Hi,

I’ve a Highpoint RocketRAID controller installed for which the driver (rr26xx.ko) was compiled from sources provided by Highpoint. An OpenSUSE 13.1 install with the module installed (done by make install) allows to RAID array to be seen.

Now I’d like to clone the boot drive with that OpenSUSE install to the RAID1 array.

I’ve tried to use CloneZilla but it doesn’t have the drivers for the RAID controller, Highpoint doesn’t have any “ready-made” drivers and it looks like I’d need to compile the drivers on Debian and then attempt to load the driver with or without modifying the live filesystem. Never done that before and looks somewhat complicated.

So I was thinking of using the OpenSUSE Rescue mode of the installer USB to dd the partitions of the boot drive to the RAID volume. Failing to do that I’d even go as far as reinstalling on the RAID array. However I don’t manage to load the RAID controller driver in the OpenSUSE installer.

  • from the graphical boot menu attempting to load drivers doesn’t seem to work (or I’m doing it wrong)
  • using the rescue mode insmod tells me “invalid module format”

Is there an install script of sorts required to load this module? It works just fine when adding it to an existing OpenSUSE 13.1 install so the .ko itself should be good. Barring other and better suggestions on how to move the boot and root partitions to the RAID volume I’d be keen on finding out how to load the required module into the installer. Thanks!

See this link how to build Driver Update Disk for use with installer: SDB:Linuxrc - openSUSE Wiki

  • using the rescue mode insmod tells me “invalid module format”

You need to build module for exact kernel version used by installer. At least i386 is using kernel-default while normal installation is using kernel-desktop or kernel-pae (not sure). Same is likely for x86_64. Also kernel used by installer is the very first version released and at this point you may already have update.

Thanks for your reply, arvidjaar.

The Rescue mode is using kernel 3.11.6-4-default (whereas the actual installed system is on kernel 3.11.10.7-desktop). Not sure how to find out what kernel the installer is using though.

I’m not very familiar with the build process and need to figure out how to compile the driver against that specific kernel.

Here’s what I’ve done so far

  1. I found the actual kernel 3.11.6-4-desktop in /lib but not in the matching sources in /usr/src. So I went to YaST, searched for kernel-source and clicked Downgrade on 3.11.6-4.1.noarch under Versions, then Applied the changes.

  2. Looking at the Makefile.def referred to by the Makefile that comes with the driver sources I found

ifndef KERNELDIR
KERNELDIR := /lib/modules/$(shell uname -r)/build
endif

In /lib/modules/3.11.6-4-desktop there was no build/, which looking at the 3.11.10-7-desktop/ is a symlink to /usr/src/linux-3.11.10-7-obj/x86_64/desktop. There was no similar directory for 3.11.6-4.1. So I figured I must have missed something and

  1. installed packages kernel-default-devel, kernel-desktop-devel and kernel-devel for 3.11.6-4.1, which provided the missing directories and symlinks. I understand those would be the kernel headers.

  2. Then modified above KERNELDIR parameter to KERNELDIR := /lib/modules/3.11.6-4-default/build and ran make, which seemingly compiles the kernel module properly for 3.11.6-4-default. Next I ran the same with KERNELDIR for 3.11.6-4-desktop.

I made the driver update disk (dud) directory structure as per the documentation, without pre or post install scripts as I understand these are optional. The directory structure looks as follows:

|---linux
    |---suse
        |---x86_64-13.1
            |---dud.config
            |---install
                |---update.tar.gz
                    contains
                    |---lib
                        |---modules
                            |---3.11.6-4-default
                                |---kernel
                                    |---drivers
                                        |---scsi
                                            |---rr26xx.ko
                            |---3.11.6-4-desktop                            
                                |---kernel
                                    |---drivers
                                        |---scsi
                                            |---rr26xx.ko
            |---modules
                |---rr26xx.ko

The rr26xx.ko under modules is the 3.11.6-4-default one, I understand this needs to be the module for the kernel version used by the installer, which at this point I’m guessing at.

I will try this tomorrow but in the meantime if there’s any feedback on oversights on my part that would be greatly appreciated. Thanks!

Got around to trying this out on another machine (that doesn’t have the RAID controller installed) and it looks to be working. insmod in Rescue mode now complains that there is no such device and the installer is picking up the USB flash drive as a Driver Update Disk. Thanks for helping me out!