0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ArcaneLink-1

Last updated at Posted at 2024-11-03

カーネルモジュールを使って、他のUIDのメモリを確認する。

カーネルモジュールとは、linuxの機能の1つ。再起動せずに機能を追加・変更できる。

カーネルモジュールを開発するのに必要なもの。
(1)カーネルヘッダ
(2)gcc
(3)make

カーネルヘッダの存在を確認。

$ ls /usr/src/linux-headers-$(uname -r)

なければ

$ sudo apt install linux-headers-$(uname -r)

gccとmakeの存在を確認。

$ gcc --vervion
$ make --version

なければ

$ sudo apt install build-essential

モジュールの素をc言語で書く。拡張子は「.c」。

$ nano hello_module.c

なかみ

#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A Simple Hello World Module");

static int __init hello_init(void) {
    printk(KERN_INFO "Hello, World! Module loaded.\n");
    return 0; // 0を返すことで正常にロードされたことを示す
}

static void __exit hello_exit(void) {
    printk(KERN_INFO "Goodbye, World! Module unloaded.\n");
}

module_init(hello_init);
module_exit(hello_exit);

Makefileをつくる。拡張子なし、このファイル名じゅないとダメ。

$ nano Makefile

なかみ

obj-m += hello_module.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

注意:makeの前は、スペースじゃなくタブにすること。

.cファイルから、.koファイルをビルドする。

$ make

参考:「.o」他、様々な中間ファイルができるが、「.ko」以外、すべて不要。

モジュールをインサートする。

$ sudo insmod hello_module.ko

結果を確認する。

$ dmesg | tail

モジュールをリムーブする。

$ sudo rmmod hello_module.ko

結果を確認する。

$ dmesg | tail

makeでゴジャゴジャできたファイルたちを削除する。

$ make clean
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?