1

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/Makefilebut 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);
user786
  • 3,902
  • 4
  • 40
  • 72
  • Please, do not use blockquote (citations) formatting for logs. Without preserved newlines it is difficult to read them. Use code formatting for logs. – Tsyvarev Dec 27 '20 at 11:08
  • I really dont know why it wasnt any clearer but my c file should have had same name as the `.o` I was specifying in kbuild file – user786 Dec 28 '20 at 09:10

0 Answers0