haruka4434
@haruka4434

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

「linux/init.hが無い」とエラーが出る。

Hello, hacker school! とカーネルログに表示するだけのモジュールをコンパイルしようとしたら以下のincludeエラーが出ました。

発生している問題・エラー

ソース ファイルを開けません "linux/init.h"C/C++(1696)

fatal error: linux/init.h: そのようなファイルやディレクトリはありません
    3 | #include <linux/init.h>   // included for __init and __exit macros
      |          ^~~~~~~~~~~~~~
compilation terminated.

該当するソースコード

#include <linux/module.h> // included for all kernel modules
#include <linux/kernel.h> // included for KERN_INFO
#include <linux/init.h>   // included for __init and __exit macros

static int __init hello_init(void)
{
    printk(KERN_INFO "Hello, hacker school!!!\n");
    return 0; // Non-zero return means that the module couldn't be loaded.
}

static void __exit hello_cleanup(void)
{
    printk(KERN_INFO "I am dead.\n");
}

module_init(hello_init);
module_exit(hello_cleanup);

自分で試したこと

https://stackoverflow.com/questions/28423477/linux-init-h-no-such-file-or-directory/28425142
ここで解決方法が書かれていたので、この通りに設定しました。

apt install linux-headers-5.10.0-9-amd64
のインストール

Makefileの「KERNELDIR」と「PWD」の変数の設定

0

1Answer

Comments

  1. @haruka4434

    Questioner

    https://github.com/jvns/kernel-module-fun



    ```makefile
    obj-m += hello.o
    obj-m += hello-packet.o
    obj-m += rootkit.o
    obj-m += rickroll.o
    obj-m += excited_virus.o

    all:
    make -C /lib/modules/$(5.10.0-9-amd64)/build M=$(/home/user/Documents/dev/kernel-module-fun) modules

    clean:
    make -C /lib/modules/$(5.10.0-9-amd64)/build M=$(/home/user/Documents/dev/kernel-module-fun) clean
    ```

Your answer might help someone💌