Home brew NAS: RocketRaid 622 on Ubuntu

All parts are here, time to do some work.

My main goal was small initial cost as well as small footprint if at all possible. I got myself old Dell GX280 desktop with P4 2.8 GHz processor and 1 GB RAM. It has “relatively” new technology onboard including one PCI Express port in which I was able to insert controller card.

The enclosure itself is highly apprised all aver the Internet Sans Digital Tower Raid that can house up to 5 drives. As you can see both are rather small and do not take too much space on/under my desk:

Now onto the setup.

As my server is supposed to serve multiple purposes, including driving my hvac system, I quickly dropped the idea of using one of dedicated NAS distributions (FreeNAS namely) and decided to stay with old mighty Ubuntu 10.04LTS. The installation went smooth and within minutes I had the server running.

But there was nowhere to find my drive inserted into external enclosure. It turns out that the controller provided by Sans Digital is built on HighPoint Technologies’ 622 chip which itself is not supported by Linux Kernel. Thankfully Sans Digital provides source codes for drivers in both RAID and passthrough versions. I’ve chosen the passthrough version as I plan to skip hardware raid provided by the enclosure and use zfs.

First some additional software needed to be installed:

sudo apt-get install dkms

Then we’ll get some sources:

wget http://dl.sansdigital.com/images/downloads/TR8M-BP_TR8MP/Non_RAID_Driver_Linux-SourceCode-v1.0-100421-1320.tar.zip
unzip Non_RAID_Driver_Linux-SourceCode-v1.0-100421-1320.tar.zip
tar -xzf rr62x-linuxla-src-v1.0-100421-1320.tar.gz
cd rr62x-linuxla-src-v1.0/

We are going to use dkms so dkms.conf file needs to be created:

vi dkms.conf

MAKE=”make -C product/rr62x/linuxla/”
CLEAN=”make -C product/rr62x/linuxla/ clean”
BUILT_MODULE_NAME=rr62x
DEST_MODULE_LOCATION=/kernel/drivers/scsi/
BUILT_MODULE_LOCATION=product/rr62x/linuxla/
PACKAGE_NAME=rr62xla
PACKAGE_VERSION=1.O
AUTOINSTALL=yes
REMAKE_INITRD=yes

Now the source neds to be moved into /usr/src folder:

sudo cp -R . /usr/src/rr62xla-1.0

And some dkms magic applied:

sudo dkms add -m rr62xla -v 1.0
sudo dkms build -m rr62xla -v 1.0
sudo dkms install -m rr62xla -v 1.0

Mere seconds later I was able to load the module:

modprobe rr62x

and see this in syslog:

[ 260.187351] rr62x: module license ‘Proprietary’ taints kernel.
[ 260.187357] Disabling lock debugging due to kernel taint
[ 260.190622] rr62x:RocketRAID 62x SATA controller driver Non-RAID v1.0 (Feb 20 2011 11:26:43)
[ 260.190678] pci 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 260.190689] pci 0000:01:00.0: setting latency timer to 64
[ 260.190727] rr62x:adapter at PCI 1:0:0, IRQ 16
[ 260.196263] rr62x:[0 0 ] start port.
[ 260.196263] rr62x:[0 0 ] start port hard reset (probe 1).
[ 260.196263] rr62x:[0 1 ] start port.
[ 260.196263] rr62x:[0 1 ] start port hard reset (probe 1).
[ 263.808262] rr62x:[0 1 ] start port soft reset (probe 1).
[ 264.456614] rr62x:[0 1 ] pmp attached: vendor 1095 device 3726.
[ 268.104271] rr62x:[0 0 ] failed to hard reset.
[ 268.104286] rr62x:[0 0 ] failed to perform port hard reset.
[ 269.709009] rr62x:[0 1 4] start device soft reset.
[ 270.360323] rr62x:[0 1 ] port started successfully.
[ 270.360323] rr62x:[0 1 4] device probed successfully.
[ 270.396411] scsi4 : rr62x
[ 270.399912] scsi 4:0:9:0: Direct-Access ATA SAMSUNG HD103SI 1AG0 PQ: 0 ANSI: 5
[ 270.401625] sd 4:0:9:0: Attached scsi generic sg2 type 0
[ 270.402425] sd 4:0:9:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
[ 270.402513] sd 4:0:9:0: [sdb] Write Protect is off
[ 270.402520] sd 4:0:9:0: [sdb] Mode Sense: 2f 00 00 00
[ 270.402565] sd 4:0:9:0: [sdb] Write cache: disabled, read cache: enabled, doesn’t support DPO or FUA
[ 270.402907] sdb: sdb1
[ 270.419594] sd 4:0:9:0: [sdb] Attached SCSI disk

So far so good. All pieces of hardware accounted for and work well.

Now we just have to make sure it will load the module at boot time:

sudo echo rr62x >> /etc/initramfs-tools/modules
sudo update-initramfs -u

And we are set for now.

Referrals:
1. Ubuntu forums.

2 thoughts on “Home brew NAS: RocketRaid 622 on Ubuntu”

  1. Hi, Thank you for posting your steps and results. I had a different result for the ‘sudo dkms build -m rr62xla -v 1.0′ step. Do you mind sharing your insight?

    console:
    DKMS: add Completed.
    michael@SVR:~/hp_rr_622/rr62x-linuxla-src-v1.0$ sudo dkms build -m rr62xla -v 1.0

    Kernel preparation unnecessary for this kernel. Skipping…

    Building module:
    cleaning build area….(bad exit status: 2)
    make KERNELRELEASE=2.6.32-41-generic-pae -C /lib/modules/2.6.32-41-generic-pae/build M=/var/lib/dkms/rr62xla/1.0/build….(bad exit status: 2)

    Error! Bad return status for module build on kernel: 2.6.32-41-generic-pae (i686)
    Consult the make.log in the build directory
    /var/lib/dkms/rr62xla/1.0/build/ for more information.
    0
    0
    ERROR: binary package for rr62xla: 1.0 not found
    michael@SVR:~/hp_rr_622/rr62x-linuxla-src-v1.0$

    make.log:
    DKMS make.log for rr62xla-1.0 for kernel 2.6.32-41-generic-pae (i686)
    Sun Apr 29 13:45:05 CDT 2012
    make: Entering directory `/usr/src/linux-headers-2.6.32-41-generic-pae’
    scripts/Makefile.build:44: /var/lib/dkms/rr62xla/1.0/build/Makefile: No such file or directory
    make[1]: *** No rule to make target `/var/lib/dkms/rr62xla/1.0/build/Makefile’. Stop.
    make: *** [_module_/var/lib/dkms/rr62xla/1.0/build] Error 2
    make: Leaving directory `/usr/src/linux-headers-2.6.32-41-generic-pae’

  2. The error above will occur if you copy/paste the contents of the dkms.conf from this page. The quote characters are UTF, not plain ASCII. That will mess up the build command. Fix the quote characters and all should be good.

Leave a Reply

Your email address will not be published. Required fields are marked *