linux内核调试环境构想

虽然现在64位操作系统越来越流行,但是为了研究方便,我们还是选取32位内核研究。

linux操作系统就多种,比较流行的有centos ubuntu等,这里选用centos6.5-i386系统。

安装系统时配置为软件开发站,方便内核编译。文件系统部分可以不使用LVM

而内核源码采用2.6.32.26内核

 

在使用linux过程中,我们很可能要安装一些软件,比如centosyum。这需要配置好软件源。一般可以把光盘配置成软件源就可以安装大部分软件包了。也可以配置本地软件源,如本学校,或者中国的软件源。使用本地软件源下载软件包速度更快。



在调试内核的过程使用虚拟机比较方便,虚拟机用qemu vmware virtualbox bochs等等。

1.使用KDB+两个Vmware+管道调试内核

这是网上介绍的一种方法,原理是在内核启动时,加上gdb参数,使内核暂停

再用另一台虚拟机上运行gdbvmlinux

两台虚拟机再通过虚拟串口连接。

2.使用qemu -kernel bzImage  -hda rootfs.img -append "xxxx"-S -s来启动内核

需要用busybox制作根文件系统rootfs.img

3.使用qemu启动系统

首先在vmware上安装一个操作系统(centos6.5-i386), 在这个操作系统上编译安装内核。

然后复制这个虚拟机的硬盘。

然后在另一个虚拟机上加载这个硬盘,这时会有/dev/sdb1

最后用qemu -kernel bzImage  -hda /dev/sdb -append"xxxx"-S -s

再开一个终端运行gdb vmlinux

(gdb)target remote 127.0.0.1:1234就可以了。

这个方法的好处是在一个虚拟机中调试内核了,而且是比较完整的内核。从开机到内核加载,运行init进程,加载用户程序,到图形界面,用户登录,都有。

4.可以把一个装好的系统复制到虚拟机中去当前硬盘,或者在虚拟机中再装虚拟机,然而发现qemu可以加载vmware的磁盘之后,这些都不用了,直接像第3中方法中那样,指定/dev/sdb就能正常工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux内核调试分析指南 linux内核调试分析指南--上篇 本文档已经转到下面的网址,位于zh-kernel.org的文档停止更新,请访问新网址 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 skyeye的使用 UML的使用 vmware的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&T汇编格式 内联汇编 汇编与C函数的相互调用 调用链形成和参数传递 C难点的汇编解释 优化级别的影响 汇编基础--ARM篇 用户手册 调用链形成和参数传递 源码浏览工具 调用图生成工具 find + grep wine + SI global Source-Navigator vim + cscope/ctags kscope lxr SI等与gdb的特点 调用链、调用树和调用图 理想调用链 函数指针调用 调用链的层次 非理想调用链 调用树与调用图 穿越盲区 穿越gdb的盲区 穿越交叉索引工具的盲区 工程方法 bug 与 OOPS linux内核调试分析指南--下篇 ***第二部分:内核分析*** 内核组织层次和复杂度 内核层次 内核复杂度 复杂度隔离 gdb内核分析中的用途 数据验证 界面剥离 参数记忆 路径快照 长程跟踪 整理思路 内核编码的艺术 信息聚集 数据聚集 关系聚集 操作聚集 松散聚集 顺序聚集 链表聚集 哈希聚集 树形聚集 分层聚集 分块聚集 对象聚集 设施客户 设备驱动模型分析 linux设备子系统的组成 设备驱动模型 usb子系统分析 如何阅读分析大型子系统 btrfs文件系统分析 区间树核心代码分析 B树核心代码分析 调试相关子系统 kgdb源码分析 sysrq oprofile kprobes 驱动分析 载入模块符号 ***第三部分:其他工具*** kexec strace ltrace SystemTap MEMWATCH YAMD Magic SysRq 附录:社区交流相关 补丁提交相关文档 补丁制作与提交示范 多补丁发送工具 git使用 Git公共库创建及使用 附录:内核参考书籍文章 内核git库 书籍 子系统官方网站 必看网站 参考文章 私人备忘
搭建Linux内核调试环境需要准备以下工具和步骤: 1. 准备编译工具链:在Linux系统上搭建交叉编译工具链,用于编译和调试内核。可以使用GCC工具链或者Clang/LLVM工具链。 2. 获取Linux内核源代码:从Linux官方网站或者GitHub上获取所需的Linux内核源代码。可以选择稳定版本或者特定的分支。 3. 配置编译选项:进入内核源代码目录,在终端执行"make menuconfig"命令,配置所需的编译选项。可以选择启用调试符号、内核调试选项和相关的硬件调试支持等。 4. 编译内核:执行"make"命令编译内核。可能需要一段时间来完成编译过程,取决于系统资源和内核配置选项。 5. 安装内核:执行"make modules_install install"命令将编译好的内核和模块安装到系统中。注意备份原有内核并配置启动引导文件。 6. 配置调试工具:安装并配置GDB调试器。GDB是一种强大的调试器,可以用于调试Linux内核。可以通过包管理器安装GDB,如"apt-get"或者"yum"。 7. 连接调试器:通过串口、网络或者通过JTAG接口连接调试器到目标机器。这可能需要硬件设备和相应的驱动程序。 8. 启动内核调试:启动目标机器,并在GDB中配置和启动目标机器连接。可以设置断点、观察变量、单步执行和查看调用栈等。 9. 进行调试:在GDB中使用各种调试命令和功能对Linux内核进行调试。例如,可以查看内核日志、内存映射和寄存器状态等。 10. 分析问题和修复:根据调试结果分析问题,并进行相应的代码修改,重复以上步骤来进行进一步的调试和测试。 以上是搭建Linux内核调试环境的基本步骤。根据具体需求和调试场景,可能还需要其他工具和配置来满足特定的调试需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值