After trying to build a different kernel module on Ubuntu 17.04 (Zesty), I can replicate these errors. The first "error" isn't really an error unless the echo statements are triggered if the "test" command fails: test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( [...SNIP...] ) Notice in the part with parentheses that each line is prefixed by: echo >&2 " ... " This behavior of GNU Make is normal. It will print back the commands it runs unless told not to. If you saw this message without 'echo >&2' in front, it would immediately exit afterwards with a message like: make: *** [all] Error 1 This "test -e [...]" command is checking that the mentioned files exist within the Linux Kernel source directory. This directory is mentioned above when Make changes into it: "/usr/src/linux-headers-4.1.0-040100rc2-generic" The two files it is checking exist are therefore: /usr/src/linux-headers-4.1.0-040100rc2-generic/include/generated/autoconf.h # AND: /usr/src/linux-headers-4.1.0-040100rc2-generic/include/config/auto.conf You can look for these files yourself to make sure they exist. If so, this particular output from Make can be ignored. If they don't exist, then you can usually follow the instructions for running "make oldconfig && make prepare" within the Linux Kernel source directory to create them. The second error message you are getting looks like the real one: make[1]: *** No rule to make target 'arch/x86/syscalls/syscall_32.tbl', needed by 'arch/x86/syscalls/../include/generated/asm/syscalls_32.h'. Stop. arch/x86/Makefile:181: recipe for target 'archheaders' failed make: *** [archheaders] Error 2 This error is listed around the Internet surrounding building Linux Kernel modules on Debian (and Fedora) against Linux Kernel source that is missing "syscalls_32.tbl" and "syscalls_32.h" files. These files should exist in the "Vanilla" Linux Kernel source code which can always be found at kernel.org. However, it appears that some distributions such as Debian and Ubuntu are missing these files in their newer "linux-headers-*" packages. This appears to be a packaging bug which can be filed against "linux-headers-*" package. The "linux-headers" packages should include these files in order to build kernel modules using them. The workaround is to get a full copy of the appropriate version of the Linux Kernel source tree by whatever means, and to use this directory to build your modules against. Note that I'm answering this question based on my personal experience with the linux-headers-4.10.0-37-generic package on Ubuntu 17.04 "Zesty Zapus". I'm under the assumption that this file has been missing from the "linux-headers-*" packages for a while now based on the many instances of people running into this error since 2013 posted on the internet. If you can somehow locate the "syscalls_32.tbl" and "syscalls_32.h" files within your /usr/src/linux-headers-4.1.0-040100rc2-generic/ directory, then you should check the bbswitch module's source directory Makefile. Sometimes the way an external Kernel Module's Makefile is written prevents it from finding the right linux-headers or /lib/modules/ directory during build. Other solutions have been posted for changing the way GNU Make is finding the Linux Source directory and the Kernel Module's working directory usually with $$(PWD) or $(shell $PWD).