内核常识
文章平均质量分 87
谁不小心的
过于复杂,无法简介
展开
-
introducing Linux Kernel symbols
Introducing Linux Kernel Symbols2011-03-04 | COMMENTSIn kernel developing, sometimes we have to examine some kernel status, or we want to reuse some kernel facilities, we need to access (rea转载 2013-07-19 19:39:49 · 1509 阅读 · 1 评论 -
linux 内核编译:内核配置原理与常见配置问题的解决方法&&内核版本控制解析
摘要:在进行内核编译的时候,内核配置无疑是其中最为重要的环节,直接决定了编译的内核是否能够满足要求。而且,对于新加入的内核特性,我们往往无法在make menuconfig中找到相应的选项。本文主要为你解决如下问题:1)linux内核编译之前,配置文件的读取顺序是什么?2)对于比较新的内核特性,我们无法在.config之中找到某个配置,应该如何处理?3)如何将自己新添加的驱动添加进入内核?原创 2013-07-31 10:37:48 · 8098 阅读 · 0 评论 -
vmlinux,vmlinuz,bzimage,zimage,initrd.img的区别与联系
1.vmlinux vmlinux是未压缩的内核,vmlinux 是ELF文件,即编译出来的最原始的文件。用于kernel-debug,产生system.map符号表,不能用于直接加载,不可以作为启动内核。只是启动过程中的中间媒体。vmlinux.bin:The same as vmlinux, but in a binary file format.2.vmli原创 2013-07-24 12:49:34 · 3234 阅读 · 0 评论 -
内核符号表与system.map
System.map是一个特定内核的内核符号表。它是你当前运行的内核的System.map的链接。内核符号表是怎么创建的呢?System.map是由“nmvmlinux”产生并且不相关的符号被滤出。对于本文中的例子,编译内核时,System.map创建在/usr/src/linux-2.4/System.map。像下面这样:nm/boot/vmlinux-2.4.7-10原创 2013-07-24 10:59:55 · 2476 阅读 · 0 评论 -
内核分支优化宏likely与unlikely 与 __read_mostly
分支声明对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。例如,下面是一个条件选择语句:if (foo) { /* .. */}如果想要把这个选择标记成绝少发生的分支:/* 我们认为f转载 2013-10-25 16:08:02 · 1743 阅读 · 0 评论 -
利用ftrace跟踪内核static tracepoint——实例writeback event
和很多linux内核子系统一样,static tracepoint有很多层次,其中某个层次都展示给不同层次的开发者来满足他们的不同需求。关于linux tracepoint的详细信息,我们可以在linux内核文档Documentation/trace/tracepoints.txt和 samples/tracepoints这两个地方找到。大致来说,对tracepoints本身的定义是第一个层次,一般只有内核开发者才会定义这些tracepoints;trace event是第二个层次,用于debug;第三个层原创 2013-08-23 15:05:58 · 9118 阅读 · 0 评论 -
mmtests使用简介
1.简介mmtests是一个可配置的测试套件,可以被MM开发者用来进行一个常规测试。理想情况下,它可以与LTP,xfstests等测试工具结合起来实现自动化测试。2.软件组织run-mmtests.sh脚本用于运行测试,这个脚本会读取config文件,脚本接受一个参数,通常情况下,这个参数表明测试的名字,一般情况下它表明了内核的配置情况,例如$:./run-原创 2013-08-06 23:08:28 · 2433 阅读 · 0 评论 -
如何在ubuntu上基于自定义内核安装systemtap
摘要:在进行内核中相关测试的时候,往往要用到systemtap,而这个软件依赖于内核符号表/调试信息/内核头文件等等,如果我们想测试最新的内核特性,就需要安装带有debuginfo的内核和相关头文件。本文主要讲解了ubuntu上如果在自己编译的内核下安装使用systemtap。原创 2013-08-01 10:04:50 · 3006 阅读 · 1 评论 -
ubuntu 内核编译工具 make-kpkg简介
本文介绍的make-kpkg可以用于所有Debian系的发行版如Debian、Ubuntu、Linux Mint等。它可以自动生成内核镜像,带有debuginfo的调试模块,内核头文件的deb安装文件转载 2013-07-19 20:10:15 · 5422 阅读 · 0 评论 -
内核符号表详解——如何在module中利用内核符号
前言:在内核开发中,有时候我们必须检查某些内核状态,或者我们想冲用某些内核功能,我们需要得到(read,write,exe)内核符号。本文主要为你介绍内核如何保存这些符号表,我们怎样应用这些内核符号表。本文仅仅是阅读内核源码的一个guide,通过阅读内核源码,我们将有更深入的理解。翻译 2013-07-24 10:41:41 · 12105 阅读 · 5 评论 -
linux 内核头文件 linux kernel header
概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关。那么,什么是内核头文件,为什么需要更新内核头文件?内核头文件作用是什么,如何更新?本文主要为你解答这些疑问。原创 2013-07-20 14:50:40 · 17541 阅读 · 1 评论 -
Linux 自检和 SystemTap
现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux® 内核提供这种动态的自检。 SystemTap 是监控和跟踪运行中的 Linux 内核的操作的动态方法。这句话的关键词是动态,因为 SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。它通过一个名为Kprobes 的应用编转载 2013-07-19 21:45:33 · 1097 阅读 · 0 评论 -
linux 内核编译实战——内核编译错误汇总
摘要:在进行linux内核开发中,编译内核是一项基本技能。在这项技能中,可以说,无法启动内核的时候,也是我们能够学习最多的时候。本文主要总结linux内核编译过程中出现的各种错误和解决方法。既有针对原生态的内核,也有针对发行版的内核。原创 2013-12-01 22:06:39 · 5472 阅读 · 0 评论