内核源码调试及实现

本文详细介绍如何在优麒麟15.04上调试内核版本linux3.19,包括安装系统、编译内核及修改代码的具体步骤。特别介绍了如何通过dmesg命令查看内核中的printk输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改内核源码,使用的优麒麟15.04,内核版本为linux3.19

一步一步跟着做,一定可以实现看到在内核中添加的打印语句输出。


内核源码调试步骤

 

3部曲:

一,装个linux系统(我装的是双系统);
二,编译内核源码,使用新内核启动;
三,修改代码,重启。
 

 

步骤一,参考以下链接

http://jingyan.baidu.com/article/76a7e409bea83efc3b6e1507.html,(附录一,贴在最后)

需要注意的是,第8步的时候,把boot分区分大一些,200M会有点不够用(后面制作的启动映像会有点大),我分的1000M。

 

步骤二,参考以下链接

http://jingyan.baidu.com/article/0bc808fc4697af1bd585b957.html,(附录二,贴在最后)

是需要电脑可以联网的,因为有些更新程序,

4.# make menuconfig (对内核选项进行配置,不需要配置,直接退出,是否保存,选择no

# cp /boot/config-'uname-r'-generic  ./.config ('uname -r'-generic

这一步需要注意,可能uname –r  用不了,那么就需要,输入cp/boot/config后按两下tab键看看里面有什么,然后把它复制到./.config  我的是

cp/boot/config-3.19.0-15-generic  ./.config

步骤二做完后,其实已经是新内核启动了,现在我们来略微修改下代码,来重新启动。

步骤三,

1.查了一些资料在终端直接输出内核的printk似乎不好实现,我们只能采用一种取巧的方式,dmesg命令。

2.由于编译内核模块花的时间比较久,makemodules  (编译模块),又采用了一种取巧的办法,由于我只修改了内核的kernel/sched/fair.c,所以我只需要把bzImage 编译了,然后拿到boot下面就可以了。这样为编译节省了大量的时间。

我把内核的解压缩文件放在 /usr/src下面。

cd /usr/src/linux-3.19.3/kerne/shed/

vi  fair.c

加上头文件#include <linux/kernel.h>

是为了printk可以用

然后找到check_preempt_tick()函数,在里面加上一行

printk(“here ischeck_preempt_tick \n”);

因为进程时间用完以后,都会调用这个函数来选择新进程来运行,所以选择这个函数。

写完以后保存。

cd/usr/src/linux-3.19.3

sudo Make bzImage

成功后会提示生成了一个bzImage,把它拷贝到根目录的boot里面,重新七个名字,

cp arch/x86/boot/bzImage  /boot/vmlinuz-3.19.3

然后 重新启动就可以了,相当于我们只编译了内核的镜像,modules都没变,所以很节约时间。

重启后,进入终端,输入dmesg ,就可以看到我们printk中的信息了。

这只是抛砖引玉,以后可以根据需要,在内核的不同地方增加printk信息。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值