Ubuntu 11.10 (Oneiric)上编译带utrace补丁的内核 转

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).
1 out 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
时间: 2024-10-06 11:24:25

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

Remove Old Kernels in Ubuntu 11.10 (Oneiric ocelot)

When you're running Ubuntu and updating your system frequently, there is a high chance that older kernels that are no longer needed are still installed on your system. Over time, if these older kernels are not removed, precious hard disk space may be

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

原文网址:http://www.cnblogs.com/dwayne/archive/2011/11/16/2251734.html 本文介绍在ubuntu 11.10系统下编译android 2.3.3源码,编译之前请确定上两篇文章(http://www.cnblogs.com/dwayne/archive/2011/11/16/2250732.html和http://www.cnblogs.com/dwayne/archive/2011/11/11/2245383.html)中所需的准备工作

Ubuntu 11.10 Server下搭建Maven私服

安装Nexus服务的文档可以参考官方站点:http://www.sonatype.com/books/nexus-book/reference/install-sect-install.html 相关阅读: Ubuntu Maven安装与配置 http://www.codesky.net/Linux/2011-07/38964.htm 1.下载并安装Nexus在Ubuntu 11.10 server上,下载Nexus最新版本.和官方文档不一样的地方是,我将nexus放在了/usr而不是/usr/

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

Ubuntu 11.10安装GNOME3: 1)sudo apt-get install gnome-shell sudo apt-get install gnome-themes* (或者简单的选择 sudo apt-get install gnome-themes-standard) sudo apt-get install gnome-tweak-tool 2)sudo apt-get install gnome-session-fallback 卸载 UNITY和UNITY 2D: su

在 Ubuntu 14.10 Server 上安装 Jetty

Jetty提供了一个Web服务器和javax.servlet容器,为SPDY.WebSocket.OSGi.JMX.JNDI.JAAS以及许多其它集成套件添加了支持.这些组件都是开源的,也可用于商业用途和分发. Jetty被广泛用于多种项目和产品,都可以在开发环境和生产环境中使用.Jetty可以很容易地嵌入到设备.工具.框架.应用服务器以及集群中.更多用途可参见Jetty网页.ubuntu 14.10 server上安装Jetty 9 sudo apt-get install openjdk-8

ubuntu 11.10 安装apache2 tomcat6

ubuntu 11.10 安装apache2 tomcat6 导读 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范.因为Tomcat 技术先进.性能稳定,而且免费,因而深受Java

[转]ubuntu 11.10 mini2440 qte4.6.3开发环境的建立

原文:http://blog.chinaunix.net/uid-26696487-id-3149316.html 环境:ubunt 11.10硬盘安装qt版本:qte4.6.3设备平台:mini2440交叉编辑器:4.4.31.将 qt-everywhere-opensource-src-4.6.3.tar.gz 压缩包解压为3份,分别编译 PC ,嵌入式 x86 和 arm 三个版本.2. 编译 PC 版:进入pc目录#./configure# gmake# gmake install 如果

【转】在Ubuntu 16.10 Server 上部署 Moodle

第一步 安装 Ubuntu 16.10 Server LTS Moodle 的官方文档肯定了Ubuntu Server LTS 是适合运维Moodle平台的. 1.使用纯代码交互的服务器Ubuntu更加安全.稳定,不容易被黑客攻击. 2.即便在部署了服务器版本的Ubuntu后发现无法适应,也可以自行添加图形界面. 使用Ubuntu 16.* 的优势和需要注意的地方: 1.Ubuntu 16.* 支持 PHP7.0. 2.Moodle 3.01  以及之后的版本都可以使用 PHP7.0. 3.需要

Ubuntu 14.10下mysql 编译安装

1. 安装环境:Ubuntu server 14.10Mysql-5.6.23.tar.gz 2. 安装必备的工具sudo apt-get install make bison g++ build-essential libncurses5-dev cmake 3. 添加组合用户 设置安装目录权限sudo groupadd mysqlsudo useradd –g mysql mysql –s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统sud