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. > /tmp/utrace.patch
获得Ubuntu定制内核代码,并打上utrace补丁
sudo apt-get install linux-source
tar xjf /usr/src/linux-source-3.0..tar.bz2
cd linux-source-3.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 # succeeded at (offset lines).
Hunk # succeeded at (offset lines).
Hunk # succeeded at with fuzz (offset lines).
patching file include/linux/signal.h
patching file include/linux/tracehook.h
patching file include/linux/utrace.h
patching file init/Kconfig
Hunk # succeeded at (offset lines).
patching file kernel/Makefile
patching file kernel/fork.c
Hunk # FAILED at .
Hunk # succeeded at (offset lines).
out of 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 # succeeded at (offset - lines).
Hunk # succeeded at (offset - lines).
Hunk # succeeded at (offset - lines).
Hunk # succeeded at (offset - lines).
patching file kernel/utrace.c
注意 kernel/fork.c 的补丁失败了,看看 kernel/fork.c.rej:
--- kernel/fork.c
+++ kernel/fork.c
@@ -, +, @@
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= ,这里指定编译内核时的并发任务数,设置为核数+1即可
fakeroot make-kpkg --initrd --append-to-version=-utrace binary-arch
编译完成后,在 linux-source-3.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

Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转的更多相关文章

  1. 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』

    基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...

  2. 【转】ubuntu 11.10(32位系统)下编译android源码

    原文网址:http://www.cnblogs.com/dwayne/archive/2011/11/16/2251734.html 本文介绍在ubuntu 11.10系统下编译android 2.3 ...

  3. Ubuntu 11.10 Server下搭建Maven私服

      安装Nexus服务的文档可以参考官方站点:http://www.sonatype.com/books/nexus-book/reference/install-sect-install.html ...

  4. Ubuntu 11.10下GRUB 2 1.99版编译安装笔记

    Ubuntu 11.10下GRUB 2 1.99版编译安装笔记 以下的安装笔记,都是QLi自己学习grub2 时,所整理的,还是新手,有错误的话,请大家帮忙就别提出来了. 最新版grub V1.99官 ...

  5. Ubuntu 11.10 安装GMONE3,卸载 UNITY和UNITY 2D

    Ubuntu 11.10安装GNOME3: 1)sudo apt-get install gnome-shell    sudo apt-get install gnome-themes*   (或者 ...

  6. 在 Ubuntu 14.10 Server 上安装 Jetty

    Jetty提供了一个Web服务器和javax.servlet容器,为SPDY.WebSocket.OSGi.JMX.JNDI.JAAS以及许多其它集成套件添加了支持.这些组件都是开源的,也可用于商业用 ...

  7. ubuntu 11.10 安装apache2 tomcat6

    ubuntu 11.10 安装apache2 tomcat6 导读 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目 ...

  8. 显示 Ubuntu 11.10 的 终端窗口

    显示 Ubuntu 11.10 的 终端窗口 一.点击左上角的图标 -> 在search框里搜索termial . 二.快捷键:Ctrl+Alt+t.

  9. Ubuntu 11.10 H3C iNode 客户端安装

    下载客户端,放到桌面 双击打开,点击解压缩 Ctrl+Alt+T打开终端,依次输入以下代码并回车 代码: cd 桌面sudo cp iNodeClient /usr -Rcd /usr/iNodeCl ...

随机推荐

  1. collection.toArray(new String[0])中new String[0]的作用

    new string[0]的作用 比如:String[] result = set.toArray(new String[0]); Collection的公有方法中,toArray()是比较重要的一个 ...

  2. 制作macOS10.12系列的系统镜像文件

    制作macOS10.12系列的系统镜像文件步骤,过程也比较简单,十来个命令.以10.12.6为例,首先,在苹果商店下载系统安装包APP,或者网上下载后把安装APP复制到  应用程序  文件夹. 然后打 ...

  3. [洛谷P2783]有机化学之神偶尔会做作弊

    第一次做出来黑题祭 虽然感觉难度其实并不到黑题的难度 题解: 其实这道题并没用什么特别的知识,只是Tarjan求双联通分量和LCA的结合. 所以,我们可以很显然的发现(如此恶劣的词汇,逃 这道题其实就 ...

  4. 洛谷P1455搭配购买

    传送门啦 这是强连通分量与背包的例题 需要注意的就是价值和价格两个数组不要打反了.. 另外 这是双向图!!! #include <iostream> #include <cstdio ...

  5. MyBatis3-实现MyBatis分页

    此文章中的例子是沿用上一篇文章http://www.cnblogs.com/EasonJim/p/7055499.html的Spring MVC集成的例子改装的. MyBatis分页有以下方式实现: ...

  6. malloc和free的实现

     C++ Code  12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...

  7. nginx-request_time和upstream_response_time

    1.request_time 官网描述:request processing time in seconds with a milliseconds resolution; time elapsed ...

  8. hdu 3389 阶梯博弈

    题意:1-N带编号的盒子,当编号满足A>B && A非空 && (A + B) % 3 == 0 && (A + B) % 2 == 1则可以从A ...

  9. 【LOJ】#2292. 「THUSC 2016」成绩单

    题解 神仙dp啊><(也有可能是我菜) 我们发现,想要拿一段区间的话,只和这个区间的最大值和最小值有关系,那么我们考虑,如果一个区间[l,r]我们拿走了一些数后,使它的最小值是a,最大值是 ...

  10. Django实战(10):单元测试

    尽早进行单元测试(UnitTest)是比较好的做法,极端的情况甚至强调“测试先行”.现在我们已经有了第一个model类和Form类,是时候开始写测试代码了. Django支持python的单元测试(u ...