Tip: Hacking tRAID Host to load on unsupported kernel

This tip is for advanced users only.
In order to run a stable supported installation, you must run tRAID on one of the supported kernel versions.
The tRAID host is compiled for specific kernel versions. See http://www.flexraid.com/download-try-buy-traid/#download-traid for the list of currently kernels.

We also recommend that you run tRAID on distributions that maintain a stable ABI (Application Binary Interface) such as RHEL/CentOS. Your data is important – and so, the stability of the ecosystem is a must.
This topic simply does not apply to users running RHEL/CentOS as they will never experience the issue being discussed here. Kudos for running true enterprise level distributions. 😉

This topic is mainly for users on distributions that don’t maintain a stable ABI. Ubuntu/Debian are such OSes.
ABI changes aren’t even an issue when it comes to tRAID. The issue is with the inability of the affected OSes to detect proper compatibility. If the ABI changes in any part of the system, all drivers are affected regardless of whether the actual changes affects them or not.

The Linux kernel is versioned as follow: w.xx.y-zzz (e.g., 4.10.0-40-generic)
Where:

  • w = Kernel Version => 4
  • xx = Major Revision => 10
  • y = Minor Revision => 0
  • zzz = Patch Revision => 40

On non-stable ABI distros, the drivers might load on 4.10.0-40-generic but might fail to load on 4.10.0-45-generic even though there is no actual code break.
The truth is, the parts where tRAID integrates into the kernel will simply never change between Patch Revisions or even Minor Revisions. However, affected OSes will change the version of their ABI regardless of what part might have changed during update releases. Once such change happens, the OS blindly refuses to load drivers with a mismatched ABI version (vermagic).

All in all, it is fairly safe to force load the tRAID drivers on differing Patch Revisions. That is, if a release of tRAID says it supports 4.10.0-XX-generic it will indeed work on any 4.10.0-XX-generic kernel (where XX is any value).

In order to force load the tRAID drivers on an affected system (if you truly cannot stick to a supported revisions), follow these steps:

  1. Stop the tRAID host service if it is running: sudo service traidhost stop
  2. Copy the tRAID drivers (frouter.ko and NZFSK.ko) from /opt/traid/host (or wherever you have the host installed) to /lib/modules/$(uname -r)
  3. Run sudo depmod -a
  4. Run sudo modprobe -f frouter.ko (must be loaded first)
  5. Run sudo modprobe -f NZFSK.ko
  6. Start the tRAID host service: sudo service traidhost start

Tip: you can automated the forced loading of the drivers on boot by creating a shell script file named insmod.sh and placing it in the tRAID host installation folder. Ensure that the shell script file is executable. The content of that file will simply be the modprobe commands.
Future releases will include a shell script file named custom.sh where users will be able to script custom startup executions.

Be Sociable, Share!

Revisions

No comments yet.

Leave a Reply