小程序来体验内核编译

先拿出一份之前牛人的总结:

参考资料


说明本人使用的内核版本:(red hat)  linux 2.6.28


那个自我测试的小实验是不是太繁琐呢?因此做了尝试,而且尝试也成功了。就和大家分享一下新的简单的方法。


提示:此行为会接触到内核编译,有出现内核被污染、被损坏的可能性,因此谨慎操作


首先是准备好插入的程序。这个编译入的小程序不需要复杂,用上面参考内容中的例子也是可以的。下面是我用的例子,是以前写过的一个,直接拿来就用了。

#include
    
    
     
     
#include
     
     
      
      

MODULE_LICENSE("GPL");

int init_s(void)
{
//	printk("<0>""this is 0\n");
	printk("<1>""this is 1\n");
	printk("<2>""this is 2\n");
	printk("<3>""this is 3\n");
	printk("<4>""this is 4\n");
	printk("<5>""this is 5\n");
	printk("<6>""this is 6\n");
	printk("<7>""this is 7\n");
	printk("normal work\n");
	
	return 0;
}
int exit_s(void)
{
	printk("bye\n");
}

module_init(init_s);
module_exit(exit_s);

     
     
    
    
 

好啦,现在我们就可以将自己编写的函数便如内核啦!!

到底怎么做呢?

参考内容的方式也可以实现,但是大家有木有觉得很麻烦?作为粗心大意的我都觉得很容易出错,不是么?那么我们就用下面的方法!从开始到结束总共分三部:

1、找到目录,将代码保存;

2,、分别在Makefile  Kconfig中添加填入项;

3、返回内核根目录,make menuconfig,make modules。

很简单吧!!!!! 具体怎么实现呢?别急。

就以上面的.c为例吧。

因为它是一个字符设备,所以我们的第1 2部需要在内核根目录的driver的char下进行操作,具体可以这样做:

[root@bogon ~]# cd /linux-2.6.28/drivers/char /*进入目录*/
还记得刚刚我们做好的.c嘛?拷贝到这里就可以了!

然后进入Makefile中 添加我们刚刚保存的这项!

FONTMAPFILE = cp437.uni
 
obj-y    += mem.o random.o tty_io.o n_tty.o tty_ioctl.o tty_ldisc.o tty_buff    er.o tty_port.o

obj-$(CONFIG_MY_TEST)           += pr.o   /*这是我添加的内容*/
obj-$(CONFIG_LEGACY_PTYS)   += pty.o
obj-$(CONFIG_UNIX98_PTYS)   += pty.o
根据测试,你将项目添加的位置将会影响它显示的位置。
修改完Makefile以后呢就是修改Kconfig了,只需按如下方式修改:

 
 menu "Character devices"
 
 config MY_TEST
     tristate "MY_TEST"
 
 config VT
     bool "Virtual terminal" if EMBEDDED
     depends on !S390

3、4行就是新添加进去的,“tristate”可以换为“bool”,至于什么作用,后面说。



这时候都修改完了 我们就要返回内核目录下执行步骤3了。

(1)

[root@bogon linux-2.6.28]# make menuconfig
出现这个对话框以后,因为我们添加的是字符设备,所以选择Device Drivers回车。

有开全屏的朋友注意啦:这个对话框可不能最大化哦!不然会出现问题的。

因为是字符设备的缘故,所以这里当然是


Character devices了!!继续回车!!


看到了吗?我在前面将菜单名称其名为MY_TEST的,所以在这里他显示为MY_TEST了!而刚刚说的选择“bool”还是“tristate”影响就在<>中哦!如果选择前者,选择项只会有< > <*>两种,而后者就会多<M>这个选项哦!

那么我们选择M吧!!用空格改变前面的配置哦!配置好esc一路退出保存就可以了!

(2)make modules

这个不用说啦,上面一步做完了,继续在当前目录下敲make modules就可以了!然后等待。




成功的标志是什么呢?

查看内核版本下的.config文件夹下是否有么有你添加的东西呢?

看1740行!!这就是我们添加成功了!!!

再确认一下

[root@bogon linux-2.6.28]# cd drivers/char/

除了刚开始我们存入的.c文件外多了一个.ko文件,至此,我们添加工作全部完成!!!!




至于其他的东西,那篇文章总结的很详细了,这里也就不多说了。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值