Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2762字,纯文字阅读大概需要4分钟。
内容图文
![Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转](/upload/InfoBanner/zyjiaocheng/1237/bf7281201030420489837b8eaeb3a059.jpg)
Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 首先准备linux内核编译环境: sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge kernel-package sudo apt-get build-dep linux sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev 检出带有utrace补丁的官方内核代码,并生成对应Ubuntu当前版本内核(3.0)的补丁: git clone https://github.com/utrace/linux.git utrace-linux-git cd utrace-linux-git/ git checkout -b utrace-3.0 origin/utrace-3.0 git diff v3.0 > /tmp/utrace.patch 获得Ubuntu定制内核代码,并打上utrace补丁 sudo apt-get install linux-source tar xjf /usr/src/linux-source-3.0.0.tar.bz2 cd linux-source-3.0.0/ patch -p1 < /tmp/utrace.patch 输出为: patching file Documentation/DocBook/Makefile patching file Documentation/DocBook/utrace.tmpl patching file arch/x86/kernel/ptrace.c patching file fs/proc/array.c patching file include/linux/ptrace.h patching file include/linux/sched.h Hunk #1 succeeded at 187 (offset 3 lines). Hunk #2 succeeded at 206 (offset 3 lines). Hunk #3 succeeded at 1415 with fuzz 2 (offset 7 lines). patching file include/linux/signal.h patching file include/linux/tracehook.h patching file include/linux/utrace.h patching file init/Kconfig Hunk #1 succeeded at 388 (offset 16 lines). patching file kernel/Makefile patching file kernel/fork.c Hunk #1 FAILED at 168. Hunk #2 succeeded at 1098 (offset 3 lines). 1out of 2 hunks FAILED -- saving rejects to file kernel/fork.c.rej patching file kernel/ptrace.c patching file kernel/sched.c patching file kernel/signal.c Hunk #4 succeeded at 1993 (offset -2 lines). Hunk #5 succeeded at 2017 (offset -2 lines). Hunk #6 succeeded at 2124 (offset -2 lines). Hunk #7 succeeded at 2132 (offset -2 lines). patching file kernel/utrace.c 注意 kernel/fork.c 的补丁失败了,看看 kernel/fork.c.rej: --- kernel/fork.c +++ kernel/fork.c @@ -168,6 +168,7 @@ free_thread_info(tsk->stack); rt_mutex_debug_task_free(tsk); ftrace_graph_exit_task(tsk); + tracehook_free_task(tsk); free_task_struct(tsk); } EXPORT_SYMBOL(free_task); 修改 kernel/fork.c,在 free_task 函数的 ftrace_graph_exit_task(tsk); 之后手工加上这行 tracehook_free_task 调用即可。 编译新的内核,使用当前系统内核的配置参数作为基准,开启 utrace 补丁提供的 CONFIG_UTRACE 功能即可: cp /boot/config-`uname -r` .config make oldconfig ,出现如下提示时回答 y:Infrastructure for tracing and debugging user processes (UTRACE) [N/y/?] (NEW) make-kpkg clean export CONCURRENCY_LEVEL=9 ,这里指定编译内核时的并发任务数,设置为核数+1即可 fakeroot make-kpkg --initrd --append-to-version=-utrace binary-arch 编译完成后,在 linux-source-3.0.0/ 的上级目录会生成 linux-headers/image/debug-symbol 的 deb 安装包,直接用 sudo dpkg -i *.deb 安装即可。重启后选择新内核进入即可用 systemtap 进行用户态程序跟踪。 参考: https://help.ubuntu.com/community/Kernel/Compile#Alternate_Build_Method:_The_Old-Fashioned_Debian_Way
原文:http://www.cnblogs.com/zengkefu/p/4820927.html
内容总结
以上是互联网集市为您收集整理的Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转全部内容,希望文章能够帮你解决Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。