Bochs下载安装

news2024/9/19 20:34:08

文章目录

  • 下载Bochs
  • 配置Bochs

Bochs

Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。更为有趣的是,甚至可以不使用PC硬件来运行Bochs。事实上,它可以在任何编译运行Bochs的平台上模拟x86硬件。通过改变配置,可以指定使用的CPU(386、486或者586),以及内存大小等。一句话,Bochs是电脑里的“PC”。根据需要,Bochs还可以模拟多台PC,此外,它甚至还有自己的电源按钮。

《摘自百度百科》

实验环境:ubuntu18.04+VMware

下载Bochs

Bochs下载链接:

  • https://sourceforge.net/projects/bochs/files/bochs/2.6.8/bochs-2.6.8.tar.gz/download

下载解压后

在这里插入图片描述

进入文件夹bochs-2.6.8中

cd bochs-2.6.8/

在命令行中输入以下内容

./configure \
--prefix=/home/cooiboi/bochs \
--enable-debugger \
--enable-disasm \
--enable-iodebug \
--enable-x86-debugger \
--with-x \
--with-x11

笔者这里的虚拟机环境较为齐全~

在这里插入图片描述

【补充】虚拟机中之前没有安装相应环境的可以先运行下面的代码

apt-get -y install gcc
apt-get install build-essential
apt-get install g++

之后在命令行中输入make

在这里插入图片描述

接着,输入sudo make install

在这里插入图片描述

这里多了的两个bin文件和share文件夹在/home/cooiboi/bochs目录下。

在这里插入图片描述

配置Bochs

完成下载后,我们需要配置Bochs,Bochs是通过配置文件完成的。

在这里插入图片描述

进入到/home/cooiboi/bochs目录下。

在这里插入图片描述

bin目录下会看到bximage和bochs两个文件,其中bximage是我们配置启动盘时的核心。

接下来开始配置!!!

首先,进入bin目录

(base) user@ubuntu:/home/cooiboi/bochs$ cd bin
(base) user@ubuntu:/home/cooiboi/bochs/bin$ ls
bochs  bximage
sudo vim bochsrc.disk

修改后的配置文件代码

bochsrc.disk

# 首先设置Bochs在运行中能够使用的内存
megs : 512

# 设置对应真实机器的BIOS和VGA BIOS。
romimage: file=/home/cooiboi/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/home/cooiboi/bochs/share/bochs/VGABIOS-lgpl-latest

# 选择启动盘符,这里是硬盘启动
boot: disk

# 设置日志的输出
log: bochs.out

# 开启关闭某些功能
mouse:enabled=0
keyboard:keymap=/home/cooiboi/bochs/share/bochs/keymaps/x11-pc-us.map
# 硬盘设置
ata0:enabled=1,ioaddr1=0x1f0,ioaddr2=0x3f0,irq=14

# 启动盘信息hd60M.img,下面的hd60M.img为我们启动硬盘
ata0-master: type=disk, path="hd60M.img", mode=flat,cylinders=121,heads=16,spt=63
#ata0-master: type=disk, path="/home/cooiboi/bochs/bin/./hd60M.img", mode=flat, cylinders=121, heads=16, spt=63

#gdbstub:enabled=1,port=1234,text_base=0,data_base=0,bss_base=0

在这里插入图片描述

(base) user@ubuntu:/home/cooiboi/bochs$ bin/bochs

或者到当前目录使用./bochs【记得:一定要加./】

在这里插入图片描述

上面的BXSHARE not set. using…那一行说明我们并未使用配置文件。

输入6开始模拟

在这里插入图片描述

输入c

在这里插入图片描述

这里的意思是bochs启动时找不到启动盘。

下面部分参考Ubuntu下bochs详细安装步骤(超详细!)文章~

重点】接下来的思路创建后缀名为asm测试文件,然后经过nasm编译,生成后缀名为bin的二进制文件。再通过bin目录下的bximage来创建一个硬盘,接着把刚才生成的.bin文件写入硬盘中,最后启动bochs测试。

步骤1:创建硬盘

命令如下:

(base) user@ubuntu:/home/cooiboi/bochs$ bin/bximage -hd -mode="flat" -size=60 -q hd60M.img
* -fd 创建软盘。
* -hd 创建硬盘。
* -mode 创建硬盘的类型,有 flat sparse growing三种。
* -size 指创建多大的硬盘,以 MB 为单位。
* -q 以静默模式创建,创建过程中不会和用户交互。
*  bin/bximage --help 查看帮助手册

出现Bug:

使用以下方式创建

(base) user@ubuntu:/home/cooiboi/bochs/bin$ sudo ./bximage 
========================================================================
                                bximage
  Disk Image Creation / Conversion / Resize and Commit Tool for Bochs
         $Id: bximage.cc 12690 2015-03-20 18:01:52Z vruppert $
========================================================================

1. Create new floppy or hard disk image
2. Convert hard disk image to other format (mode)
3. Resize hard disk image
4. Commit 'undoable' redolog to base image
5. Disk image info

0. Quit

Please choose one [0] 1

Create image

Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] hd

What kind of image should I create?
Please type flat, sparse, growing, vpc or vmware4. [flat] flat

Enter the hard disk size in megabytes, between 10 and 8257535
[10] 60

What should be the name of the image?
[c.img] hd60M.img

Creating hard disk image 'hd60M.img' with CHS=121/16/63

The following line should appear in your bochsrc:
  ata0-master: type=disk, path="hd60M.img", mode=flat

【注意】hd60M.img要创建再bin目录下~

在这里插入图片描述

步骤2:创建汇编文件(test.asm)

(base) user@ubuntu:/home/cooiboi/bochs/bin$ sudo vim test.asm

test.asm

	org	07c00h			; 告诉编译器程序加载到7c00处
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	call	DispStr			; 调用显示字符串例程
	jmp	$			; 无限循环
DispStr:
	mov	ax, BootMessage
	mov	bp, ax			; ES:BP = 串地址
	mov	cx, 16			; CX = 串长度
	mov	ax, 01301h		; AH = 13,  AL = 01h
	mov	bx, 000ch		; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
	mov	dl, 0
	int	10h			; 10h 号中断
	ret
BootMessage:		db	"Hello, OS world!"
times 	510-($-$$)	db	0	; 填充剩下的空间,使生成的二进制代码恰好为512字节
dw 	0xaa55				; 结束标志

步骤3:对汇编文件(test.asm)汇编成bin文件

安装个nasm编译器先

sudo apt-get install nasm

开始汇编

sudo nasm test.asm -o test.bin

test.bin文件成功被创建

(base) user@ubuntu:/home/cooiboi/bochs/bin$ sudo nasm test.asm -o test.bin
(base) user@ubuntu:/home/cooiboi/bochs/bin$ ls
... test.asm  test.bin

步骤4:将bin文件(test.bin)写入硬盘(hd60M.img)中

dd if=test.bin of=hd60M.img bs=512 count=1 conv=notrunc
(base) user@ubuntu:/home/cooiboi/bochs/bin$ sudo dd if=test.bin of=hd60M.img bs=512 count=1 conv=notrunc
1+0 records in
1+0 records out
512 bytes copied, 0.000155012 s, 3.3 MB/s

步骤5:启动bochs

sudo ./bochs -f bochsrc.disk

执行该文件

(base) user@ubuntu:/home/cooiboi/bochs/bin$ sudo ./bochs -f ./bochsrc.disk

依次输入6c.

在这里插入图片描述

Hello , OS world!

总结

  1. 创建硬盘
  2. 创建汇编文件(.asm)
  3. 编译asm文件成bin文件
  4. 将bin文件写入硬盘(.img)中
  5. 启动bochs

参考资料

  • 《操作系统真象还原》
  • 《操作系统真象还原》第一章 ---- 安装Vmware Station 安装Ubuntu 装载配置Bochs 安装Vmware tools 开始乘帆历险!
  • Ubuntu下bochs详细安装步骤(超详细!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity3D编辑器扩展】Unity3D中实现Text的字体的替换

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 在开发中会遇到要将场景中的Text的字体全部替换的情况。 所以…

NetInside网络分析帮您解决系统性能问题(一)

前言 某大学信息中心负责人表示,有用户反馈,在通过VPN访问某一IP的80端口时连接时断时续。同时信息中心给到的信息是通过VPN:XXX.XXX.253.5访问IP地址XXX.XXX.130.200的80端口出现访问时断时续问题。 需要通过分析系统看一下实际情况&#…

云原生周刊 | 人类、机器人与 Kubernetes

近日 Grafana 官网发表了一篇博客介绍了 2022 年比较有意思、脑洞大开的一些 Grafana 使用案例,比如监控特斯拉 Model 3 的充电状态、OTA 更新状况等等。 海事技术供应商 Royal IHC 利用 Grafana 展示客户船队的关键性能指标,例如燃料消耗、服务时间、大…

Allegro174版本新功能介绍之打开坐标超链接功能

Allegro174版本新功能介绍之打开坐标超链接功能 Allegro在升级到174的时候默认打开时,报表中的坐标是不带超链接的,如下图 直接点击坐标,是无法自动跳转到坐标所在位置的 但是Allegro174是开放了打开超链接的功能的,具体操作如下 选择Setup选择User Preferences

【 Vue3 + Vite + setup语法糖 + Pinia + VueRouter + Element Plus 第一篇】(持续更新中)

【 Vue3 Vite setup语法糖 Pinia VueRouter Element Plus 第一篇】(持续更新中) 1.使用 Vite脚手架创建 Vue3 项目 终端输入命令 npm create vite 项目名选择 Vue项目并回车根据自己的爱好,选择配置即可 2. 开启 Network 访问地址 npm run dev后 提示 use -…

磨金石教育||商业插画的发展现状如何?学习插画可以月入过万吗?

商业插画是什么?现如今,商业插画已经在生活中随处可见。你买的所有带包装的产品,上面的各种有趣的产品插图,就是插画师做的产品插画。特别是一些零食类的产品,在包装箱上,我们常可以看到各种大眼睛拟人化的…

电脑出现0xc00000e9错误代码的解决方法

每当假期结束回来,经常发现Windows系统的电脑一段时间不开机,开机就出现0xc00000e9的错误代码。为什么明明没有任何操作却出现错误呢?驱动人生带大家一文了解。 出现0xc00000e9错误代码的原因 先来了解一下电脑出现0xc00000e9错误代码的主要…

数字孪生架构

很多同学对数字孪生特别感兴趣,经常有同学问我:数据孪生系统怎么做?有没有教程?除了Unity开发,开发数字孪生还需要掌握什么技能?有人介绍了一个数字孪生的外包,从来没做过,能不能接&…

Spring 中常用的几个工具类

AnnotatedElementUtils 类 获取某个类的某个方法上是否有标注注解,并可以通过其他 API 获取到这个类注解上的属性值,该工具类其他 API 下面截图可以查看。 public static boolean isBeanAnnotated(Method method) {return AnnotatedElementUtils.hasAn…

Redis 应用问题解决

缓存穿透 key 对应的数据在数据源并不存在,每次针对此key的请求从缓存中获取不到,请求会都压到数据源,从而可能压垮数据源。 解决方案 一个一定不存在的缓存及查询不到的数据,由于缓存是不命中时被动写的,并且处于容…

docker 19.03构建跨平台的镜像包并推送到私有仓库

默认的docker构建image镜像是不能跨平台的,如果需要构建跨平台的镜像,需要docker的版本在19.03版本以上,并开启buildx。以下为具体的步骤 版本:docker 19.03。 一.安装/开启 buildx 1.1.手动开启dockerx开关 docker 19.3 暂默认不开启dockerx,需要手动开启 vim /etc/pro…

Scala 数据结构-集合

文章目录Scala 数据结构-集合一、集合简介1、不可变集合继承图2、可变集合继承图二、数组1、不可变数组(1) 创建数组(2) 访问数组(3) 遍历数组(4) 添加元素Scala 数据结构-集合 一、集合简介 1)Scala的集合有三大类:序列seq,集合Set&#x…

解决fstab丢失,重启系统变为只读模式

现象描述: 背景:openEuler20.03 在/etc/fstab文件丢失、重启系统后,系统变为只读模式 [rootlocalhost ~]# echo 111 > 1.txt -bash: 1.txt: Read-only file system 解决方法: 查看系统信息,确认挂载信息&#…

【C进阶】数据在内存中的存储

数据在内存中的存储前言一、数据类型介绍(一)基本概念(二)类型的基本归类1.整型家族2.浮点型家族3.构造类型4.指针类型5.空类型二、整形在内存中的存储(一)原码、反码、补码1.概念2.为什么内存中存的是补码…

android input 事件分发 --- 注册input

android input 事件分发 --- 注册input应用注册input事件应用注册input事件 应用如果要监听input的事件,那么肯定就存在一个注册监听input事件的过程,跟随着addView方法我们跟着走一下frameworks/base/core/java/android/view/WindowManagerImpl.java Ov…

Centos7 安装 MongoDB

使用docker安装Mongo 1、拉取镜像 注:需要科学上网 docker pull mongo [rootlocalhost ~]# docker pull mongo Using default tag: latest latest: Pulling from library/mongo 846c0b181fff: Pull complete ef773e84b43a: Pull complete 2bfad1efb664: Pull co…

LeetCode:14. 最长公共前缀

14. 最长公共前缀1)题目2)思路3)代码4)结果1)题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs [“flo…

python常用快捷键

一、编辑(Editing)Ctrl Space 基本的代码完成(类、方法、属性)Ctrl Alt Space 快速导入任意类Ctrl Shift Enter 语句完成Ctrl P 参数信息(在方法中调用参数)Ctrl Q 快速查看文档F1 外部文档Shift F…

c语言 通讯录 动态内存开辟

通讯录 通讯录中能够存放1000人信息 每个人信息: 姓名年龄性别电话地址 2.增加人的信息 3.删除指定人的信息 4修改指定人的信息 5.查找指定人的信息 6.排序通讯录的信息 contact.h 放头文件的声明 tset.c 测试通讯录模块 contact.c 函数的实现 test.c #include &…

基于不同操作系统升级知行之桥的常见问题

此前的文章知行之桥2022版本升级之页面变化以及监控邮件答疑给大家分享了一些升级到知行之桥最新版本关于Web页面显示和监控邮件的一些问题,本篇将分享一些windows和Linux不同操作系统升级部署知行之桥最新版本的一些Q&A。 EDI服务器是windows服务器 Windows操…