Where's my module gone? - linux-kernel

make -C /usr/src/linux-2.6.32.9 M=`pwd`
LD /root/test/lkm/built-in.o
Building modules, stage 2.
MODPOST 1 modules
make: Leaving directory `/usr/src/linux-2.6.32.9'
make -C /usr/src/linux-2.6.32.9 M=`pwd` modules_install
INSTALL /root/test/lkm/try.ko
DEPMOD 2.6.32.9
But when I lsmod |grep try,nothing is shown,why?

INSTALL doesn't load the module, it just copies it to its final location. Try insmod /root/test/lkm/try.ko.

Related

how to solve Kernel configuration is invalid issues

I'm trying to build module.
But here's some issues.
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.`
And here's my makefile
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
.PHONY: modules modules_install clean
else
# called from kernel build system: just declare what our modules are
obj-m := hello.o hellop.o seq.o jit.o jiq.o sleepy.o complete.o \
silly.o faulty.o kdatasize.o kdataalign.o
endif
I tried building like this:
export KERNELDIR=/path/to/extern/linux/source
make
How can I solve this problem?
Okay, so I would try to re-install the Linux-headers.
prerequisites
terminal access(bash presumably)
root privileges
(or a user who can do 'sudo')
First, we try to re install (using APT) the linux-headers package but adding your specific version. Which is determined by the following command: $(uname -r)
and to do it all in one line:
sudo apt install --reinstall linux-headers-$(uname -r)
Then, as we talk about the kernel, and making changes to it (quite major too, a reinstall of a kernel that is) we want to reboot as soon as the APT command is done:
sudo reboot
If you get it couldn't find any package, (or similar) (from apt)
try apt update and re-try the above.
Logs
Do check /var/log/kern.log for any messages that is,
cat /var/log/kern.log
I solved this problem with the following commands:
From your built sources take the most recent .config file with kernel configuration. Copy it to kernel-source directory (e.g.: build/tmp/work-shared/lmm-corei7/kernel-source).
Run make prepare.
I spent hours on the same problem, having the same error message : ERROR: Kernel configuration is invalid...
The solution was so simple...
I was running sudo make and this created the errors.
After having done what is suggested by William Martens (reinstall the headers and reboot), I logged as root, and the module built perfectly.
To be sure, I did a second test with an admin account and sudo make, and it failed again. So I am sure this is the reason. I noticed also that after a fail, I have to reinstall the headers otherwise, even in root, it fails.
This happened on a Debian 11 with kernel 5.10.0-16-amd64.

How can I install lua5.3 for Centos7

Good day,
I really spent almost all after-noon looking to install lua5.3 on Centos 7.
I mostly found information to install Lua5.1 but we really need a version 5.2 or 5.3.
If I found information for 5.3, it was not for Centos.
Until now, the best I could do, is to download the source version from lua web site
enter link description here
But I still can not install it.
Here are my steps, may be you can help to continue
curl -R -O http://www.lua.org/ftp/lua-5.3.4.tar.gz
tar zxf lua-5.3.4.tar.gz
cd lua-5.3.4
make linux test
The problem, from that point how can I install it.
I tried
make
and
make linux
make linux make me a fatal error
[root#pc6 lua-5.3.4]# make linux cd src && make linux make1:
Entering directory /root/install-package/lua-5.3.4/src' make all
SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline" make[2]:
Entering directory/root/install-package/lua-5.3.4/src' gcc
-std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_2 -DLUA_USE_LINUX -c -o lua.o lua.c lua.c:82:31: fatal error: readline/readline.h: No such
file or directory #include
^ compilation terminated. make[2]: * [lua.o] Error 1 make[2]: Leaving directory
/root/install-package/lua-5.3.4/src' make[1]: *** [linux] Error 2
make[1]: Leaving directory/root/install-package/lua-5.3.4/src' make:
* [linux] Error 2
So what do you suggest me to do. Centos 7 has been istalled today. May do I miss to install a dependent a library?
Thank for your help
The download page which you mention says:
There are detailed instructions in the package
This link points to the README, which says:
If you're running Linux and get compilation errors, make sure you have installed the readline development package (which is probably named libreadline-dev or readline-devel).
If you don't want to install readline, try make posix or make posix MYCFLAGS=-DLUA_USE_DLOPEN MYLIBS=-ldl instead. You may need to do make clean first.
If you are feeling lazy, the IUS repo has prebuilt packages of lua5.3 for el7 under the name lua53u (u presumably stands for "update") (and lua53u-devel, etc, depending on what you need).
Simply enable the repo and then install:
# enable repos
yum install -y epel-release https://repo.ius.io/ius-release-el7.rpm
# install
yum install -y lua53u

Compile Warning - ARM Cross Compiler

I have been trying to cross compile a loadable kernel module and I have been getting warning message that I would like to get help.
Below is the warning message
make[1]: Entering directory `/home/userid/rowboat-android/kernel'
Building modules, stage 2.
MODPOST 1 modules
WARNING: "omap_device_build" [/home/userid/myfiles/lcdc_load_device.ko] undefined!
WARNING: "omap_hwmod_lookup" [/home/userid/myfiles/lcdc_load_device.ko] undefined!
make[1]: Leaving directory `/home/userid/rowboat-android/kernel'
Below is the Makefile
obj-m :=lcdc_load_device.o
lcdc_load_device-m := ../rowboat-android/kernel/arch/arm/plat-omap/omap_device.o
lcdc_load_device-m += ../rowboat-android/kernel/arch/arm/mach-omap2/omap_hwmod.o
ccflags-m := -I$(src)/../rowboat-android/kernel/arch/arm/plat-omap/include/plat/
KDIR := /home/userid/rowboat-android/kernel/
PWD := $(shell pwd)
default:
$(MAKE) ARCH=arm CROSS_COMPILE=/home/userid/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
I am suspecting that the makefile is finding the header file for "omap_device_build" and "omap_hwmod_lookup" functions.
Appreciate your help, and thank you advance.
Thank you to mbratch and artless noise for their comments
To address the WARNINGS, the symbols need to be exported. For the above question place
EXPORT_SYMBOL(omap_device_build) in omap_device.c
EXPORT_SYMBOL(omap_hwmod_lookup) in omap_hwmod.c
and compile the kernel. Then compile the loadable kernel module against the compiled kernel. Perform the following to verify if the symbols have been exported
grep omap_device_build /proc/kallsyms
or
grep omap_device_build Module.symvers
For more details reference the following links
Kernel Symbols: What's available to Your Module
Building and Running Modules
Comments are welcome
Thank you

make error: No such file or directory

I am new to kernel module development. So I started with simple hello world kernel module
I am using "The Linux Kernel Module Programming Guide" book for the reference (it is addressing to kernel 2.6).
I installed kernel-devel and kenel headers with yum. I am using fedora 17.
I found that a symlink
/lib/modules/3.3.4-5.fc17.x86_64/build -> /usr/src/kernels/3.3.4-5.fc17.x86_64
Now, I have one hello-1.c (the simple kernel module and a Makefile in my working directory)
The Makefile is:
obj-m += hello-1.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
when in $make i get error:
make -C /lib/modules/3.3.4-5.fc17.x86_64/build M=/root/kerneldev modules
make: *** /lib/modules/3.3.4-5.fc17.x86_64/build: No such file or directory. Stop.
make: *** [all] Error 2
I make same program on Centos-5.x it run successfully , because the /lib/modules/3.3.4-5.fc17.x86_64/build was containing the actual module (not a symlink).
What should be problem ? why such difference?
The message
make: *** /lib/modules/3.3.4-5.fc17.x86_64/build: No such file or directory. Stop.
Is telling you that the directory path after the *** does not exist. Make issues this exact format of error when the -C directory doesn't exist. Other non-existent path situations will result in more words. For example, if the /lib/modules/3.3.4-5.fc17.x86_64/build directory does exist but it contains no makefile, make will specifically say no makefile found.
So the other answers are giving you ideas to help you create that directory with its proper contents.
And this answer is intended to also help people who have the above form of error message and for whom installing 'kernel-devel' will not help, by explaining the message itself.
I have few doubts like, where your issuing the make command.
Your current directory seems to be
M=/root/kerneldev
whether your hello-1.c is in /root/kerneldev folder.
try "yum install kernel-devel"(for kernel headers)

User Mode Linux - Installing a module error

I am trying to run 'make' on a module in User Mode Linux to install a simple makefile. Here is my make file:
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
When I run this in User Mode Linux I get the following error:
make[1]: Entering directory `/lib/modules/2.6.28/build'
make[1]: *** No rule to make target `modules'. Stop.
make[1]: Leaving directory `/lib/modules/2.6.28/build'
make: *** [default] Error 2
The problem is that no files are present under /lib/modules/. There's no directory for 2.6.28 or build. From what I've read, these should be symlinks to /usr/src, but under /usr/src, I don't see any files under that either.
Sources and headers of your UML kernel must be used to compile module for it.
You can compile it either inside UML or just in main system, but you must to use UML's kernel's headers and build scripts
You need to build and install the version of the kernel you are compiling for. Get the source from kernel.org, configure (I think make menuconfig picks the config up from the running kernel), build, and install it. You can do the build in your home directory under regular user, then of course you would need root to install it.
Edit:
Just in case you missed this - here's User Mode Linux HOWTO. It contains specific items for building and installing kernel and modules. Hope this helps.

Resources