内核模块: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提权

实验结束

上一篇下一篇

猜你喜欢

热点阅读