あなたの最初のLinuxデバイスドライバを作成する方法
0環境
-ubuntu 1804の64ビット
$(のuname -r) - 1は、Linux-ヘッダをインストールapt-getを
2.コードのhello.c
#include <linuxの/ init.h> の#include <linuxの/ module.h> MODULE_LICENSE(" デュアルBSD / GPL " )。 静的 int型 hello_init(無効) { のprintk(KERN_ALERT " こんにちは、solidmango \ nを" ); リターン 0 ; } 静的 ボイド hello_exit(ボイド) { のprintk(KERN_ALERT " さようなら、solidmangoの\ n " ); } module_init(hello_init)。 module_exit(hello_exit)。
3.メイクファイル
KERNELRELEASEが場合#されて定義され、私たちは' から呼び出されまし #カーネルのビルドシステムとその言語を使用することができます。 ifneq($(KERNELRELEASE)、) OBJ -m:= hello.o #そうでなければ、私たちが直接呼ばれていましたから、コマンド #ライン。カーネルのビルドシステムを起動します。 他に KERNELDIR?= / libに/モジュール/ $(シェルのuname -rと)/ 構築 :PWD = $(シェルPWD) デフォルト: $(MAKE) -C $(KERNELDIR)M = $(PWD)は、モジュール ENDIFを
4. sudoのinsmodのhello.ko
5. sudoはハローrmmodを
6.ビュー結果
SM @ Ubuntuの:〜の/ dev $猫/ VAR /ログ/ syslogの| solidmangoのgrep 年09月26 00:30:04 Ubuntuのカーネル:[ 3041.143749 ]こんにちは、solidmango 年09月26 00:30:31 Ubuntuのカーネル:[ 3068.192172 ]さようなら、solidmango
7.カーネルモジュールに署名
/ libに/モジュール/ 15.4。18 /ビルド/スクリプト/サイン-SHA512ファイル/ libに/モジュール/ 15.4。18 /build/certs/signing_key.pem / libに/モジュール/ 15.4。18 /build/certs/signing_key.x509 hello.ko
Linuxカーネルをビルドするときsigning_key.pemとsigning_key.x509ファイルが生成されます
参照
https://wiki.gentoo.org/wiki/Signed_kernel_module_support#Enabling_module_signature_verification