あなたの最初のLinuxデバイスドライバを作成する方法

あなたの最初の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  003004 Ubuntuのカーネル:[ 3041.143749 ]こんにちは、solidmango 
年09月26  003031 Ubuntuのカーネル:[ 3068.192172 ]さようなら、solidmango

 

7.カーネルモジュールに署名

/ libに/モジュール/ 15.418 /ビルド/スクリプト/サイン-SHA512ファイル/ libに/モジュール/ 15.418 /build/certs/signing_key.pem / libに/モジュール/ 15.418 /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

 

おすすめ

転載: www.cnblogs.com/pugang/p/11592441.html