内核模块:hellops
2020-02-19 本文已影响0人
林木木_f297
目标:查看内核进程的相关信息
第一步:创建工作目录
工作目录第二步:根据老师给出的代码创建文件并拷贝进去
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
int init_module()
{
printk("Hello world\n");
extern unsigned long volatile jiffies;
struct task_struct *p = &init_task;
do
{
printk("%d %s\n",p->pid,p->comm);
p = next_task(p);
}
while(p!=&init_task);
return 0;
}
void cleanup_module()
{
printk("bye\n");
}
MODULE_LICENSE("GPL");
.c文件
obj-m := hellops.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
makefile文件
第三步:编译
第一次编译失败无法辨认相关命令
于是上网进行了查询,没有找到相关结果
最后想到,是不是编译器版本的问题?
版本
发现版本被设置为4.7.4,应该是之前为了方便做操作系统课程设计做的调整,于是下载了最新版本的编译器并进行了版本调整。
更改版本
重新进行make
虽然有warning但是无伤大雅
第四步:开始ps
分别输入一下的命令来查看ps及操作系统版本信息
insmod hellops.ko
lsmod | grep hello
dmesg | grep -A 2 Hello
dmesg | tail -5
rmmod hellops
dmesg | tail -1
uname -a
操作结果截图
非root账号rm需要sudo提权