投稿

6月, 2019の投稿を表示しています

CentOS 7でkernelモジュールを作成してロードした

Follow @venividivici830 Linuxカーネルは、ローダブルモジュールのサポートを有効にした場合、カーネルの機能の一部をモジュールとして、カーネルの動作中に動的に追加することができる。 デバイスドライバーは、カーネルモジュールとして作られることが多い。 デバイスドライバーを勉強するための前提知識として、カーネルモジュールを作成してロードしてみた。 OSは、CentOS Linux release 7.6.1810 (Core)。 作業時のOSの状態としては、CentOS-7-x86_64-Minimal-1810.isoから、デフォルトのパラメーターでインストールした直後。 モジュールのコンパイル〜挿入・削除 必要なパッケージのインストール。 sudo yum -y install kernel-devel-$(uname -r) sudo yum -y install gcc 任意のディレクトリーに、module_test.cとMakefileの2つのファイルを、同じディレクトリー下に作成。 module_test.c #include <linux/module.h> int test_init(void) { printk("module init\n"); return 0; } void test_exit(void) { printk("module exit\n"); } module_init(test_init); module_exit(test_exit); Makefile obj-m := module_test.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) M=$(PWD) modules コンパイル。 make make -C /lib/modules/3.10.0-957.el7.x86_64/build M=/home/myuser modules make[1]: ディレクトリ `/usr/src/kernels/3.10.0-957