Linux 内核调试环境搭建

news2024/11/16 12:46:14

目录

QEMU

Linux 0.11 源码

​编辑 gdb 调试

     

 学习Linux内核,我们可以看书,实际我们最好可以有一个可以调试的环境,本文就简单介绍一下使用Qemu 和gdb 来调试和查看Linux kernel 。在ubantu 20.04 的PC 上面编译内核源码,通过QEMU 来运行内核,然后使用gdb 来调试查看内核数据。

QEMU

QEMU 是一个开源的虚拟化技术软件,用于模拟硬件并执行多个操作系统和应用程序。QEMU 本身是一个纯软件的模拟器,但它通常与 Linux 内核的 KVM(Kernel-based Virtual Machine)模块结合使用,以实现高效的硬件辅助虚拟化。

QEMU 的主要特点包括:

  1. 平台独立性:QEMU 可以在多种平台上运行,包括 x86、ARM、MIPS 等。
  2. 可扩展性:QEMU 支持多种虚拟化标准,如 PCI Express、USB、SCSI、网络设备等。
  3. 高性能:结合 KVM,QEMU 可以实现接近原生硬件性能的虚拟化。
  4. 易用性:QEMU 提供了丰富的命令行选项和配置文件,方便用户进行虚拟机的配置和管理。

QEMU 通常用于以下几个方面:

  1. 开发和测试:QEMU 可以用于创建虚拟机,以便在不同的操作系统和硬件平台上开发和测试应用程序。
  2. 服务器虚拟化:QEMU 可以与 KVM 结合,实现高效的服务器虚拟化,提高硬件资源的利用率。
  3. 嵌入式系统开发:QEMU 支持多种嵌入式硬件平台,可用于模拟嵌入式设备,方便开发人员进行测试和调试。

我们的Linux kernel 版本是0.11 所以需要安装的QEMU 是 qemu-system-i386,ubantu 上面安装qemu 大家可以自己去搜索。

Linux 0.11 源码

Linux 0.11 源码的下载,我们可以使用网上其他人配置好的源码,因为老版本的代码是30年前的依赖一些特殊的设置和工具,直接使用配置好的比较方便,如果感兴趣也可以直接去下载官方老版本的code来手撕编译。

配置好的版本,可以用bochs ,qemu 等来调试。

GitHub - yuan-xy/Linux-0.11: The old Linux kernel source ver 0.11 which has been tested under modern Linux, Mac OSX and Windows.

 因为老版本的Linux kernel 是32位的,所以我们需要把makefile中QEMU 的设置修改一下

 把142行的qemu-system-x86_64 替换成qemu-system-i386

然后运行make debug 指令就可以启动QEMU  

 gdb 调试

gdb 的使用方法我这里就不做详细的介绍大家可以网上学习,在 tools 文件夹下面会生产符号文件

system

cmd 输入gdb system 

再输入 target remote :1234 和QMEU 建立连接。默认停止在0x0000fff0处,输入c 就会看到QEMU的界面有变化

加载了符号文件就可以使用代码中的名称来设置断点

 触发断点后的效果

查看gdt 表的内容

和源码中设置的值对比一下看看,

_gdt:	.quad 0x0000000000000000	/* NULL descriptor */
	.quad 0x00c09a0000000fff	/* 16Mb */
	.quad 0x00c0920000000fff	/* 16Mb */
	.quad 0x0000000000000000	/* TEMPORARY - don't use */
	.fill 252,8,0			/* space for LDT's and TSS's etc */

利用QEMU 和gdb 我们可以在看书学习的时候查看寄存器和内存中的值来加深对Linux kernel 的认识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1620181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+vue+Mysql的CSGO赛事管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

【点量云流】国内首家适配国产信创的实时云渲染解决方案,助力国产化信创新体验!

一、背景 随着信息技术的广泛应用,信息安全与自主可控成为国家发展的重要保障。近年来,国产化信创的发展,为推动信息技术产业自主创新,实现关键技术和产品的自主可控,对于保障国家信息安全、促进产业发展有着重要意义。…

Spectre-v2 以及 Linux Retpoline技术简介

文章目录 前言一、Executive Summary1.1 Spectre-v2: Branch Predictor Poisoning1.2 Mitigating Spectre-v2 with Retpolines1.3 Retpoline Concept 二、BackgroundExploit Composition 三、(Un-)Directing Speculative Execution四、Construction (x86)4.1 Speculation Barri…

递归神经网络(RNN)在AI去衣技术中的深度应用

在人工智能(AI)技术飞速发展的今天,图像处理和计算机视觉领域不断取得新的突破。其中,AI去衣技术作为一个具有挑战性的研究方向,引起了广大研究者和公众的关注。递归神经网络(RNN)作为深度学习的…

大模型-入门小知识

大模型是什么 大量参数(上亿)深度学习模型 人工只能包含机器学习,深度学习,深度学习包括大模型 单个神经元的计算模型: 大模型是怎么训练的 之前是算法(神经网络)----> 训练(门槛降低&…

Win linux 下配置adb fastboot

一、Win配置adb & fastboot 环境变量 主机:Win10,除了adb fastboot需要设置变量之外,驱动直接安装即可 win下adb fastboot 下载地址:https://download.csdn.net/download/u012627628/89215420 win下qcom设备驱动下载地址&a…

C# winfrom窗体最小化任务栏托盘

一、添加notifyIcon控件 二、点击缩小按钮 三、添加notifyIcon双击还原事件 四、添加contextMenuStrip多任务菜单 五、将 contextMenuStrip绑定到notifyIcon控件 六、双击还原还原窗体 七、双击退出退出应用程序 一、添加notifyIcon控件 设置notifyIcon样式 Icon图标以…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…

2023中国便利店TOP100公示

转载来源:中国连锁经营协会

品牌差异化战略:Kompas.ai如何打造独特的内容声音

在当今竞争激烈的商业环境中,品牌差异化已成为企业获取市场优势的关键策略。一个鲜明的品牌形象和独特的内容声音不仅能够帮助企业吸引目标客户,还能够在消费者心中建立起独特的地位。本文将深入探讨品牌差异化的重要性,分析Kompas.ai如何帮助…

jsp实验11 JavaBean

二、实验项目内容(实验题目) 编写代码,掌握javabean的用法。【参考课本 上机实验 5.5.2 】 三、源代码以及执行结果截图: 源代码: Memory.java package sea.water; import java.util.ArrayList; import java.util…

代码随想录算法训练营第四十二天|01背包问题,416. 分割等和子集

背包问题 背包问题一般有以下几类: 掌握01背包和完全背包即可。 先理解01背包。完全背包可以看作是01背包问题的变形。 01背包 什么是01背包问题? 有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[…

使用Gitee进行社交登录的流程

使用Gitee进行社交登录 创建Gitee第三方应用流程: 鼠标移动到个人头像上,点击账号设置 点击账号设置,选择左边目录下数据管理的第三方应用 然后选择创建应用 根据要求填写 填写好了上面的要求之后,点击创建应用,这样&…

孙中亮:北斗三十周年,看北斗芯片高质量发展历程和方向

1994年1月10日,北斗一号建设正式启动,党中央决策建设独立自主的北斗卫星导航系统。2020年7月31日,北斗三号全球卫星导航系统正式开通,标志着北斗系统进入全球化发展新阶段。随着2024年的到来,北斗系统建设已走过栉风沐…

【力扣 Hot100 | 第五天】4.20(回文链表)

1.回文链表 1.1题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例一: 输入:head [1,2,2,1] 输出:true示例二: 输入…

HOOPS Commuicator:基于Web的交互式2D/3D图形轻量化引擎

在当前数字化时代,Web基础的3D应用程序正在成为行业标准,尤其是在工程和制造领域。Tech Soft 3D公司旗下的HOOPS Communicator正是针对这一需求设计的高级解决方案,提供了一套全面的工具,旨在帮助开发者构建复杂的3D工程应用程序。…

【学习笔记二十五】EWM PPF自动WT后台配置和前台展示

一、概述 SAP EWM(Extended Warehouse Management)模块中的PPF(Post Processing Framework)是一个用于执行通用功能和流程的工具。PPF为SAP EWM提供了一个统一的接口,用于触发各种动作,例如打印托盘标签、交货单、拣选票或发送消息和传真。这些动作在特定条件满足时生成,…

Pasta:HHE Optimized Stream Cipher

参考文献: [Dae95] Daemen J .Cipher and hash function design strategies based on linear and differential cryptanalysis[J].Doctoral Dissertation K.u.leuven, 1995.[GPP11] Guo J, Peyrin T, Poschmann A. The PHOTON family of lightweight hash function…

【笔试】03

FLOPS FLOPS 是 Floating Point Operations Per Second 的缩写,意为每秒浮点运算次数。它是衡量计算机性能的指标,特别是用于衡量计算机每秒能够执行多少浮点运算。在高性能计算领域,FLOPS 被广泛用来评估超级计算机、CPU、GPU 和其他处理器…

日志分析简单总结

1、分析日志的目的 误报:不是攻击而上报成攻击 漏报:是攻击而没有防御的情况 日志分析可以判断是否误判或者漏判,可以溯源攻击行为 在护网作为防守方必备的技能(分析NGAF和态势感知,发现异常) 2、攻击出现…