bochsout
bochs一般用法
bochs一般用法Bochs 一般用法Bochs 是一款开源的 x86 模拟器,广泛用于开发和调试操作系统。
本文将介绍 Bochs 的一些常见用法,帮助读者更好地了解和使用该工具。
安装 Bochs安装 Bochs 非常简单,只需要按照以下步骤进行操作:1.打开终端,输入以下命令以安装 Bochs:$ sudo apt-get install bochs# 或者使用其他 Linux 发行版的软件包管理器进行安装2.等待安装完成后,Bochs 就可以使用了。
配置 BochsBochs 的配置文件是bochsrc,默认情况下位于用户目录下。
可以通过以下命令修改配置文件:$ vi ~/.bochsrc在打开的配置文件中,可以根据需要进行以下操作:1. 设定虚拟机参数比如修改虚拟机的内存大小、硬盘容量等。
# 修改内存大小为 256MBmegs: 2562. 设置启动镜像可以指定要启动的镜像文件路径,比如一个编译好的操作系统镜像。
# 设置启动镜像为floppya: 1_44=, status=inserted3. 调整模拟器速度可以修改模拟器的运行速度,以便更好地调试和观察。
# 加快模拟器速度为 1GHzcpu: count=1, ips=启动 Bochs配置好 Bochs 后,可以使用以下命令启动它:$ bochsBochs 将会加载配置文件,并开始模拟运行。
用户可以通过按键来控制 Bochs 的操作。
Bochs 命令行调试Bochs 提供了命令行调试功能,方便用户进行一些调试操作。
以下为一些常用的命令:1. 查看寄存器值# 显示通用寄存器的值info registers# 显示特定寄存器的值(比如 EAX)info registers eax2. 单步执行# 执行一条指令并停下来stepi# 单步执行汇编代码s3. 断点和监视点# 设置断点(比如在物理地址 0x1000 处)b 0x1000# 设置读取或写入监视点(比如在物理地址 0x2000 处)w 0x2000# 查看当前断点和监视点info break4. 继续执行# 继续执行直到下一个断点或监视点c# 继续执行指定次数的指令nexti 10以上是一些常见的 Bochs 用法,希望能够帮助读者更好地使用该工具。
wrk源码分析之WinDbg+Bochs调试
wrk源码分析之WinDbg+Bochs调试windows内核(WRK)编译过程1.⽤虚拟机VMware安装⼀个windows server 2003系统(以下所指系统如未加说明均为该windows server 2003虚拟机)2.将WRK源码拷贝到系统下C盘,将⽂件夹取名wrk(可以任意命名)3.将系统中的环境变量Path设置为C:\wrk\tools\x86;%path%4.(在命令提⽰符中输⼊)cd wrk\base\ntos5.(在命令提⽰符中输⼊)nmake -nologo x86=(内核正在编译...编译完后在wrk\base\ntos\BUILD\EXE下⽣成内核⽂件)6.将wrk\base\ntos\BUILD\EXE下的内核⽂件拷贝到C:\windows\system32下7.(在命令提⽰符中输⼊)在C:\windows\system32路径下输⼊link -dump -all hal.dll | findstr p db命令,查看你的hal按照下⾯对照: halacpi.dll -> halacpim.dll ; ACPI PIC-based PC [used by VirtualPC]halaacpi.dll -> halmacpi.dll ; ACPI APIC-based PChalapic.dll -> halmps.dll ; MPS8.进⼊C:\wrk\WS03SP1HALS\x86⽬录下,将相应的hal⽂件夹下的⽂件(2个)拷贝到C:\windo ws\system32下9.进⼊C盘,将隐藏的⽂件boot.ini打开,在最后⼀⾏加⼊:multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="test" /kernel=wrkx86.exe /hal=halmacpi.dll10.重新启动,进⼊新编译好的内核.PS:1.注意第9步中,发光的数字"2",该数值应与原来最后⼀句中的⼀致(否则进⼊系统时会出现没有找到引导盘)2.如果还是进⼊不了系统,则下载win2003sp1ch进⾏系统升级.wrk源码分析之WinDbg+Bochs调试有空上⽹时发⼀份给你。
bochs下的debug命令—中文版
Bochs是一个基于LGPL的开源x86 虚拟机软件。
Bochs的CPU指令是完全自己模拟出来的,这种方式的缺点是速度比较慢;优点是具有无以伦比的可移植性:有Gcc的地方就可以有 Bochs。
甚至已经有了跑在PocketPC上的Bochs。
现在的Bochs 已经实现了一定程度的调试功能,虽然在易用性和功能上还无法和WinDbg、SoftICE相比,但优势也是很明显的:对跑在Bochs里面的代码来说,这就是“硬件调试器”。
对Windows 版本的Bochs来说,安装目录下的bochsdbg.exe就是Bochs的调试版本。
用它来运行Bochs虚拟机就可以进行“硬件调试”。
Bochs的调试命令风格是按照GDB习惯来设计的,这对于用惯了WinDbg的人来说无疑是痛苦的,好在这是个开源软件,看着不顺眼可以考虑自己改改。
目前版本的Bochs(Version 2.1.1)支持的调试命令如下:[注意]1、Bochs的文档和帮助信息中的使用说明与真实情况之间存在很大的差错和缺失,下面的命令说明根据源码作了很多补充和修正。
2、其中涉及到的seg(段)、off(偏移)、addr(地址)、val(值)等数字,可以使用十六进制、十进制或者八进制,但必须按照如下形式书写:十六进制 0xCDEF0123八进制 01234567十进制 123456789尤其要注意,Bochs不能自动识别16进制的数字,也不接受12345678h这种写法。
[执行控制]c|cont 向下执行,相当于WinDBG的“g”。
s|step|stepi [count] 单步执行,相当于WinDBG的“t”,count 默认为 1。
p|n|next 单步执行,类似于WinDBG的“p”。
q|quit|exit 退出调试,同时关闭虚拟机。
Ctrl-C 结束执行状态,返回调试器提示符。
Ctrl-D if at empty line on command line, exit(至少在Windows版本中我没有发现Ctrl-D有什么功能)[执行断点]vb|vbreak [seg:off] 在虚拟地址上下断点。
Bochs配置文件入门
Bochs配置文件入门Bochs在启动的时候,它会先去解析配置文件的参数,从而得到用户指定的执行环境。
所以,Bochs会在用户的当前目录下按照顺序将如下文件作为默认的配置文件:1..bochsrc2.3.bochsrc4.5.bochsrc.txt因此,我们需要自己写一个配置文件,放在自己的工作目录下,然后在该目录下执行bochs命令,或者你也可以使用-f参数来指定使用哪一个配置文件。
下面是一个简单的Bochs配置文件:1.########################################### ####2.# Configuration file for Bochs3.########################################### ####4.5.6.7.# 第一步,首先设置Bochs在运行过程中能够使用的内存,本例为32MB。
8.# 关键字为:megs9.10.11.megs: 3212.13.14.15.# 第二步,设置对应真实机器的BIOS和VGA BIOS.16.# 对应两个关键字为:romimage 和 vgaromimage17.18.19.romimage:file=$BXSHARE/BIOS-bochs-latest20.vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest21.22.23.24.# 第三步,设置Bochs所使用的磁盘,软盘的关键字为floppy。
25.# 若只有一个软盘,则使用floppya即可,若有多个,则为floppya,floppyb...26.27.28.floppya: 1_44=a.img, status=inserted29.30.31.32.# 第四步,选择启动盘符。
33.34.35.boot: floppy36.37.38.39.# 第五步,设置日志文件的输出。
40.41.42.log: bochsout.txt43.44.45.46.# 第六步,开启或关闭某些功能。
bochs一般用法
bochs一般用法Bochs是一款开源的模拟器软件,它能够模拟x86处理器架构的计算机系统。
虽然有些人可能更喜欢使用其他虚拟机软件如VMware或VirtualBox,但Bochs的强大之处在于,它能够模拟整个计算机系统,包括处理器、内存、硬盘、输入输出设备等,可以在不同操作系统上运行。
下面我将详细介绍Bochs的一般用法,让您了解如何使用它。
一、安装Bochs二、配置Bochs以下是一些常用的配置选项:1. floppya: 指定A盘的镜像文件路径。
2. ata0-master: 指定主IDE通道上的硬盘镜像文件路径。
3. boot: 指定虚拟机启动时的引导设备。
可以选择A盘、C盘或网络启动。
4. display_library: 指定绘图库,如VBE、X等。
5. cpu: 指定虚拟机处理器类型,如i386、i486等。
6. memory: 指定虚拟机内存大小。
7. vga: 指定虚拟机的VGA模式,如VBE模式。
根据您的需求,适当修改这些配置选项,并将配置文件另存为bochsrc。
三、创建硬盘镜像在使用Bochs时,需要创建一个硬盘镜像,以模拟计算机的硬盘。
Bochs自带了一个工具bximage,可以用来创建硬盘镜像文件。
1. 打开命令行终端,进入Bochs的安装目录。
2. 运行bximage命令。
命令结构如下:bximage -hd -mode create-size <大小> -q <镜像文件路径>。
例如,要创建一个10MB大小的硬盘镜像文件,可以输入以下命令:bximage -hd -mode create -size 10M -q hd.img。
3. 输入命令后,按照提示设置硬盘类型、大小和名称等参数。
完成后,Bochs会在指定位置创建一个新的硬盘镜像文件。
四、启动虚拟机配置完成后,即可启动虚拟机。
运行Bochs程序,它会读取配置文件bochsrc,并根据配置启动虚拟机。
Bochs
BxOpcodeInfo[512 X 2]
static const BxOpcodeInfo_t BxOpcodeInfo[512*2] = { // 512 entries for 16bit mode /* 00 */ { BxAnother | BxLockable, &BX_CPU_C::ADD_EbGb }, /* 01 */ { BxAnother | BxLockable, &BX_CPU_C::ADD_EwGw }, /* 02 */ { BxAnother, &BX_CPU_C::ADD_GbEb }, …
根据attr从BxOpcodeInfo[ ]中选择对应的指令
boundaryFetch()函数(跨页边界取指)
void boundaryFetch(Bit8u *fetchPtr, unsigned remainingInPage, bxInstruction_c *i)
因为指令跨页,不能将指令的首地址作为参数传给 fetchDecode()/fetchDecode64(),因此设立临时变量 fetchBuffer,用以保存在两页中取出的共15个字节,并将 fetchBuffer作为译码的参数。 指令的最大长度为15字节,但具体每条指令的长度是不定的, 在本次取指过程中为了实现跨页移动了RIP,因此返回之前 必须将其复原,函数返回以后,在cpu_loop()里面,会根据 实际的指令长度移动RIP。
BX_CPU_C 类的主要数据成员(续)
Bit64u rip; Bit32u eip; 分别是64位模式和32位模式下的指令指示器。 bx_segment_reg_t sregs[6]; bx_segment_reg_t是表示段寄存器的结构,sregs[6]是表示了6个段寄存器的数组。分别是 ES、CS、SS、DS、FS和GS。 BX_MEM_C *mem; mem是指向这个CPU所使用的内存的指针 。 bx_local_apic_c local_apic; bx_local_apic是模拟本地APIC的类,用于SMP系统。 unsigned cpu_mode; 就是前面提到的CPU的工作模式,主要有5种,分别是实模式(16位模式)、8086虚拟模 式(32位模式下的虚拟16位模式)、保护模式(32位模式)、兼容模式(64位模式下的虚 拟32位,16位模式)和长模式(64位模式)。分别使用宏BX_MODE_IA32_REAL、 BX_MODE_IA32_V8086、BX_MODE_IA32_PROTECTED、 BX_MODE_LONG_COMPAT和BX_MODE_LONG_64表示。
如何制作Bochs的磁盘镜像文件
安卓手机是可以运行windows或者其他linux系统的,只要你的手机硬件足够强大,这点似乎已经得到了玩家的普遍认可。有朋友已经在安卓手机上成功运行win95 win8 xp等系统,亦有朋友安装了其他linux系统。
################上面这句话非常重要,如果不加上,安装Windows XP的时候会蓝屏###############
# how much memory the emulated machine will have
megs: 256
##############此处改为256(内存大小,你可以根据你自己的需要修改,不过建议最好不要低于256M)
What should I name the image? <-输入镜像名字
[c.img]
Writing: [] Done. <-写好了
I wrote 12582420480 bytes to c.img.
The following line should appear in your bochsrc:
# disable the mouse, since DLX is text only
mouse: enabled=0
# enable key mapping, using US layout as default.
#
# NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows.
自-BOCHS使用简单教程
BOCHS使用简单教程作者:如斯BOCHS是一个开源的虚拟机。
它可以实现vpc和vmware的大部分功能。
你也可以像使用vmware一样的在BOCHS里面安装操作系统。
但是,由于它是全模拟的。
所以,速度要远远慢于vmware.这样看来BOCHS好像没有什么优势.是这样吗?在应用方面的确如此。
但是,在其他一个方面它是处于绝对优势的。
那就是它具有调试功能!这是一个让人振奋的功能。
这个功能在你调试操作系统或者其他一些在裸机上运行的程序时候,会让你有一种在写windows下运行的应用程序的感觉。
有时候它是我们的救命稻草。
没了它,也能活,但是肯定要糟糕的多。
好了我们开始切入正题。
一、配置BOCHS实际上配置BOCHS是很简单的,为什么很多人不会配置呢?我觉的就是因为他使用和配置方式和普通程序不一样——配置文件。
实际上配置文件是和ini文件、bat文件类似的。
bochs没有给我们提供图形界面的配置工具。
这就需要我们自己来修改配置文件。
简单的配置就可以让你的操作系统在BOCHS里面跑起来。
用BOCHS跑完整的linux和windows 是不现实的。
实在是太慢了。
一般我们也只能把他当成调试器来使用。
现在,我们先看一下如何让dos在他里面跑起来。
如果你细心的话你会发现在BOCHS文件夹里面有一个bochsrc-sample.txt的文本文件。
里面包含了所有了BOCHS参数的信息。
这个是官方的教程。
可惜是英文的,而且我也没有找到有中文的教程(不然也没有我这篇文章)。
在这里我们仅仅介绍最简单的配置选项。
好了,废话就不多说了。
我们现在就开始。
我们以一个例子来说明,这个例子是我用来跑dos以及我自己的小操作系统的。
下面就是我们要用到的最基本的选项:# 在一行的最前面加上“#”表示这一行是注释行。
# 内存,以MB为单位,对于dos来说最大可以访问16MB#的内存,所以我就给了他16MB,你可以根据自己的机器来调# 整megs:16#下面两句一般是不可以改的,至于干什么用的就不用我说# 了。
bochs 常用命令
bochs 常用命令bochs是一个开源的x86模拟器,可以在不同的操作系统上运行x86代码。
它被广泛用于软件开发、调试和教育。
本文将介绍bochs常用的命令,帮助读者更好地了解和使用bochs。
一、启动bochs要启动bochs,在命令行中输入bochs命令即可。
bochs会读取当前目录下的bochsrc文件,并根据其中的配置启动模拟器。
如果没有bochsrc文件,bochs会使用默认配置启动。
二、配置bochsbochs的配置文件bochsrc决定了模拟器的行为。
可以通过编辑bochsrc文件来修改配置。
bochs的配置文件是一个文本文件,可以使用任何文本编辑器进行编辑。
以下是一些常用的配置命令:1. floppya:设置软盘A的镜像文件路径,例如"floppya: 1_44=/path/to/disk.img"。
2. boot:设置启动设备,例如"boot: floppy"表示从软盘启动。
3. memory:设置模拟器的内存大小,例如"megs: 64"表示设置为64MB。
4. vga:设置显示模式,例如"vga: extension=vbe"表示启用VBE 扩展。
5. clock:设置模拟器的时钟速度,例如"clock: sync=realtime"表示模拟实时时钟。
三、模拟器命令启动bochs后,可以在模拟器命令行中输入命令与模拟器进行交互。
以下是一些常用的模拟器命令:1. continue:继续执行程序,如果程序处于暂停状态。
2. break:设置断点,例如"break *0x1234"表示在地址0x1234处设置断点。
3. step:单步执行,执行一条指令后暂停。
4. next:单步执行,执行一行代码后暂停,常用于跳过函数调用。
5. info registers:显示寄存器的内容。
bochs一般用法
bochs一般用法Bochs是一个开源的x86模拟器,可用于模拟x86处理器架构的计算机。
它提供了一种完全虚拟的环境,可以在不同的操作系统上运行,并且可以模拟不同的硬件设备。
下面会详细介绍Bochs的一般用法。
1. 安装Bochs:2. 配置Bochs:3. 运行Bochs:当配置文件准备好后,可以通过命令行界面或GUI界面来启动Bochs。
在命令行界面中,你需要使用以下命令来启动Bochs:``````或者你可以使用GUI界面来启动Bochs,只需双击Bochs的可执行文件并选择相应的配置文件。
4. 使用Bochs:一旦Bochs启动成功,你将看到一个模拟的计算机屏幕,在屏幕上你可以看到模拟的BIOS信息和引导菜单。
你可以使用键盘命令来与模拟计算机交互,如按F12键进入Bochs控制台,按Ctrl + Alt + Del来重启模拟计算机等。
5.添加操作系统:要在Bochs中运行操作系统,你需要为虚拟计算机创建一个硬盘镜像文件,并将操作系统安装到硬盘镜像中。
你可以使用一些工具,如bximage来创建硬盘镜像文件,然后使用操作系统的安装光盘或者软盘来安装操作系统到硬盘镜像中。
6.调试模式:Bochs还提供了一个调试模式,可以用于调试模拟计算机的程序。
你可以在配置文件中启用调试模式,并使用调试器来单步执行程序,并查看寄存器和内存中的内容。
这对于开发和调试操作系统或者其他底层软件非常有用。
7.扩展功能:Bochs支持一些扩展功能,如鼠标和网络支持。
你可以在配置文件中启用这些选项,并进行相应的配置。
这样就可以在模拟计算机中使用鼠标,并与外部计算机进行网络通信。
总结:Bochs是一个功能强大的x86模拟器,可以在不同的操作系统上模拟x86计算机。
通过配置文件的设置,可以模拟不同的硬件设备,并运行各种操作系统。
它还提供了调试功能和扩展功能,可以帮助开发人员进行底层软件的开发和调试工作。
Bochs的使用需要一些基本的计算机硬件和操作系统知识,但一旦熟悉了其用法,就可以方便地进行模拟和调试工作。
bochs一般用法
bochs一般用法Bochs是一个开源的x86模拟器,可以在不同的平台上运行x86操作系统。
它提供了一种完整的模拟环境,用于执行x86指令,模拟处理器、内存和I/O设备。
Bochs主要被用于研究和开发操作系统、编译器等软件工具。
Bochs的一般用法包括如下几个方面:3. 准备镜像文件:Bochs需要一个镜像文件作为虚拟硬盘,用来存储操作系统和文件系统。
你可以使用虚拟硬盘创建工具,如bximage,创建一个空的虚拟硬盘文件,并为其分配合适的大小。
4. 启动Bochs:当你完成了Bochs的配置和准备工作后,你可以启动Bochs模拟器。
通常,你需要在终端中输入"bochs"命令来启动Bochs。
模拟器会读取配置文件,并根据其中的参数进行初始化。
5. 安装操作系统:在Bochs启动后,你可以通过连接虚拟光驱或虚拟软盘来安装操作系统。
Bochs支持多种安装方式,包括从ISO镜像、软盘镜像和物理设备进行安装。
你可以在Bochs的配置文件中指定虚拟光驱或虚拟软盘的镜像文件路径,然后重启Bochs,启动操作系统安装程序。
按照正常的安装步骤,将操作系统安装到虚拟硬盘上。
6. 运行操作系统:在操作系统安装完成后,你可以通过重新启动Bochs来运行操作系统。
Bochs会读取虚拟硬盘上的操作系统,并加载到模拟环境中。
然后,你就可以在Bochs中像在真实硬件上一样运行操作系统,并进行软件开发或测试等工作。
7. 调试和分析:Bochs还提供了一些调试和分析工具,可以帮助你进行操作系统和软件的调试工作。
例如,Bochs可以在执行每条指令时输出相关的信息,以帮助你理解程序的运行过程。
此外,Bochs还支持单步执行、断点设置等功能。
你可以根据需要,在Bochs的配置文件中启用这些调试和分析选项。
总之,Bochs是一个功能强大的x86模拟器,可以在不同平台上运行x86操作系统。
通过配置Bochs和准备合适的镜像文件,你可以在Bochs 中安装和运行操作系统,并进行软件开发、调试和分析等工作。
Bochs安装手册
Bochs的下载、安装和配置1 开源的BOCHS虚拟机软件程序员的工作就像是在历险,困难重重,途中不可避免地要遇上暗礁。
有时候,少了一个字符,或者多了一个字符,或者拼错了字符,程序就无法成功编译;有时候,尽管能够编译,但程序中存在逻辑错误,要么少写了语句,要么算法不对,运行的时候也得不到正确结果。
有时候,错误的原因很简单,就是因为马虎和误操作,但很难知道问题出在哪里。
等到你终于发现的时候,一天,甚至几天的时间已经花掉了。
在这种情况下,没有调试工具来找到程序中隐藏的错误是不行的。
有时候,即使有调试工具的帮助,也会令人筋疲力尽,不过有总比没有好。
在现实的世界里,不管是经验老道的程序设计师,还是刚入门的新手,没有谁敢说自己的程序是不需要调试的。
调试工具并不是智能到可以自动发现程序中的错误,这是不可能的。
但是,它可以单步执行你的程序(每执行一条指令后就停下来),或者允许你在程序中设置断点,当它执行到断点位置时就停下来。
这时,它可以显示处理器各个寄存器的内容,或者内存单元里的内容。
因此,你可以根据机器的状态来判断程序的执行结果是否达到了预期。
通过这种方式,你可以逐步逼近出现问题的地方,直到最终发现问题的所在。
市面上有多种流行的程序调试工具软件,但它们通常都象你用的其它软件一样工作在操作系统之上。
麻烦的是,本书中的程序全都只能运行在没有操作系统的祼机下。
这意味着,所有流行的调试工具都不可用。
不过,好消息是,一款叫做Bochs的软件可以帮助你。
Bochs是开源软件,是你唯一可选择的调试器。
开源意味着,你不用花钱购买就可以使用它。
它用软件来模拟处理器取指令和执行指令的过程,以及整个计算机硬件。
当它开始运行时,就直接模拟计算机的加电启动过程。
正是因为如此,它才有可能做一些调试工作。
很重要的一点是,它本身就是一个虚拟机,类似于VirtualBox。
因此,它也就很容易让你单步跟踪硬盘的启动过程,查看寄存器的内容和机器状态。
bochs虚拟机的安装配置以及调试功能
2.1 虚拟机BOCHS(跨平台的IA-32(x86)模拟器)是由Kevin Lawton开发的一个IA-32(x86)PC虚拟机,它几乎可以运行在所有流行的平台上。
BOCHS是遵循GNU GPL许可证的开源软件。
BOCHS是一个纯粹模拟硬件的虚拟机。
它包括了对Intel x86 CPU、通用I/O 设备以及BIOS的模拟,它用纯软件的方式模拟了整个i386处理器及其指令集,并且模拟了取指令-解码-执行的全过程。
BOCHS可以完全模拟386、486、Pentium 或者Pentium Pro的行为,它能够执行从启动到重启的每一条命令,并且模拟了很多标准PC外设例如键盘、鼠标、VGA card、硬盘、时序芯片、网卡等。
BOCHS 模拟环境中可以仿真的客户端操作系统包括DOS、WINDOWS、FreeBSD、Linux 等等。
BOCHS通常被用于测试新的x86兼容硬件以及设计操作系统的开发平台。
BOCHS最强大之处在于它的可配置性以及便利的调试功能。
使用时用户可以根据需要在配置文件BOCHSsrc.txt中对内存大小、磁盘映象文件、启动盘、是否激活鼠标等参数进行设置。
调试内核时,除了可以在BOCHSout.txt文件中看到系统的快照以外,还可以使用BOCHSdbg这一强大的调试工具单步跟踪操作系统的执行,并且执行诸如设置断点、查看CPU状态以及寄存器状态等调试命令。
2.1.1 BOCHS的安装本文采取从源码开始安装,首先从BOCHS的官网上获得最新版的源代码,我用的版本是BOCHS-2.4.6,安装可以通过如表2-1 所示命令来完成:其中,“./configure”之后的参数就是用来打开调试功能的开关。
如果少了这个参数,就无法使用它的调试功能。
2.1.2 BOCHS的配置BOCHS的配置是使用配置文件来进行的。
BOCHS是使用BOCHS文件夹里一个名为BOCHSsrc-sample.txt的文本文件来进行配置的。
Bochs调试linux内核环境搭建笔记(1)–JeanLeo博客
Bochs调试linux内核环境搭建笔记(1)–JeanLeo博客一、安装Bochs软件环境:Ubuntu 13.10Bochs版本:Bochs 2.61、安装环境准备:sudo apt-get install build-essentialsudo apt-get install xorg-devsudo apt-get install bisonsudo apt-get install libgtk2.0-dev2、安装Bochs命令:./configure –enable-debugger=yes –enable-disasm=yessudo makecp bochs bochsdbg——如果没有该拷贝,安装时将会报错;sudo make install3、安装遇到的问题列表:问题1、gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbol ‘pthread_create@@GLIBC_2.2.5′解决办法:LDFLAGS=’-lpthread’ ./configure –with-x11 –enable-debugger –enable-disasm问题2、如果忘了刚才的cp bochs bochsdbg命令,可能会安装失败,那么重复安装时将会报某个keymap已经存在解决办法:将bochs在安装目录下面的东西全部删了,重新make install一下。
二、构建bochs调测环境:注:创建磁盘镜像以及往上面安装是在ubuntu 11.10(虚拟机安装的系统即可)环境上操作的,主要原因是由于ubuntu 13.10上面的GRUB为2.0版本,该版本已经没有grub-setup命令,改为了grub-install命令,但是该命令不太熟,暂不研究,故用11.10回避。
1、构建磁盘镜像;root@machine:# dd if=/dev/zero of=hd1.img count=$((63*16*100))100800+0 records in100800+0 records out51609600 bytes (52 MB) copied, 0.548913 s, 94.0 MB/s2、挂载磁盘镜像;root@machine:# losetup /dev/loop0 hd1.img3、初始化磁盘设备;root@machine:# cfdisk -s63 -h16 /dev/loop0注意:初始化该磁盘时,创建一个Primary分区即可,同时注意需要将该磁盘设置为bootable模式,然后写入,退出;4、使用fdisk检查刚才的操作;root@machine:# fdisk -lu /dev/loop0Disk /dev/loop0: 51 MB, 51609600 bytes16 heads, 63 sectors/track, 100 cylinders, total 100800 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000Device Boot Start End Blocks Id System/dev/loop0p1 * 63 100799 50368+ 83 Linux5、将分区1挂载到/dev/loop1上面;root@machine:# losetup /dev/loop1 hd1.img -o $((63*512))6、格式化/dev/loop1为ext3文件系统格式;root@machine:# mkfs.ext3 /dev/loop1mke2fs 1.41.14 (22-Dec-2010)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)Stride=0 blocks, Stripe width=0 blocks12600 inodes, 50368 blocks2518 blocks (5.00%) reserved for the super userFirst data block=1Maximum filesystem blocks=516423687 block groups8192 blocks per group, 8192 fragments per group1800 inodes per groupSuperblock backups stored on blocks:8193, 24577, 40961Writing inode tables: doneCreating journal (4096 blocks): doneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 36 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override.7、在mnt下面创建img目录,可以留作以后维护使用;root@machine:# mkdir -p /mnt/img8、将loop1挂载到/mnt/img/上面;root@machine:# mount /dev/loop1 /mnt/img/9、安装引导程序;root@machine:# mkdir /mnt/img/bootroot@machine:# cp -r /usr/lib/grub/i386-pc/ /mnt/img/boot/grub10、生成一个core.img, biosdisk负责读取磁盘, part_msdos负责处理MBR, ext2负责读取ext3分区;root@machine:# cd /mnt/img/boot/grub/root@machine:/mnt/img/boot/grub# grub-mkimage -O i386-pc -o core.img biosdisk part_msdos ext2命令解释:1)-d使用默认值/usr/lib/grub2/i386-pc;2)-p指定prefix变量为/bootin/grub2;3)-o即输出定制的内核到/boot/bootin/grub2/core.img文件中;4)biosdisk part_msdos ext2,这些都是grub内核所包含的模块,不需要太多;注:有部分版本不需要参数“-O i386-pc”注:ext3 基于ext2 的代码,它的磁盘格式和 ext2 的相同,所以此处用ext2读取,因为没有ext3模块。
linux-0.11调试教程之minix-1.15.10安装到硬盘
/share/link?shareid=256036&uk=453348606 minix-1.15.10安装软盘包及bochs的img映像,百度网盘下载minix-1.15.10 源代码 bochs的img硬盘 by chenghao0511 ********地址:/detail/sitelist/5053271上述压缩包解压后的minix.img的映像是本文作者已经把软盘包的内容安装到了硬盘内,如果你下载后想亲自实践一下,请把minix.img挂到linux-0.11下执行:mkfs /dev/hd6 60000 和 mkfs /dev/hd7 70000 和mkfs /dev/hd8 60000,既格式化为60M的3个minix的分区。
Bochs-2.2请自己下载并安装后再点击minix.bxrc实践。
安装步骤1,正确设置bochs的配置文件,floppya: 360k="univ_boot.01", status=inserted,软盘就设置一个。
2,先选b,再选=,点A盘选disk04既rootfilesystem盘,回车,再选disk05既systembinaries #1 (/usr)回车。
3.输入年月日,接着用root/Geheim登录,如果来不及输入密码可以在bochs配置中将ips的值加大,另外一种登录方式是用bin登录,不要密码,进入后输入su回车,用密码Geheim就可以了4.安装/etc/setup_root和安装/etc/setup_usr,我用的是一个239M的虚拟硬盘,分为三个区hd1和hd2,hd3,在hd1上安装root,hd2上安装usr,具体命令分别为/etc/setup_root /dev/hd1 32 60000 60000 60000 0; /etc/setup_usr /dev/hd2/etc/setup_root的使用说明:Usage:setup_root device ram_size hd1_size hd2_size hd3_size hd4_size/etc/setup_usr的使用说明:/etc/setup_usr /dev/hd1minix.bxrc配置文件:romimage: file=$BXSHARE\BIOS-bochs-latest, address=0xf0000megs: 16vgaromimage: $BXSHARE\VGABIOS-elpin-2.40floppya: 360k="univ_boot.01", status=insertedata0-master: type=disk, path="minix.img", mode=flat, cylinders=487, heads=16, spt=63boot: alog: bochsout.txtparport1: enable=0vga_update_interval: 300000keyboard_serial_delay: 200keyboard_paste_delay: 100000floppy_command_delay: 50000ips: 4000000mouse: enabled=0private_colormap: enabled=0fullscreen: enabled=0screenmode: name="sample"下面是/etc/setup_root脚本文件内容:case $# in6) ;;*) echo "Usage:setup_root device ram_size hd1_size hd2_size hd3_size hd4_size"exit 1;;esacold_dir=`pwd` # save current directoryif /etc/mount $1 /userthen : # successful mountelse echo "Unable to mount $1. Root file system not created."exit 1fi# Make the directoriescd /usermkdir bin dev etc lib tmp user usrchown bin bin dev etc lib tmp user usrchgrp bin bin dev etc lib tmp user usrchmod 777 bin dev etc lib tmp user usr# Make the special files.cd dev/etc/mkdev $2 $3 $4 $5 $6# Copy /bin and /etccpdir -m /bin /user/bincpdir -m /etc /user/etcfixbin /user/bin /user/bin >/dev/null 2>&1chown bin /user/etc/*chown root /user/etc/*mountchmod 4755 /user/etc/*mountcd $old_dir/etc/umount $1下面是/etc/setup_user脚本文件的内容:# Install the /usr file systemdisk=6 # starting disk (1-3 are boot diskettes)STOP=18 # first disk that does not existi=/usr/includes=/usr/srcl=/usr/src/lib# Unmount all hard disk partitions and see if the argument can be mounted. case $# in1) ;;*) echo Please specify the special file for the MINIX partitionecho For example: /etc/setup_usr /dev/hd1exit 1;;esaccd //etc/umount /dev/hd1 >/dev/null 2>&1/etc/umount /dev/hd2 >/dev/null 2>&1/etc/umount /dev/hd3 >/dev/null 2>&1/etc/umount /dev/hd4 >/dev/null 2>&1if /etc/mount $1 /user >/dev/null 2>&1then :else echo Unable to mount $1exit 1fiPATH=$PATH:/user/bin # hard disk will be mounted on /user# Make the principal MINIX directories.echo Making directoriesmkdir /user/adm 2>/dev/nullmkdir /user/ast 2>/dev/nullmkdir /user/bin 2>/dev/nullmkdir /user/doc 2>/dev/nullmkdir /user/etc 2>/dev/nullmkdir /user/include 2>/dev/nullmkdir /user/include/minix 2>/dev/nullmkdir /user/include/sys 2>/dev/nullmkdir /user/lib 2>/dev/nullmkdir /user/lib/tmac 2>/dev/nullmkdir /user/man 2>/dev/nullmkdir /user/spool 2>/dev/nullmkdir /user/spool/at 2>/dev/nullmkdir /user/spool/lpd 2>/dev/nullmkdir /user/spool/mail 2>/dev/nullmkdir /user/spool/uucp 2>/dev/nullmkdir /user/src 2>/dev/nullmkdir /user/src/amoeba 2>/dev/nullmkdir /user/src/amoeba/examples 2>/dev/nullmkdir /user/src/amoeba/kernel 2>/dev/nullmkdir /user/src/amoeba/fs 2>/dev/nullmkdir /user/src/amoeba/mm 2>/dev/nullmkdir /user/src/amoeba/util 2>/dev/nullmkdir /user/src/commands 2>/dev/nullmkdir /user/src/commands/bin 2>/dev/nullmkdir /user/src/commands/ibm 2>/dev/nullmkdir /user/src/commands/bawk 2>/dev/nullmkdir /user/src/commands/de 2>/dev/nullmkdir /user/src/commands/dis88 2>/dev/nullmkdir /user/src/commands/ic 2>/dev/nullmkdir /user/src/commands/indent 2>/dev/nullmkdir /user/src/commands/kermit 2>/dev/nullmkdir /user/src/commands/m4 2>/dev/nullmkdir /user/src/commands/make 2>/dev/nullmkdir /user/src/commands/mined 2>/dev/nullmkdir /user/src/commands/nroff 2>/dev/nullmkdir /user/src/commands/patch 2>/dev/nullmkdir /user/src/commands/sh 2>/dev/nullmkdir /user/src/commands/zmodem 2>/dev/nullmkdir /user/src/elle 2>/dev/nullmkdir /user/src/fs 2>/dev/nullmkdir /user/src/lib 2>/dev/nullmkdir /user/src/lib/ansi 2>/dev/nullmkdir /user/src/lib/ibm 2>/dev/nullmkdir /user/src/lib/other 2>/dev/nullmkdir /user/src/lib/posix 2>/dev/nullmkdir /user/src/lib/string 2>/dev/nullmkdir /user/src/kernel 2>/dev/nullmkdir /user/src/mm 2>/dev/nullmkdir /user/src/test 2>/dev/nullmkdir /user/src/tools 2>/dev/nullmkdir /user/tmp 2>/dev/null# At this point, the root file system is in place and diskette #5 is in # drive 0 mounted on /usr. The MINIX hard disk partition is on /user. # Copy /bin and /etc to the hard disk.echo Copying /bincpdir -m /bin /user/bin # copy /bin to the hard diskecho Copying /etccpdir -m /etc /user/etc # copy /etc to the hard diskcpdir -m /usr/bin /user/bin # copy /usr/bin to the hard diskecho Copying diskette 5fixbin /user/bin /user/bin >/dev/null 2>&1echo Diskette 5 copied/etc/umount /dev/fd0while test $disk != $STOPdo getlf "Please insert disk $disk, then hit the ENTER key "/etc/mount /dev/fd0 /usr -rcd /usrfor dir in *do echo Copying $dirif test $dir = 'LAST_DISK'; then disk=`expr $STOP - 1`; fi# Establish base namecase $dir ininclude) base=/user/include ;;ast) base=/user/ast ;;bin) base=/user/bin ;;etc) base=/user/etc ;;usrlib) base=/user/lib ;;kernel) base=/user/src/kernel ;;fs) base=/user/src/fs ;;mm) base=/user/src/mm ;;tools) base=/user/src/tools ;;test) base=/user/src/test ;;elle) base=/user/src/elle ;;amoeba) base=/user/src/amoeba ;;lib) base=/user/src/lib ;;commands) base=/user/src/commands ;;LAST_DISK) base=/tmp ;;*) base=/user/$dir ;;esaccd / # cpdir creates pipes in current dircpdir -m /usr/$dir $basedonedisk=`expr $disk + 1`cd //etc/umount /dev/fd0done#All the disks have now been loaded. Unpack them.echo Loading finished. Please remove the last diskette from the drive. echo The files will now be unpacked.cd /fixbin /user/bin /user/bin >/dev/null 2>&1/etc/umount $1 >/dev/null 2>&1/etc/mount $1 /usr >/dev/null 2>&1echo Unpacking /usr/libcd /usr/libcompress -d *Z >/dev/null 2>&1rm -f *Z 2>/dev/nullchown bin *for d in $i \$i/minix \$i/sys \$s/elle \$s/kernel \$s/fs \$s/mm \$s/tools \$s/test \$l/ansi \$l/posix \$l/other \$l/ibm \$l/string \$s/commands \$s/commands/ibm \$s/commands/bawk \$s/commands/de \$s/commands/dis88 \$s/commands/indent \$s/commands/ic \$s/commands/m4 \$s/commands/make \$s/commands/mined \$s/commands/nroff \$s/commands/patch \$s/commands/sh \$s/commands/zmodem \$s/commands/kermit \$s/commands/elvis \$s/amoeba \$s/amoeba/kernel \$s/amoeba/fs \$s/amoeba/mm \$s/amoeba/examples \$s/amoeba/utildo echo Unpacking $dcd $dcompress -d *Z >/dev/null 2>&1 rm -f *.Z 2>/dev/nullfor j in *.a; do ar x $j >/dev/null 2>&1; donerm -f *.a 2>/dev/nullchown bin * .done# link commands/nroff/tmac.an to lib/tmac/tmac.anln /usr/src/commands/nroff/tmac.an /usr/lib/tmac/tmac.anrm -rf /usr/LAST_DISK 2>/dev/nullchown bin /usr/*cd /usr/libchmod 755 cem cpp cg optecho Installation completed.exit 0作者email:chenghao at 同步发布到:/sitelist/article/details/8570112。
bochs中文用户手册
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 1.6 第三方软件许可以及临时文件 在Bochs中安装或者使用任何操作系统,BIOS,或者基他软件时,请确保你已经得到你想要安装 的软件的授权.提供所安装或者使用的软件的授权许可和记录是您的责任.而且你还必须遵守 相应的授权协议. 在向Bochs环境中安装软件时,有时候,你可能或者必须将原始安装文件转化为另一种格式来 帮助你进行安装.但是在安装完成之后,你应该删除除原始安装文件外的所有中间格式文件.
BOCHS使用简单教程
BOCHS使用简单教程作者:如斯BOCHS是一个开源的虚拟机。
它可以实现vpc和vmware的大部分功能。
你也可以像使用vmware一样的在BOCHS里面安装操作系统。
但是,由于它是全模拟的。
所以,速度要远远慢于vmware.这样看来BOCHS好像没有什么优势.是这样吗?在应用方面的确如此。
但是,在其他一个方面它是处于绝对优势的。
那就是它具有调试功能!这是一个让人振奋的功能。
这个功能在你调试操作系统或者其他一些在裸机上运行的程序时候,会让你有一种在写windows下运行的应用程序的感觉。
有时候它是我们的救命稻草。
没了它,也能活,但是肯定要糟糕的多。
好了我们开始切入正题。
一、配置BOCHS实际上配置BOCHS是很简单的,为什么很多人不会配置呢?我觉的就是因为他使用和配置方式和普通程序不一样——配置文件。
实际上配置文件是和ini文件、bat文件类似的。
bochs没有给我们提供图形界面的配置工具。
这就需要我们自己来修改配置文件。
简单的配置就可以让你的操作系统在BOCHS里面跑起来。
用BOCHS跑完整的linux和windows是不现实的。
实在是太慢了。
一般我们也只能把他当成调试器来使用。
现在,我们先看一下如何让dos在他里面跑起来。
如果你细心的话你会发现在BOCHS文件夹里面有一个bochsrc-sample.txt的文本文件。
里面包含了所有了BOCHS参数的信息。
这个是官方的教程。
可惜是英文的,而且我也没有找到有中文的教程(不然也没有我这篇文章)。
在这里我们仅仅介绍最简单的配置选项。
好了,废话就不多说了。
我们现在就开始。
我们以一个例子来说明,这个例子是我用来跑dos以及我自己的小操作系统的。
下面就是我们要用到的最基本的选项:# 在一行的最前面加上“#”表示这一行是注释行。
# 内存,以MB为单位,对于dos来说最大可以访问16MB# 的内存,所以我就给了他16MB,你可以根据自己的机器来调# 整megs: 16# 下面两句一般是不可以改的,至于干什么用的就不用我说# 了。
安装和配置bochs、调试自己写的系统引导代码
1、安装和配置bochs首先从里面把BOCHS给download下来,鉴于Windows的普及,仅仅谈BOCHS在win下的使用方法,其实在其它的OS中方法差不多,不过我仅仅在Window 和Linux下安装使用过。
在里面把Bochs-2.6.1.exe给download下来,双击就开始安装。
这软件不大,安装完才4兆多,当然,这是标准安装,如果你选择的是完全安装,则比标准安装多个DLX linux demo这个OS,如果你是第一次使用BOCHS,建议你用完全安装,装完,现不用着急学会BOCHS的一大堆配置,可以先用用它自带的这个OS,感受下BOCHS。
在BOCHS的目录里面有个dlxlinux子目录,进去,双击bochsrc,就进入下图:这dlx linux是系统自带的,如果自己想用别的操作系统该怎么办呢?嘿嘿,别着急,BOCHS的开发者们已经为我们考虑好了,里面,你能找到很多img文件,这些都是开发者们做好的镜像文件了,嗯,说白了,就等于是机子的硬盘了,咱们仅仅需要的就是配置好,能运行就可以。
通常我喜欢的方法是改配置文件,这方法似乎也是BOCHS的使用者们通常喜欢采用的吧,我详细介绍这方法。
比方说,咱们想用msdos这个操作系统,从网上找个msdos的启动盘的镜像文件,如果找不到的话,可以自己做个,方法:首先做个启动盘镜像文件,取名boot.img这就做好了,方法可以参考我以前写的”用vmware运行简单的引导代码“或者也可以用dos下的hd-copy 这个工具做出来。
然后单独建立个目录(随意地方)msdos,然后把bochs安装目录里面的bochsrc-sample.txt这个文件复制到msdos这个目录里面,并改名,注意,后缀最好是bxrc,这个后缀是bochs可以识别的。
bochsrc-sample.txt这个文件是配置文件模板,我们就是在这个模板的基础上修改参数成为我们的操作系统所使用的配置文件。
操作系统:Bochs2.6.8的配置文件bochsrc.bxrc修改
操作系统:Bochs2.6.8的配置⽂件bochsrc.bxrc修改由于现在Bochs 2.6.8相⽐之前有些改动,之前的配置⽂件不能直接运⾏,针对配置⽂件需要有些修改。
1. 配置⽂件################################################################ bochsrc.bxrc file for Finix.################################################################ how much memory the emulated machine will havemegs: 32# filename of ROM images# BIOS已经修改,地址可以不加,可以根据⽂件⼤⼩进⾏推断,如⾥加地址要与⽂件⼤⼩相匹配romimage: file=$BXSHARE/BIOS-bochs-latestvgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest# what disk images will be used# 配置镜像名floppya: 1_44=Finix.IMG, status=inserted# choose the boot disk.boot: a# where do we send log messages?log: bochsout.txt# disable the mouse, since Finix is text onlymouse: enabled=0# enable key mapping, using US layout as default.# 键盘的映射⽅式也改变了keyboard: keymap=$BXSHARE/keymaps/x11-pc-us.map2. 运⾏结果由于没有做清屏操作,会将原来的⽂字部分覆盖,不过没有关系,它已经可以运⾏了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
00000000000i[KMAP ] Loading keymap from '/home/ubuntu/下载/bochs-2.4.5/gui/keymaps/x11-pc-us.map'
00000000000i[ ] x86-64 support: no
00000000000i[ ] MWAIT support: no
00000000000i[ ] VMX support: no
00000000000i[ ] Optimization configuration
00000000000i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000
00000000000i[CPU0 ] CPUID[0x00000003]: 00000000 00000000 00000000 00000000
00000000000i[CPU0 ] CPUID[0x00000004]: 00000000 00000000 00000000 00000000
00000000000i[ ] Bochs x86 Emulator 2.4.5
00000000000i[ ] Build from CVS snapshot, on April 25, 2010
00000000000i[ ] System configuration
00000000000i[ ] processors: 1 (cores=1, HT threads=1)
00000000000i[MEM0 ] Register memory access handlers: 0x000a0000 - 0x000bffff
00000000000i[XGUI ] test_alloc_colors: 16 colors available out of 16 colors tried
00000000000i[ ] USB support: no
00000000000i[ ] VGA extension support: vbe
00000000000i[MEM0 ] allocated memory at 0xb4fd9008. after alignment, vector=0xb4fda000
00000000000i[KBD ] will paste characters every 1000 keyboard ticks
00000000000i[ ] init_dev of 'harddrv' plugin device by virtual method
00000000000i[HD ] Using boot sequence floppy, none, none
00000000000i[HD ] Floppy boot signature check is enabled
00000000000i[ ] init_dev of 'ial' plugin device by virtual method
00000000000i[SER ] com1 at 0x03f8 irq 4
00000000000i[ ] init_dev of 'iodebug' plugin device by virtual method
00000000000i[ ] init_dev of 'ioapic' plugin device by virtual method
00000000000i[IOAP ] initializing I/O APIC
00000000000i[ ] register state of 'extfpuirq' plugin device by virtual method
00000000000i[ ] register state of 'iodebug' plugin device by virtual method
00000000000i[MEM0 ] Register memory access handlers: 0xfec00000 - 0xfec00fff
00000000000i[ ] init_dev of 'keyboard' plugin device by virtual method
00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0xfee00000
00000000000i[CPU0 ] CPUID[0x00000000]: 00000003 756e6547 6c65746e 49656e69
00000000000i[CPU0 ] CPUID[0x00000001]: 00000f00 00000800 00000000 078bfbff
00000000000i[KMAP ] Loaded 168 symbols
00000000000i[MEM0 ] Register memory access handlers: 0xe0000000 - 0xe0ffffff
00000000000i[VGA ] VBE Bochs Display Extension Enabled
00000000000i[ ] RepeatSpeedups support: no
00000000000i[ ] Trace cache support: no
00000000000i[ ] Fast function calls: no
00000000000i[ ] Devices configuration
00000000000i[DMA ] channel 4 used by cascade
00000000000i[DMA ] channel 2 used by Floppy Drive
00000000000i[FDD ] fd0: 'a.img' ro=0, h=2,t=80,spt=18
00000000000i[VGA ] interval=50000
00000000000i[SPEAK] Failed to open /dev/console: 资源暂时不可用
00000000000i[SPEAK] Deactivating beep on console
00000000000i[ ] init_dev of 'extfpuirq' plugin device by virtual method
00000000000i[ ] A20 line support: yes
00000000000i[ ] CPU configuration
00000000000i[ ] level: 6
00000000000i[ ] SMP support: no
00000000000i[ ] APIC support: yes
00000000000i[ ] register state of 'parallel' plugin device by virtual method
00000000000i[SYS ] bx_pc_system_c::Reset(HARDWARE) called
00000000000i[CPU0 ] cpu hardware reset
00000000000i[ ] register state of 'biosdev' plugin device by virtual method
00000000000i[ ] register state of 'speaker' plugin device by virtual method
00000000000i[MEM0 ] 32.00MB
00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32
00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('/home/ubuntu/下载/bochs-2.4.5/bios/BIOS-bochs-latest')
00000000000i[ ] FPU support: yes
00000000000i[ ] MMX support: yes
00000000000i[ ] 3dnow! support: no
00000000000i[ ] SEP support: yes
00000000000i[ ] init_dev of 'unmapped' plugin device by virtual method
00000000000i[ ] init_dev of 'biosdev' plugin device by virtual method
00000000000i[ ] init_dev of 'speaker' plugin device by virtual method
00000000000i[ ] ACPI support: no
00000000000i[ ] NE2000 support: no
00000000000i[ ] PCI support: no, enabled=no
00000000000i[ ] SB16 support: no
00000000000i[ ] init_dev of 'parallel' plugin device by virtual method