以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

能到这一步,如果有问题,大部分都是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

解决方法:

linux终端下:bochs -help cpu

我的电脑是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

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

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

#speaker: enabled=1, mode=sound

问题3:syntax error at 'dump_cpu'

解决方法:none

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

参考:https://blog.csdn.net/time4/article/details/25079417

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

  1. 【易语言】贴吧工具源码 以前写的

    飞龙易语言源码集 http://download.csdn.net/detail/wizardforcel/5482881 猴子盟易语言大神源码集 http://download.csdn.net/d ...

  2. Go语言源码分析CAS的实现和Java如出一辙

    看了Go的源码CAS这块实现和java还是类似的. 关于Java的分析参考:Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现 都是使用汇编指令:LOCK+CMP ...

  3. golang中文文档_【译】Go 语言源码贡献官方指导文档

    以前给 Go 语言项目源码提交过一些 commits,期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考,因为最近又提交了几个 commits,就又把这篇文 ...

  4. 易语言php支付宝,支付宝填表登录易语言源码

    支付宝填表登录易语言源码 @MS_晨星天宇.版本 2 .支持库 spec .支持库 HtmlView .程序集 窗口程序集_窗口1 .子程序 _按钮1_被单击 调试输出 (开始登录 (超文本浏览框1, ...

  5. 技术宅的乐趣!网友编写出《流浪地球》“春节十二响”C语言源码

    [TechWeb]随着春节档科幻电影<流浪地球>的火爆,越来越多的网友对这部电影产生了浓厚的兴趣.电影中"春节十二响"的桥段相信会让每一个看过电影的观众记忆犹新. 近日 ...

  6. C51单片机与PCF8591模块的交互:C语言源码解析

    目录 1. PCF8591模块简介 2. C51单片机与PCF8591的连接 3. C51单片机与PCF8591的C语言源码解析 4. 用法示例 5. 总结 6. 参考文献 在微控制器的世界中,C51 ...

  7. C语言项目源码,C语言源码大全

    一.C语言源码大全 C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.尽管 ...

  8. 云顶之奕助手易语言源码-联网

    本文来自:12580code源码网http://12580code.com/ #源码介绍 LX云顶之奕助手 版本 更新内容 时间 1.1内测版 1.新增14类种族羁绊 2019.9.12 2.新增10 ...

  9. 【安全算法之base64】base64加解密的C语言源码实现

    最近,有项目中需要用到base64的加解密,所以用C语言实现了一遍,测试效果还不错,代码量和RAM消耗都比较低,可以提供给大家参考下. #include <stdbool.h> #incl ...

最新文章

  1. 在Mac OS环境下安装MySQL服务
  2. Scikit-Learn 机器学习笔记 -- MNIST
  3. 高动态范围图像HDR
  4. 优秀学生专栏——孙振涛
  5. linux gst-launch 播放视频旋转,【视频开发】Gstreamer中一些gst-launch常用命令
  6. patricia tree_前5名:专访Patricia Torvalds和Ada Initiative,印度采用开源,等等
  7. android的listview点击获取当前选项值的方法
  8. mfc调取摄像头显示并截图_用OpenCV在MFC Dialog中Picture控件上显示摄像头采集实时视频...
  9. 干货!mysql初始密码
  10. java在控制台打印心形图案
  11. 车载系统升级、“特饭”会员品牌上线,解读新特背后的互联网产品逻辑
  12. FLAC3D 的入门介绍
  13. 基于神经网络的目标检测论文之目标检测系统:实时路况检测系统的设计与实现
  14. linux系统安装python包
  15. Markdown格式
  16. python 视频抽帧_一种用于超高帧频图像流到标准模拟视频流转换的抽帧方法与流程...
  17. Wide-Bandgap宽禁带(WBG)器件(如GaN和SiC)市场将何去何从?
  18. 生物信息学所需的计算机知识,生物信息学专业计算机课程的探讨
  19. 项目进度管理的算法总结
  20. 基于vue element 封装上传组件

热门文章

  1. 基于QtQuick的QCustomPlot实现
  2. 感知世界的最新利器、毫米波技术的继任者——超宽带(UWB)雷达技术
  3. S32K的flexcan组件使用(RxFIFO+中断)
  4. 【RDMA】16. RDMA之DDP(Direct Data Placement)
  5. no persistent classes found for query class: from xxxx解决办法
  6. HTML <!DOCTYPE>标记
  7. 用python祝福父亲节_经典走心的父亲节祝福语大全(24句)
  8. acwing-843.n-皇后问题
  9. Creatthread _Beginthread _Beginthreadex
  10. Activity快速转换为Diglog,美团点评APP在移动网络性能优化的实践