Reputation: 4878
Until now, When I compiled my kernel module, I installed: kernel-devel, kernel-headers.
Later on, I had to include kernel sources.
So now the packages I install in order to compile my kernel module are: kernel-devel, kernel-headers and kernel.src.rpm (kernel source).
Im in the process of creating a "build machine" that will check for Available latest kernel, download necessary packages and compile the kernel module for that kernel.
I dont want to install the package, just to download it, and copy the files to their location (download kernel.src.rpm, rpm2cpio, cpio, and copy to /lib/modules/kernel-X-Y/)
I noticed that if kernel src is installed, there is not need for kernel-headers.
kernel-devel is needed ??, I am not sure it is, when trying to install without kernel-devel, I get the following exception:
make[2]: Entering directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.
WARNING: Symbol version dump ./Module.symvers
is missing; modules will have no dependencies and modversions.
What am I missing ? If i install kernel-devel, then i dont get this exception, I dont want to install kernel-devel.
Upvotes: 0
Views: 1578
Reputation: 22372
Before you can run make
to compile the kernel you need to run make oldconfig
or copy a .config file over into the build tree. make oldconfig
will then use the .config and update it to the newer kernel.
You also have other options:
a simple make help | grep -i config
in the kernel source directory shows:
Configuration targets:
config - Update current config utilising a line-oriented program
nconfig - Update current config utilising a ncurses menu based
menuconfig - Update current config utilising a menu based program
xconfig - Update current config utilising a Qt based front-end
gconfig - Update current config utilising a GTK+ based front-end
oldconfig - Update current config utilising a provided .config as base
localmodconfig - Update current config disabling modules not loaded
localyesconfig - Update current config converting local mods to core
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
defconfig - New config with default from ARCH supplied defconfig
savedefconfig - Save current config as ./defconfig (minimal config)
allnoconfig - New config where all options are answered with no
allyesconfig - New config where all options are accepted with yes
allmodconfig - New config selecting modules when possible
alldefconfig - New config with all symbols set to default
randconfig - New config with random answer to all options
listnewconfig - List new options
olddefconfig - Same as silentoldconfig but sets new symbols to their
kvmconfig - Enable additional options for kvm guest kernel support
xenconfig - Enable additional options for xen dom0 and guest kernel support
tinyconfig - Configure the tiniest possible kernel
kselftest-merge - Merge all the config dependencies of kselftest to existing
.config.
configuration. This is e.g. useful to build with nit-picking config.
i386_defconfig - Build for i386
x86_64_defconfig - Build for x86_64
make O=dir [targets] Locate all output files in "dir", including .config
Upvotes: 4