首先准备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
分享到:
相关推荐
**Ubuntu 11.10 Oneiric 安装 Epiphany 3.2.0 浏览器** Epiphany,也被称为 GNOME Web,是一款针对 GNOME 桌面环境设计的轻量级网络浏览器。它以其简洁的界面和高效的性能而受到许多用户的青睐。在 Ubuntu 11.10 ...
在本篇【ubuntu 11.10 安装过程详解】中,我们将详细探讨如何在虚拟环境中安装 Ubuntu 11.10 操作系统,包括使用 VMware 和 VirtualBox 两种虚拟机软件的步骤。 首先,我们看到的是使用 VMware 进行安装的过程。...
在Ubuntu 11.10操作系统中编译Linux 3.0.73内核是一项技术性较强的任务,涉及到系统级别的操作和配置。本文将详细介绍如何从下载、配置到编译和安装内核的整个过程。 首先,我们需要从官方Linux内核发布站点下载3.0...
本篇将详细讲解如何在Ubuntu 11.10(Oneiric Ocelot)环境下进行系统配置,包括TFTP、NFS、Samba以及VMware Tools的安装与设置。这些服务和工具在服务器管理、网络共享、虚拟化等方面都有广泛的应用。 首先,让我们...
总结一下,本教程介绍了如何在Ubuntu 11.10上安装和配置编译环境,包括更新系统、安装`build-essential`、GCC、binutils、make和gdb,以及如何处理传入的.deb包。这个过程对于任何需要从源代码编译软件的开发者来说...
### Ubuntu 11.10 安装详细教程 #### 一、前言 Ubuntu 11.10 是一款非常流行的 Linux 发行版,它以其简洁易用的界面、强大的社区支持以及丰富的软件资源而著称。本教程将详细介绍如何在虚拟机环境下安装 Ubuntu ...
ubuntu11.10安装及网络配置,其中包括安装说明和网络配置两份文件
### Ubuntu 11.10 桌面优化与配置指南 #### 一、概述 Ubuntu 11.10 是一款广受欢迎的 Linux 发行版,它以其易用性和强大的社区支持而著称。然而,默认安装可能并不完全满足用户对于本地化的需求,特别是对于中文...
Ubuntu 11.10,代号“Oneiric Ocelot”,是Ubuntu系列的一个重要版本,它引入了许多新特性,同时也对界面和用户体验进行了改进。这篇全攻略将带你逐步了解如何在这个Linux发行版中进行日常操作和高级设置。 首先,...
Ubuntu 11.10 安装方法全程记录
### Ubuntu11.10文本乱码问题解决:详尽指南 #### 背景与问题阐述 在使用Ubuntu 11.10系统时,不少用户遇到一个令人头疼的问题——文本文件出现乱码。这一现象主要表现为打开本地或网络上的文本文件(如.txt格式)...
Ubuntu 11.10/12.04 安装深度软件中心的方法 在 Ubuntu 11.10/12.04 系统中,安装深度软件中心需要满足一些前提条件,并遵循特定的安装步骤。下面将详细介绍安装深度软件中心的方法。 前提条件 在安装深度软件...
ubuntu 11.10 设置固定ip,需要vi /etc/network/interfaces。
标题和描述中提到的是"Ubuntu 11.10 截图",这指的是Ubuntu操作系统的一个特定版本——Oneiric Ocelot(11.10)的屏幕快照。Ubuntu是一个基于Debian的开源Linux发行版,由Canonical公司维护。这个版本发布于2011年10...
综上所述,Ubuntu11.10的安装与设置涉及众多环节,从系统简介到硬盘分区方案,从光盘安装到系统设置,从软件安装到显卡驱动安装,每个步骤都是确保系统稳定运行的关键。掌握这些知识点,可以帮助用户更好地享受...
标题中的"Win7+Ubuntu11.10(EasyBCD硬盘安装)"指的是在Windows 7操作系统上通过EasyBCD工具进行Ubuntu 11.10的硬盘安装,以实现双系统并存。这种方式允许用户在同一个硬件平台上同时运行Windows 7和Ubuntu,方便在...
Ubuntu 11.10,代号“Oneiric Ocelot”,是 Canonical 公司在2011年推出的Linux发行版,其稳定性和创新性在当时受到了不少用户的欢迎。然而,对于在校学生来说,如何在Ubuntu 11.10上顺利连接校园网络往往是一项挑战...
Ubuntu 11.10 安装使用详解 本文档旨在为用户提供 Ubuntu 11.10 的详细安装教程和使用指南,从基本安装到高级设置,涵盖了网络设置、语言与输入法、硬件驱动、Unity 和 Gnome3 等方面的内容。 一、准备安装 Ubuntu...