# Kernel module compatibility



## trutlze (Jun 6, 2012)

I own a device that was provided with closed source drivers for FreeBSD 8.2. Meanwhile I run FreeBSD 9.0. When I try to load the driver I get

```
kldload: can't load DRIVER.so: Exec format error
```
and in /var/log/messages

```
kernel: link_elf: symbol __cxa_finalize undefined
```

Is it possible to run drivers for older kernels on newer kernels? Are the COMPAT kernel-options only for userland programs (ABI)?


----------



## expl (Jun 6, 2012)

You can load only dynamic kernel modules on the kernel version that they were compiled for, there is no other way. It*'*s possible to have some binary parts of it portable but it still needs to have an opensource wrapper to be compiled against your kernel.


----------



## kpa (Jun 6, 2012)

The ABI compatibility does not cover kernel modules, only userspace binaries. Even with minor version upgrades the old kernel modules have to be most likely recompiled.


----------



## trutlze (Jun 6, 2012)

Thank you! That's what I feared. :\


----------

