内核模块:hellops

目标:查看内核进程的相关信息

第一步:创建工作目录

工作目录

第二步:根据老师给出的代码创建文件并拷贝进去

#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提权


实验结束

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,347评论 0 5
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,947评论 0 5
  • I came across this TED talk yesterday in which Chris Lons...
    hukaye阅读 4,529评论 0 1
  • 如果不是对自己太苛刻,今天应该是令人满意的一天。 两个目标达成了一个。目标一:大扫除花了80%的时间,而且是体力活...
    StarrySky_0ee7阅读 3,339评论 0 0
  • 周六,参加一个线下读书会,最初没有抱太多的期待和问题去参加,但是在晚上的行动学习活动中,我收获了一些让我没有想到的...
    放牛班的小林子阅读 3,349评论 0 1