Kmaiti

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Saturday, 4 September 2010

How to build kernel module + How to develop kernel module + How to create kernel module?

Posted on 19:13 by Unknown
Guys,

I developed a small program called hello.c and called some kernel functions in it. Here are the steps those I followed :

========
1. yum install kernel-headers-$(uname -r)
2. vi hello.c and add the following codes :
-----
#include "linux/module.h"
#include "linux/kernel.h"
int init_module(void)
{
printk(KERN_INFO "init_module() called\n");
return 0;
}

void cleanup_module(void)
{
printk(KERN_INFO "cleanup_module() called\n");
}
-----

3. vi Makefile and add the following lines :

-----
obj-m += hello.o

all:
make -C /lib/modules/2.6.18-194.8.1.el5/build/ M=$(PWD) modules

clean:
make -C /lib/modules/2.6.18-194.8.1.el5/build/ M=$(PWD) clean
-----
Note : Replace the version here. -C option is used to use the Makefile which has inside the "build" directory.

4. make //To create object files like .o and .ko. PT: ./configure is not needed since basic function of ./configure is to check the existence of header files and to create the Makefile and setup rules in those files. Here we have manually created the file and put the rules.

5. List of created object files after executing "make" command :

-----
root@server [~/test]# ls
./ hello.c .hello.ko.cmd hello.mod.o hello.o Makefile Module.symvers
../ hello.ko hello.mod.c .hello.mod.o.cmd .hello.o.cmd Module.markers .tmp_versions/
root@server [~/test]#

Example(O/P) :-
root@server [~/test]#make
make -C /lib/modules/2.6.18-194.8.1.el5/build/ M=/root/test modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-194.8.1.el5-i686'
CC [M] /root/test/hello.o
Building modules, stage 2.
MODPOST
CC /root/test/hello.mod.o
LD [M] /root/test/hello.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-194.8.1.el5-i686'
-----

6. root@server [~/test]# modinfo hello.ko //To get the details of the module
filename: hello.ko
srcversion: 4F856ABA1F3290D5F81D961
depends:
vermagic: 2.6.18-194.8.1.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1
root@server [~/test]#

7. Load module : insmod hello.ko
example :
root@server [~/test]# insmod hello.ko

8. Check whether it has loaded or not : lsmod | grep hello
example :
root@server [~/test]# lsmod | grep hello
hello 5504 0
root@server [~/test]#

9. Remove the module : rmmod hello
Ex :
root@server [~/test]# rmmod hello

10. Check the log :

root@server [~/test]# tail -2 /var/log/messages
Sep 4 19:28:20 server kernel: init_module() called
Sep 4 19:28:28 server kernel: cleanup_module() called
root@server [~/test]#
========

That's it. Try :)
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest
Posted in | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • unable connect to socket: No route to host (113)
    Guys, This error message usually comes when you try to access remote linux desktop using vncviewer. Please check the firewall in the linux s...
  • NDMP communication failure error
    Guys, Issue : Netbackup server sends alert NDMP communication failure once everyday. But there is no issue to run scheduled backup jobs. Env...
  • How to verify UDP packet communication between two linux system?
    Guys, Today, I had to check UDP packet communication between linux and a windows system. Main purpose of the windows system was to capturing...
  • How to redirect output of script to a file(Need to save log in a file and file should be menioned in the script itself?
    Expectation : @subject Steps : 1. Create a bash script. 2. add line : exec > >(tee /var/log/my_logfile.txt) That's it. All output ...
  • "cluster is not quorate. refusing connection"
    Guys, Environment : Red Hat Enterprise Linux 5.6, RHCS Error : subject line Issue : I am not sure while I got this error in the system log s...
  • Steps to develop patch and apply it to original source file
    1. Create test.c  Above file contains : -------- [kamalma@test-1 C_Programming]$ cat test.c #include #include int main()  {  printf("\n...
  • How to install subversion (svn) on linux ?
    Guys, I have referred the second procedure to install svn on my rhel6 mc. Procedure 1 : ========= cd /usr/local/src/ wget http://subversion...
  • How to add sudo user in linux?
    1. #useradd test123 2. #usermod -G wheel -a test123 //add user to wheel group 3. Uncomment following in /etc/sudoers file : # Uncomment to ...
  • How to change php handler from backend on cpanel server?
    Guys, I have referred the following commands to switch the php handler on the cpanel serevrs: 1. Command to display the current php handler ...
  • How to remotely access the linux desktop from any linux or windows machine?
    Guys, I referred the following steps : ======================= 1. On server-linux(Which will be accessed) : yum install vnc* 2. On client-li...

Categories

  • ACL
  • ESX
  • Linux
  • Storage
  • UCS

Blog Archive

  • ►  2013 (5)
    • ►  May (1)
    • ►  April (3)
    • ►  February (1)
  • ►  2012 (10)
    • ►  July (1)
    • ►  June (1)
    • ►  April (1)
    • ►  March (3)
    • ►  February (3)
    • ►  January (1)
  • ►  2011 (86)
    • ►  December (3)
    • ►  November (2)
    • ►  September (19)
    • ►  August (9)
    • ►  July (5)
    • ►  June (9)
    • ►  May (12)
    • ►  April (3)
    • ►  March (4)
    • ►  February (5)
    • ►  January (15)
  • ▼  2010 (152)
    • ►  December (9)
    • ►  November (34)
    • ►  October (20)
    • ▼  September (14)
      • How to integrate tomcat with apache on cpanel linu...
      • How install MRTG on linux?
      • make: *** [install-webconf] Error 1
      • How to install nagios on cpanel or linux server?
      • How to + extract + untar + unzip .tar.gz file on l...
      • How to repair mysql database or tables of the data...
      • FileList::init() failed: ls_dir_wrapper() failed: ...
      • How to install htop on linux machine?
      • Directory lookup for the file "C:\Program Files\Mi...
      • How to build kernel module + How to develop kernel...
      • How to upgrade kernel on linux?
      • How to manually recompile php on cpanel server?
      • configure: error: This c-client library is built w...
      • How to install suhosin on linux ?
    • ►  August (24)
    • ►  July (19)
    • ►  June (3)
    • ►  May (25)
    • ►  April (3)
    • ►  January (1)
Powered by Blogger.