ubuntu 内核模块打印测试

[jn@jn module]$ history|grep install
 2011  sudo apt-get install linux-headers-$(uname -r)
 2016  sudo apt install gcc-12
 2017  sudo apt install g++-12
 2077  history|grep install
[jn@jn module]$ cat print.c
#include <linux/init.h>
#include <linux/module.h>

// Initialization function
static int __init print_init(void)
{
    pr_info("my print module: Kernel module initialized\n");
    printk("output from print module\n");
    return 0;
}

// Cleanup function
static void __exit print_exit(void)
{
    pr_info("my print module: Kernel module exited\n");
}

// Register initialization and cleanup functions
module_init(print_init);
module_exit(print_exit);

// Module information
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple Linux kernel module example");

[jn@jn module]$ cat Makefile
obj-m += print.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

[jn@jn module]$ make
make -C /lib/modules/6.8.0-48-generic/build M=/home/jn/module modules
make[1]: Entering directory '/usr/src/linux-headers-6.8.0-48-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
  You are using:           gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
make[1]: Leaving directory '/usr/src/linux-headers-6.8.0-48-generic'
[jn@jn module]$ sudo insmod print.ko
[jn@jn module]$ dmesg -T|tail -n 1
dmesg: read kernel buffer failed: Operation not permitted
[jn@jn module]$ sudo dmesg -T|tail -n 1
[Rab Jan  8 00:12:58 2025] my print module: Kernel module initialized
[jn@jn module]$ date
Rabu 08 Jan 2025 12:13:19  +08
[jn@jn module]$ sudo rmmod print.ko
[jn@jn module]$ sudo dmesg -T|tail -n 1
[Rab Jan  8 00:13:29 2025] my print module: Kernel module exited
[jn@jn module]$
posted @ 2025-01-08 00:18  dujingning  阅读(22)  评论(0)    收藏  举报