參考:
一、編寫驅動程式和makefile
二、將該程式複製wsl下的任意乙個目錄
我是先在核心資料夾的同級目錄建立了乙個目錄os_drive,在裡面touch乙個.c檔案,再用vim指令右鍵複製,突然想起來用記事本開啟應該更方便,記事本開啟命令是:
notepad.exe 檔名
三、返回該核心根目錄,輸入指令:
make modules_install
結果如圖:
四、然後還是在核心根目錄,再建立乙個軟連線/usr/src/ 連線到核心原始碼目錄
sudo
ln -s /usr/src/
//下面是我執行的命令
sudo
ln -s /usr/src/
五、重新make驅動程式:進入原始碼所在資料夾輸入make指令,結果如下圖:
六、insmod 檔名.ko
//我是在核心根目錄執行insmod指令的,不確定在檔案所在目錄insmod有沒有用
insmod ../os_drive/silence_drive.ko
七、至此裝置驅動程式就加入成功了,如果要解除安裝模組的話,就在.ko檔案所在目錄執行rmmod **.ko命令就行:
rmmod **.ko
//檔名silence_drive.c
#include
#include
#include
#include
#include
#include
#include
long
int silence_major =0;
static ssize_t read_silence
(struct file *flip,
char
*buf,size_t count, loff_t*f_pos)
return count;
}static ssize_t write_silence
(struct file *flip,
const
char
*file,size_t count, loff_t*f_pos)
static
intopen_silence
(struct inode *inode,
struct file *file )
static
void
release_silence
(struct inode *inode,
struct file *file )
struct file_operations silence_fops=
;static
intinit_mymodule
(void)if
(silence_major ==
0) silence_major = result;
/* dynamic */
return0;
}static
void
cleanup_mymodule
(void
)module_license
("gpl");
module_init
(init_mymodule)
;module_exit
(cleanup_mymodule)
;
//makefile
ifneq ($(kernelrelease),)
#kbuild syntax.
obj-m +
=silence_drive.o
else
pwd :
=$(shell pwd)
kver :
=$(shell uname -r)
kdir ::=
/lib/modules/$(kver)
/build
all:
$(make)
-c $(kdir) m=$(pwd)
clean:
rm -f *
.cmd *
.o *
.mod *
.koendif
WSL2下增刪Linux核心模組
該模組裝載時會在核心態顯示hello,解除安裝時會顯示bye,具體 如下 include include include module license gpl module author yige liu module description hello module static int init...
WSL 2 使用說明
cpu啟動虛擬機器平台 在bios中設定 管理員許可權下設定 enable windowsoptionalfeature online featurename virtualmachineplatform enable windowsoptionalfeature online featurenam...
Windows安裝wsl,並公升級到wsl2
lx設定預設wsl 3.wsl啟用wsl2 pycharm配置wsl,並啟用wsl的virtualenv 前提是win宿主機已經啟用虛擬機器以及linux子系統功能 windows設定 應用 解除安裝 預設應用 可選功能 可選功能 滑到最下邊 更多windows功能 勾選 適用於linux的wind...