64
edits
Changes
Created page with "This article describes how to build an kernel module which is not included into the stock Virtuozzo kernel. (This article applies to Virtuozzo 7.) == Building a kernel module..."
This article describes how to build an 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 [https://www.kernel.org/doc/Documentation/kbuild/modules.txt Building External Modules]}}
== Building a kernel module using Dynamic Kernel Module Support (DKMS) ==
TBD, you are welcome to put the description here. :)
== Building a kernel module rpm package (kmod) ==
TBD, you are welcome to put the description here. :)
(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 [https://www.kernel.org/doc/Documentation/kbuild/modules.txt Building External Modules]}}
== Building a kernel module using Dynamic Kernel Module Support (DKMS) ==
TBD, you are welcome to put the description here. :)
== Building a kernel module rpm package (kmod) ==
TBD, you are welcome to put the description here. :)