bochs c语言源码,自己写操作系统 2 - 安装bochs虚拟机

本文详细介绍如何在Ubuntu系统中通过命令行及源码方式安装Bochs,并提供配置bochsrc文件的具体步骤,帮助读者成功搭建Bochs虚拟机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以ubuntu操作系统为例

一、命令行安装

sudo apt-get install vgabios bochs bochs-x bximage

此方法方便,不过都说这个方法安装的bochs没有调试功能,所以我没有尝试,有时间再补充验证吧

二、源码安装

1. 源码下载

https://sourceforge.net/projects/bochs/files/bochs/

直接下载当前最新的源码,准备在linux上安装,所以下载的 bochs-2.6.9.tar.gz

2. 安装前准备

sudo apt-get install build-essential xorg-dev libgtk2.0-dev bison

省掉config过程很多依赖编译报错

3. 编译安装

sudo tar xvzf bochs-2.6.9.tar.gz

cd bochs-2.6.9

./configure  --enable-debugger --enable-disasm --enable-readline -LIBS='lx11'

make

sudo make install

make install 会把bochs可执行文件拷贝到/usr/local/bin/目录下

重启linux或者让环境变量重新生效,可以直接在当前目录下调用bochs

4. 修改bochsrc配置文件

在bochs-2.6.9目录下,有一个配置文件 .bochsrc,我们需要修改,让他运行我们的a.img

#cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

cpu: model=amd_k6_2_chomper, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

cpu: cpuid_limit_winnt=0

memory: guest=512, host=256

romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot

vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

mouse: enabled=0

pci: enabled=1, chipset=i440fx

private_colormap: enabled=0

#floppya: 1_44=/dev/fd0, status=inserted

#floppya: image=../1.44, status=inserted

#floppya: 1_44=/dev/fd0H1440, status=inserted

#floppya: 1_2=../1_2, status=inserted

#floppya: 1_44=a:, status=inserted

floppya: 1_44=a.img, status=inserted, write_protected=1

#floppya: 1_44=/dev/rfd0a, status=inserted

ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14

ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15

ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11

ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9

#ata0-master: type=disk, mode=flat, path="30M.sample"

#ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17

#ata0-master: type=disk, mode=flat, path="c.img", cylinders=0 # autodetect

#ata0-slave: type=disk, mode=vvfat, path=/bochs/images/vvfat, journal=vvfat.redolog

#ata0-slave: type=cdrom, path=D:, status=inserted

#ata0-slave: type=cdrom, path=/dev/cdrom, status=inserted

#ata0-slave: type=cdrom, path="drive", status=inserted

#ata0-slave: type=cdrom, path=/dev/rcd0d, status=inserted

boot: floppy

#boot: disk

floppy_bootsig_check: disabled=0

log: bochsout.txt

panic: action=ask

error: action=report

info: action=report

debug: action=ignore, pci=report # report BX_DEBUG from module 'pci'

debugger_log: -

parport1: enabled=1, file="parport.out"

#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=

#speaker: enabled=1, mode=sound

有注释的地方基本都是改动过的,解决了下一步启动运行过程中,几个问题

5. 启动运行bochs虚拟机

bochs -f .bochsrc

a53beae9bcbe41b2d289ec4836b01c0c.png

6b87641d9ed8d0f2e743ea5d6d72b9ec.png

b964ea3a610d0ef9ef2a564bc209b94f.png

能到这一步,如果有问题,大部分都是bochsrc配置的问题,可以查看报错点,尝试注释掉,确保最基本的几个配置基本就可以正常运行了

例如:

memory: guest=512, host=256

romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot

vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

floppya: 1_44=a.img, status=inserted, write_protected=1

boot: floppy

启动过程可能遇到的问题:

问题1:.bochsrc:187: cpu directive malformed

9777cf88aff1a5995f27274bc03b17b6.png

解决方法:

linux终端下:bochs -help cpu

b1eff0162867f3d941722745e4ea80f5.png

我的电脑是AMD处理器,我就选amd_k6_2_chomper

修改配置文件即可

#cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

cpu: model=amd_k6_2_chomper, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

问题2:.bochsrc:915: Bochs is not compiled with lowlevel sound support

668f25536da771a31fb9524062e90495.png

解决方法:修改配置文件,注释掉以下两行

#sound: driver=default, waveout=/dev/dsp. wavein=, midiout=

#speaker: enabled=1, mode=sound

问题3:syntax error at 'dump_cpu'

a2ce0a0b9434bd70f0afb1461a9a53f5.png

解决方法:none

bochs 2.3.5 以上的版本没有dump_cpu了,可以用r,fp,mmx,sse,dreg,sreg,creg命令代替

0c5d7d7093e72b127585663b403edb04.png

bcac863d05e08e5b4ecc962353f7943e.png

参考:https://blog.youkuaiyun.com/time4/article/details/25079417

Chapter 1 x86 体系结构与PC 系统概要.....................................1 1.1 x86 CPU 结构...............................................................................................................1 1.1.1 冯诺依曼架构和CISC 指令集......................................................................1 1.1.2 CPU 结构........................................................................................................1 1.1.3 CPU 工作模式................................................................................................2 1.2 x86 体系结构概览........................................................................................................3 1.3 PC 系统.........................................................................................................................5 1.3.1 PC 系统概述...................................................................................................5 2.3.2 总线拓扑.........................................................................................................6 2.3.3 存储器与I/O 编址.........................................................................................6 2.3.4 关于系统的启动与引导.................................................................................8 Chapter 2 Bochs 工程概述....................................................... 11 2.1 开源项目Bochs 介绍.................................................................................................11 22 版本2.2.1 源码组织..................................................................................................11 2.3 工程类结构.................................................................................................................12 2.4 主体框架结构分析.....................................................................................................13 2.4.1 Bochs 工程中的重要类................................................................................13 (1) VM 控制台界面类.............................................................................................13 (2CPU 模拟............................................................................................................14 (3) Memory 模拟......................................................................................................14 (4).I/O device 模拟...................................................................................................15 2.4.2 入口函数main()及Win32 Gui 初始化........................................................15 2.5 Bochs 的工作方式......................................................................................................18 Chapter 3 CPU 类的源码分析...................................................20 3.1 CPU 类概述................................................................................................................20 3.1.1 CPU 逻辑结构框图......................................................................................20 3.1.2 类BX_CPU_C 成员归纳.............................................................................20 3.2 类BX_CPU_C 源码分析..........................................................................................21 3.2.1 CPU 特性声明..............................................................................................21 3.22 类bxInstruction_c 成员分析........................................................................22 3.2.3 类BX_CPU_C 源码注释.............................................................................22 3.3 通用寄存器.................................................................................................................29 3.3.1 数据结构与注释...........................................................................................29 3.3.2 通用寄存器归纳...........................................................................................30 3.4 段寄存器、全局寄存器GDI 和IDT ........................................................................31 3.4.1 数据结构与注释...........................................................................................31 3.4.2 段寄存器结构分析.......................................................................................33 3.5 CPU 状态字EFLAGS................................................................................................35 3.5.1 数据结构与注释...........................................................................................35
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值