Building external kernel modules
Revision as of 21:13, 6 February 2016 by Kir (talk | contribs) (Kir moved page Building External Kernel Modules to Building external kernel modules)
This article describes how to build a kernel module which is not included into the stock Virtuozzo kernel.
(This article applies to Virtuozzo 7)
Building a kernel module (*.ko)
Here is an example how to build "via-rhine" kernel module which is in the Virtuozzo kernel source tree, but not enabled in kernel config by default.
// You need to install some dev packages in advance (the list here may be incomplete). # yum install rpm-build gcc xmlto asciidoc hmaccalc python-devel newt-devel pesign
// If you are going to build a kernel module against some kernel, you need kernel headers for that kernel. // Assume you want to build a kernel module against currently running kernel. # yum install vzkernel-devel.x86_64
// Get sources of the module you'd like to build, // in this particular example the easiest way i believe is just to download the kernel src.rpm. # cd /tmp # wget https://download.openvz.org/virtuozzo/factory/source/SRPMS/v/vzkernel-3.10.0-327.3.1.vz7.10.10.src.rpm # rpm -ihv vzkernel-3.10.0-327.3.1.vz7.10.10.src.rpm // "Prepare" source tree, it's not enough just to take the archive stored in it, // you need to apply additional patch(es), rpmbuild does this for us. # rpmbuild -bp /root/rpmbuild/SPECS/kernel.spec --nodeps
// Go to the module source directory. # cd /root/rpmbuild/BUILD/kernel-3.10.0-327.3.1.el7/linux-3.10.0-327.3.1.vz7.10.10/drivers/net/ethernet/via
// Edit the Makefile so you get the required kernel module compiled. // In this particular example the via-rhine compiles in-kernel by default, so we need to force it to be built as a module. # sed -ie 's/$(CONFIG_VIA_RHINE)/m/' Makefile
// Build and install the module. # make -C /lib/modules/`uname -r`/build M=$PWD # make -C /lib/modules/`uname -r`/build M=$PWD modules_install
// Check the module has been really copied and load it. # find /lib/modules -name \*rhine\* /lib/modules/3.10.0-327.3.1.vz7.10.10/extra/via-rhine.ko # modprobe via-rhine # lsmod |grep rhine via_rhine 32501 0 mii 13934 1 via_rhine
Here you are!
Note: Your case is a bit more complicated? Read Building External Modules |
Building a kernel module using Dynamic Kernel Module Support (DKMS)
TBD, you are welcome to put the description here. :)