以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

自己写操作系统 2 - 安装bochs虚拟机的更多相关文章

  1. Windows操作系统下安装Ubuntu虚拟机

    认识VMware虚拟机 VMware(虚拟机)是指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统,它能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行 ...

  2. Mac OS X安装之虚拟机环境下的总结

    最近一直忙着公司iOS Touch的新版发布,终于忙过了.现在,又开始了新的阶段,不过算是轻松了很多.回来一看,自己的博客空空如也,实在受不了了.于是,开始更一下吧,哈哈. 这个文档是我几个月前,开始 ...

  3. vmware安装kvm虚拟机

    1. 概述 本篇博客主要使用运行在win10专业版上的vmware workstation 15 pro虚拟化软件,安装centos7.7最小化系统,并在centos7上安装kvm虚拟机,实现快速创建 ...

  4. ubuntu 18.04下virtualbox安装windows虚拟机+增强功能+secureCRT

    先强调一下,我是在Ubuntu里安装windows虚拟机,如果要看如何安装linux虚拟机的话,那么你走错地方了. 我一直使用Linux系统做开发的,选择Ubuntu是因为多数常用软件对Ubuntu支 ...

  5. 6、安装kvm虚拟机

    6.1.虚拟机开启虚拟化: 6.2.检查linux虚拟机cpu是否开启了虚拟化: egrep -o 'vmx|svm' /proc/cpuinfo vmx 6.3.安装kvm管理和安装kvm虚拟机的软 ...

  6. Windows 8.1 Hyper-V安装的虚拟机

    一.安装Hyper-v Hyper-V内置于Windows 8中,用户无需格外的下载安装文件,只需要到Windows 8的程序管理中将其选中开启功能即可. 具体步骤:控制面板→程序→启用或关闭Wind ...

  7. 安装virtualbox虚拟机的增强功能

    转自:http://wubangtu.com/714 最近有很多人问我这个问题,现在全部写在这里,免得到时候又啰嗦一遍了,哈哈.欢迎大家前来围观: 安装virtualbox虚拟机的增强功能可以实现如下 ...

  8. 【Linux探索之旅】第一部分第六课:Linux如何安装在虚拟机中

    内容简介 1.第一部分第六课:Linux如何安装在虚拟机中 2.第二部分第一课预告:终端Terminal,好戏上场 Linux如何安装在虚拟机中 虽然我们带大家一起在电脑的硬盘上安装了Ubuntu这个 ...

  9. 怎么在Windows下安装Linux虚拟机

    前提:①电脑有安装好VMware Workstation Pro虚拟机,没有的话点此下载并安装.②下载好CentOS-7-x86_64-DVD-1503-01镜像文件,没有点此下载密码:lomg. 1 ...

随机推荐

  1. Aizu:2224-Save your cats

    Save your cats Time limit 8000 ms Memory limit 131072 kB Problem Description Nicholas Y. Alford was ...

  2. CentOS 7.X 防火墙简单配置

    CentOS7使用的是Linux Kernel 3.10.0的内核版本,新版的Kernel内核已经有了防火墙netfilter,并且使用效能更高,稳定性更好. 配置防火墙的两种方法: 一.使用xml配 ...

  3. 腾讯装扮下拉选项卡特效(QQ空间)

    <DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" ...

  4. centos 服务器内存管理 服务于端口状态

    du su /目录/ 查看改目录大小 ls -lht /  查看文件详情,显示文件大小(直观) df -h 查看系统内存占用情况 centos 版本 lsb_release -a cat /etc/i ...

  5. 《Cracking the Coding Interview》——第18章:难题——题目1

    2014-04-29 00:56 题目:不用算数运算,完成加法. 解法:那就位运算吧,用加法器的做法就可以了. 代码: // 18.1 add two numbers wihout using ari ...

  6. Jetty 安装、启动与项目部署

    Jetty是当下非常流行的一款轻量级Java Web服务器和Servlet容器实现,它由Eclipse基金会托管,完全免费而且开放源代码,因此所有人均可以从其官网下载最新源代码进行研究.由于其轻量.灵 ...

  7. maven中scope标签作用

    scope 是用来限制 dependency 的作用范围的,影响 maven 项目在各个生命周期时导入的 package 的状态,主要管理依赖的部署. scope 的作用范围: (1)compile: ...

  8. win 7 查看端口被占用

    开始---->运行---->cmd,或者是window+R组合键,调出命令窗口     输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是4915 ...

  9. python-configparser模块,xml.etree模块

    操作键值对文件 #文件db格式为 [section] a = 1 b = 2 [section1] d = 3 c = 4 import configparser #获取所有节点 config = c ...

  10. python 学习分享-实战篇高级的ftp

    #server代码 import socketserver,os,hashlib Base_paht = os.path.dirname(os.path.dirname(os.path.abspath ...