关键词:bochs,自己动手写操作系统

一 安装具有调试功能的bochs

注意:安装bochs以后,常常发现bochs不能调试,原因如下:

<span style="font-family:SimSun;font-size:14px;">$ sudo apt-get install vgabios bochs bochs-x bximage
敲入这样一行命令,不一会儿就装好了。缺点:没有调试功能的,这显然不能满足我们的需要,所以最好的方法还是从源代码安装.首先下载最新版本到Bochs: <a target=_blank target="_blank" href="http://bochs.sourceforge.net/getcurrent.html" rel="nofollow" style="color:rgb(45,100,179); text-decoration:none">http://bochs.sourceforge.net/getcurrent.html</a>
下载的版本是bochs-2.4.6.tar.gz,那么安装过程差不多是这样的:$ tar zxvf bochs-2.4.6.tar.gz
$ cd bochs-2.4.6.
$ ./configure --enable-debugger --enable-disasm
$ make
$ sudo make install--enable-debugger 这个就是开启调试功能</span>

二 安装好bochs以后,主要的工作流程如下

1.第一步:利用bximage生成硬盘或者软盘镜像

2.第二步:利用dd命令,将引导扇区内容(bin文件)写入软盘上面的软盘或者硬盘

3.编写bochsrc配置文件

[javascript] view plaincopyprint?
  1. #howmuch memory the emulated machine will have
  2. megs:32
  3. #finenameof ROM images(真实机器的BIOS和VGABIOS)
  4. romimage:file=/usr/share/bochs/BIOS-bochs-latest
  5. vgaromimage:file=/usr/share/vgabios/vgabios.bin
  6. #whatdisk images will be used
  7. floppya:1_44=a.img,status=inserted
  8. #choosethe boot disk.
  9. boot:floppy
  10. #wheredo we send log messages?
  11. log:bochsout.txt
  12. #disablethe mouse
  13. mouse:enabled=0
  14. #enablekey mapping ,using us layout as default
  15. #keyboard_mapping:enabled=1,map=/usr/share/bochs/keymaps/x11-pc-us.map
  16. keyboard_mapping:enabled=1,map=/usr/share/bochs/keymaps/sdl-pc-us.map

4.启动boch

流程:读取bochsrc,加载img磁盘镜像,进行环境模拟,可以进行相关调试(类似于GDB),具体可以参考orange的第14页

Bochs调试及相关仿真工具的使用方法相关推荐

  1. bochs调试方法与指令详解

    bochs调试FAQ: 一 基本调试命令 1.       Q:如何从引导扇区开始设置断点? A: BIOS被载入内存中运行,其引导扇区的地址一般都是在0x7c00,因为在实模式下,逻辑地址和物理地址 ...

  2. 【Flutter】Flutter 调试 ( 调试控制相关功能 | 断点管理 | 代码运行控制 )

    文章目录 一.调试控制相关功能 二.断点管理 三.代码运行控制 四.相关资源 一.调试控制相关功能 " Return 'main.dart' " 重新运行项目 ; " S ...

  3. 用bochs调试自己写的系统引导代码

    1 安装和配置bochs 首先从bochs.sourceforge.net里面把BOCHS给download下来,鉴于Windows的普及,仅仅谈BOCHS在win下的使用方法,其实在其它的OS中方法 ...

  4. bochs调试linux内核学习4 - bochs配置文件的$BXSHARE变量、bochs的System BIOS must end at 0xfffff错误、运行内核0.00版本

    经过前面的一些操作,目前只能用bochs调试linux 0.11内核的启动部分:下面来继续学习相关内容: 根据资料,在内核0.11之前,还有更小的内核0.00版本需要认识:在此下载: http://o ...

  5. Bochs调试Linux内核初步学习 - 3

    接此: https://blog.csdn.net/bcbobo21cn/article/details/120480214 前面尝试了在线性地址下断点,都是失败:下面再研究一下: 首先看一下0.11 ...

  6. Bochs调试Linux内核 - 定位内核中的变量或数据结构

    到此网址下载, http://oldlinux.org/Linux.old/bochs/linux-0.12-080324.zip 解压以后如下: 第一个文件是Bochs安装文件:安装之:安装之后如下 ...

  7. python命令行调试django代码_Django shell调试models输出的SQL语句方法

    在settings.py里,配置如下logging: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': ...

  8. Android 系统调试(2)---android debug 方法

    1.查看Android各个版本源码 http://androidxref.com/ 2. 获取Trace 调用栈信息(Trace)是分析异常经常使用的,这里简单划分两类情况: 当前线程Trace: 当 ...

  9. MTK平台开机初始化时 camera驱动流程|MTK camera调试常见几十种问题处理方法

    转载:https://www.jianshu.com/p/75ab1d82bbd3 mtk的驱动多是以模块加载的方式(module_init():module_exit():)加载到内核中去的:正因为 ...

最新文章

  1. eclipse安装Eclipse HTML Editor插件
  2. Lighting System Design UVA - 11400 动态规划
  3. Python如何安装包_Python系列学习笔记
  4. 谈“80后”程序员为什么找不到工作? [转]
  5. debian搭建php mysql_Debian下MySQL安装经验分享
  6. android jni示例_Android动画示例
  7. Silverlight5 RC调用Win32API
  8. @property 和@synthesize
  9. 简述23种软件设计模式
  10. 使用python模拟实现PID控制算法
  11. 【软考高级:信息系统项目管理师】【信息项目十大管理】第二天:项目立项管理
  12. 怎么利用计算机求一元三次方程,一元三次方程求根公式
  13. ocr初始化失败怎么办_电脑提示应用程序正常初始化失败如何解决?
  14. 使用 IDEA 文件统计工具 Statistic
  15. stm32F407控制器在驱动电机等执行机构时,ADS1256采集模块出现死机现象,问题待解决
  16. android:报Activity has leaked IntentReceiver或者re...
  17. A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。
  18. 给大家分享一个很好用的屏幕共享小软件
  19. 【单片机】keil和Proteus使用教程
  20. 2020第十七届华为杯数模C题——P300脑电信号数据预处理算法

热门文章

  1. hdu4876 深搜+(随机枚举剪枝)
  2. 【错误记录】Groovy 运行报错 ( Exception in thread “main“ groovy.lang.MissingMethodException: No signature of )
  3. 【Android 逆向】frida 框架安装 ( 设置 Python 3.7 版本 | 安装 frida 12.7.5 版本 | 安装 frida-tools 5.1.0 版本 )
  4. 【错误记录】Flutter 构建报错 ( Because xxx requires SDK version >=2.12.0-0 <3.0.0, versio | Dart SDK 版本低 )
  5. 【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )
  6. 【嵌入式开发】C语言 内存分配 地址 指针 数组 参数 实例解析
  7. 417 Pacific Atlantic Water Flow 太平洋大西洋水流
  8. 洛谷 1195 口袋的天空
  9. java对象 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
  10. fancybox关闭弹出窗体parent.$.fancybox.close();