カーネルオブジェクトのビルド
簡単なカーネルモジュールを作ってみる。
ソース、Makefile
・hello_module.c
#include <linux/module.h>
MODULE_LICENSE("GPL v2");static int hello_init(void)
{
printk( KERN_ERR "Hello world\n");
return 0;
}static void hello_exit(void)
{
/* none */
}module_init(hello_init);
module_exit(hello_exit);
obj-m := hello_module.o
all:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C $(KERNEL) M=$(PWD) modules
ビルド
カーネルソースの位置を相対的に指定する。ここでは、../kernel_src/kernel/kernel
make KERNEL=../kernel_src/kernel/kernel/
ビルドが完了すると、hello_module.koが作成さる。
モジュールのインストール
作成されたkoファイルをBBBの起動SDへコピーして、BBBを起動する。
BBB起動後、作成されたモジュールをinsmodすると、読み込まれてhello worldが表示される。
insmod hello_module.ko
・参考
https://blukat29.github.io/2017/12/cross-compile-arm-kernel-module/