カスタムLinuxカーネルモジュール: ".gnu.linkonce.this_moduleセクションのサイズは、ランタイムカーネルによって構築された構造モジュールのサイズと一致する必要があります。"

カスタムLinuxカーネルモジュール: ".gnu.linkonce.this_moduleセクションのサイズは、ランタイムカーネルによって構築された構造モジュールのサイズと一致する必要があります。"

ベアボーンLinuxデバイスドライバモジュールをロードしようとしていますが、この問題はdmesgで引き続き発生します。

module dummydriver: .gnu.linkonce.this_module section size must match the kernel's built struct module size at run time

モジュールをロードしようとすると、次のメッセージが表示されます。

insmod: ERROR: could not insert module dummydriver.ko: Invalid module format

私が知っている限り、私のカーネルバージョンはモジュールのビルドに使用したバージョンと一致し、以下のようにPop OS 22.04を実行していますuname -r

6.5.6-76060506-generic
  • ドライバーコード:
    #include <linux/module.h>
    #include <linux/version.h>
    #include <linux/kernel.h>
    
    static int __init driver_init(void)
    {
        printk(KERN_INFO "bababooey :D");
    
        return 0;
    }
    
    static void __exit driver_exit(void)
    {
        printk(KERN_INFO "bababooey :(");
    }
    
    module_init(driver_init);
    module_exit(driver_exit);
    
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("dude");
    MODULE_DESCRIPTION("driver");
    
  • ファイル生成:
    obj-m = dummydriver.o
    KVERSION = $(shell uname -r)
    all:
        make -C /lib/modules/$(KVERSION)/build M=$(shell pwd) modules
    
    clean:
        make -C /lib/modules/$(KVERSION)/build M=$(shell pwd) clean
    
  • 出力の場合:
    make -C /lib/modules/6.5.6-76060506-generic/build M=/home/david/Programming/dummydriver modules
    make[1]: Entering directory '/usr/src/linux-headers-6.5.6-76060506-generic'
      CC [M]  /home/david/Programming/dummydriver/dummydriver.o
      MODPOST /home/david/Programming/dummydriver/Module.symvers
      CC [M]  /home/david/Programming/dummydriver/dummydriver.mod.o
      LD [M]  /home/david/Programming/dummydriver/dummydriver.ko
    make[1]: Leaving directory '/usr/src/linux-headers-6.5.6-76060506-generic'
    

モジュールに署名し、セキュアブートをオフにしようとしましたが、まだdmesgで初期エラーが発生します。誰でも提案があればありがとうございます。

関連情報