I was compiling and building simple kernel module on linux
following is my Makefile
obj-m := hello-1.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.o *.ko *.mod.* *.symvers *.order
when I run make command against the makefile I get error that mkmakefile missing
make[1]: Entering directory '/usr/src/linux-headers-5.9.0-kali2-amd64'
sh: 0: cannot open /usr/src/linux-headers-5.9.0-kali2-common/scripts/mkmakefile: No such file make[3]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:552: outputmakefile] Error 2 /usr/src/linux-headers-5.9.0-kali2-common/Makefile:691: include/config/auto.conf.cmd: No such file or directory make[2]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:710: include/config/auto.conf.cmd] Error 2 make[1]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:185: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-5.9.0-kali2-amd64'
enter code here
make: *** [Makefile:6: default] Error 2
the from this page https://forums.kali.org/showthread.php?46712-Kali-2020-1-VMWARE-installing-Alfa-AWUS036ACM
i changed my make file following line
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
Now it's giving different error that auto.conf is missing
make -C /lib/modules/5.9.0-kali2-amd64/build M=/home/fawad/Desktop/infoFolder/Linux/KernelDevelopment/hell modules make[1]: Entering directory '/usr/src/linux-headers-5.9.0-kali2-amd64' 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. make[2]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:718: include/config/auto.conf] Error 1 make[1]: *** [/usr/src/linux-headers-5.9.0-kali2-common/Makefile:185: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-5.9.0-kali2-amd64' make: *** [Makefile:6: default] Error 2
I found on internet I have to run make prepare
command against Makefile in /usr/src/linux-headers-5.9.0-kali2-common/Makefile
but now its again giving me an first error
sh: 0: cannot open /usr/src/linux-headers-5.9.0-kali4-common/scripts/mkmakefile: No such file /usr/src/linux-headers-5.9.0-kali4-common/Makefile:691: include/config/auto.conf.cmd: No such file or directory make[1]: *** [/usr/src/linux-headers-5.9.0-kali4-common/Makefile:710: include/config/auto.conf.cmd] Error 2 make: *** [/usr/src/linux-headers-5.9.0-kali4-common/Makefile:185: __sub-make] Error 2
I like to know how to configure make and linux so I can build external modules? like this one
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);