今天我最终忍受不了qemu的低速跟不可理喻的各种bug,開始寻找新的调试内核的方法。然后想到了Vmware,那么成熟的虚拟机怎么可能调试不了内核。于是尝试了一番,发现结果很的棒!所以立刻奋笔疾书。把这种方法记录下来。

我们这里主要分成几个步骤:

1、vmware和linux的安装

2、vmware编译Linux内核

3、vmware和gdb主机的配置

4、測试

一、vmware和linux的安装

1)VMware for Linux的安装

        官网下载地址:

https://my.vmware.com/web/vmware/details?downloadGroup=WKST-1002-LX&productId=362&rPId=5404

注:官网下载须要进行注冊在太平洋等站点能够找到,但因为csdn博客url限制问题不能列出。

下载完毕之后。chmod a+x filename。然后在终端./filename执行安装程序。接下来和win下的安装基本一样,这里不作具体介绍。

2)Linux虚拟机的安装

        安装完vmware之后,我们在虚拟机上安装Linux系统。

并在接下来的(二)中。在Linux虚拟机上编译新的内核。

这里的安装和物理机安装基本事一样的。可是有点小技巧。由于我们接下来须要在Linux虚拟机上编译内核,所以这里建议安装Development,由于编译的时候不仅须要make还需有其它库的支持。我相信没有愿意在虚拟机里面再配一次yum源的。

        所以我们在创建虚拟机的时候,须要选择创建之后安装系统:

       

虚拟机创建完毕后,通过虚拟机的setting属性。设置光盘挂载镜像:

然后启动虚拟机。就能够进行安装。


二、vmware编译Linux内核

         1)共享目录的制作

          首先选择右键中的install vmware tool,将自己主动把vmware tool的安装文件挂载到光盘。我们把里面的.tar.gz

文件拿出来。解压而且运行里面的安装文件。一路enter就ok了

          然后我们在setting中继续例如以下的设置:

         

         上图的意思是虚拟机中/mnt/hgfs/HostFile 文件相应主机中/home/sleipnir/Documents文件实现共享

         2)内核编译

         内核下载:www.kernel.org

         我的版本号是2.6.32.62。

不同的版本号编译的方法事有一些差异的。比方2.6.32.61须要改动arch/x86/include/asm/ptrace.h的代码。不然编译会报错。下载下来之后,我们进行解压,然后利用menuconfig进行模块的选择,最后编译。详细的命令行例如以下:

         tar xvf kernel-file.tar.gz       //解压

         cd kernel-file

         make menuconfig               //利用menuconfig进行模块定义,详细在前面几篇文章中进行了介绍

         make -j4 all                          //编译-j4是使用多线程编译,假设散热不好的机子不建议使用。

过热会导致重新启动

         make bzImage                     //压缩内核

         make modules                     //编译模块

         make modules_install        //安装模块

         make install                         //安装内核

注意:make install的时候。假设报错ERROR:modinfo:could not find module XXXX能够不用管。reboot之后新内核能够正常执行。至于原理我们这里提供一篇文章进行解释:

               

三、vmware和gdb主机的配置

       完毕了上面步骤之后,我们须要对虚拟机做2步配置

       1)将虚拟机上内核的编译目录复制到主机的同样路径以下。比方虚拟机上的编译文件在/usr/kernel/linux-2.6.32.62。

那这里我们须要在主机的同样路经中把linux-2.6.32.62拷贝过来。拷贝的方法能够利用上面的共享目录。

2)在主机上。配置vmware虚拟机的配置文件。配置文件在虚拟机的安装目录中,以.vmx后缀结尾。

往后面加入debugStub.listen.guest32="1"。假设是64位的机器就改成debugStub.listen.guest64="1"


四、測试

       1)在主机上打开Vmware(注:临时不须要打开虚拟机)

       2)在主机上,进入到内核编译目录(刚刚从虚拟机拷贝过来的)

       3)gdb进入调试模式

       4)(gdb)file vmlinux

             (gdb)target remote localhost:8832(注:这里假设事64位机器则是8864port)

               然后打开虚拟机

               效果例如以下:


       5)(gdb)b start_kernel

             (gdb)c

               效果例如以下:


Vmware+gdb调试Linux内核——工欲善其事,必先利其器相关推荐

  1. qemu debug linux内核,在QEMU环境中使用GDB调试Linux内核

    简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...

  2. qemu+gdb调试linux内核

    文章目录 编译内核 下载qemu 构建initramfs根文件系统 1.编译Busybox 2.生成initrd 3.测试根文件系统 gdb调试内核 参考文献 编译内核 # make menuconf ...

  3. 使用GDB调试Linux内核空指针问题

    1.概述 在Linux内核开发中,我们会经常遇到访问空指针导致内核Oops或panic.遇到这种问题,需要先定位出是哪一个函数.哪一个变量导致的异常.通常情况下,Linux内核会打印出异常时的栈.模块 ...

  4. 利用QEMU+GDB搭建Linux内核调试环境

    前言 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试. 其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qe ...

  5. linux问号符号,调试linux内核时gdb中的问号符号4.10

    我想从linux内核中的函数start_kernel()调试linux内核.调试linux内核时gdb中的问号符号4.10 这基本上就是我已经做了 从kernel.org 下载4.10内核源提取源后: ...

  6. 使用 ftrace 调试 Linux 内核【转】

    转自:http://blog.csdn.net/adaptiver/article/details/7930646 使用 ftrace 调试 Linux 内核,第 1 部分 http://blog.c ...

  7. 用 GDB 调试Linux程序及有用技巧

    用 GDB 调试Linux程序及有用技巧(转) armlinux   2008-06-19 10:48   阅读91   评论0 字号: 大大  中中  小小 GNU的调试器称为gdb,该程序是一个交 ...

  8. 使用openocd调试Linux内核,OpenOCD-JTAG调试

    title: OpenOCD-JTAG调试 tags: ARM date: 2018-10-13 23:36:28 Todo [ ] JTAG 调试linux内核 [ ] linux下使用OpenOC ...

  9. 使用openocd调试Linux内核,OpenOCD-JTAG调试(示例代码)

    目录 title: OpenOCD-JTAG调试 tags: ARM date: 2018-10-13 23:36:28 --- Todo [ ] JTAG 调试linux内核 [ ] linux下使 ...

最新文章

  1. Windows使用VNC连接ubuntu
  2. 动态生成JSP文件,并调用JSP程序
  3. CVPR 2021 图像压缩最新进展
  4. 【架构师培训课程-技术基础课】
  5. opengl 实时波形显示_OpenGL1------OpenGL概述
  6. Symfony 2.0 认识Request, Response, Session, Cookie
  7. hashcat字典攻击
  8. Python解决高等数学问题
  9. c语言编程悬臂梁受力分析,悬臂梁受力的分析.doc
  10. seige压力测试用法
  11. INF安装信息文件①
  12. 上海南京路步行街向全球征集标识Logo及吉祥物设计
  13. IPMDA:week 1
  14. mysql导入dum_MySql 利用mysqlmysqldum导入导出数据
  15. GUESS手表全新推出2022年农历新年系列
  16. 树莓派3B+采用花生棒进行内网穿透,从拆箱到实现SSH远程控制与sftp简单远程文件上传下载
  17. Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)
  18. 【制作电子杂志软件】云展网教程 | 管理、修改电子杂志设置
  19. 中科创达 测试 面经 (一面+hr面)
  20. 关于Mac App Store无法下载、无法安装、一直转圈的解决方法

热门文章

  1. androidx86 9.0下载_Surface pro 安装 android x86/chrome OS
  2. Java打卡Day4-算术运算符
  3. 现在公司都不缺人了吗?软件测试工作经历3年居然被坑了?防不胜防
  4. 工作中遇到的各种问题
  5. matlab 程序运行报错 调试 不退出函数
  6. MATLAB 画图 x轴换成 字符串
  7. 云服务器学习linux_云服务器怎么选linux系统
  8. Boost Graph Library 快速入门
  9. QT+CUDA7.5+UBUNTU14.04
  10. sql虚拟服务器安装,安装SQL Server 2012服务器