前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【操作系统真象还原】Mac安装配置bochs

【操作系统真象还原】Mac安装配置bochs

作者头像
SL_World
发布2022-05-06 15:48:40
1.8K0
发布2022-05-06 15:48:40
举报
文章被收录于专栏:XX

0 本机环境

  • macOS Big Sur 11.1
  • Bochs 2.6.2

1 Bochs下载解压

在这里插入图片描述
在这里插入图片描述
  • 去「Bochs官网下载地址」下载bochs-2.6.2.tar.gz
  • 手动解压bochs-2.6.2.tar.gz压缩包 或 终端解压tar zxvf bochs-2.6.2.tar.gz

下面进入到Bochs的安装目录:

代码语言:javascript
复制
$ cd bochs-2.6.2

即将进行

  • configure(配置 && 检测当前平台是否拥有所需依赖软件包,完成后生成Makefile)
  • make(由Makefile进行编译
  • make install(安装

2 configure

代码语言:javascript
复制
$ ./configure \
> --prefix=/<自定义目录>/bochs \ # 指定bochs的安装目录
> --enable-debugger \          # 打开bochs调试器
> --enable-disasm \            # 使bochs支持反汇编
> --enable-iodebug \           # 启用IO接口调试器
> --enable-x86-debugger \      # 支持x86调试器
> --with-x \                   # 使用x-windows
> --with-x11 \                 # 使用x11图形用户窗口
> <按回车>

configure之后,会生成Makefile,遂即可进行编译

3 make前的软件包准备

需要本机提前装有gcc, sdl, gtk+, libxrandr软件包,否则make编译时会报错

代码语言:javascript
复制
brew install gcc
brew install sdl
brew install gtk+
brew install libxrandr

例如:

  • 缺少gtk+在make时可能会报错如下(gtk是基于界面底层库x11的一个界面库,用于在 linux 中绘制窗口界面,若是报错之后再安装gtk,则需要重新按第二步configure一下
代码语言:javascript
复制
gtk_enh_dbg_osdep.cc:19:10: fatal error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>
  • 缺少libxrandr在make时可能会报错如下
代码语言:javascript
复制
x.cc:42:10: fatal error: 'X11/extensions/Xrandr.h' file not found
#include <X11/extensions/Xrandr.h>

此外,笔者在进行gcc等软件包的安装时由于Homebrew问题频频报错,最终选择重装Homebrew后得以解决。当然,之前安装过的软件包也需要重装啦~

Mac重装Homebrew无痛指南

  • Github链接超时报错
代码语言:javascript
复制
Failed to connect to github.com port 443 after 75004 ms: Operation timed out

修改hosts文件

代码语言:javascript
复制
vim /etc/hosts

hosts文件中添加以下信息(2022.4.30更新)

代码语言:javascript
复制
140.82.114.4 github.com 
199.232.69.194 github.global.ssl.fastly.net
185.199.108.153  assets-cdn.github.com
185.199.109.153  assets-cdn.github.com
185.199.110.153  assets-cdn.github.com
185.199.111.153  assets-cdn.github.com

4 Bochs的编译与安装

现在我们可以进行bochs的编译与安装啦

代码语言:javascript
复制
$ make && make install

此时依然可能会报错

报错一

代码语言:javascript
复制
cdrom_osx.cc:194:18: error: assigning to 'char ' from incompatible type 'const ch

解决方法:打开bochs-<版本号>/iodev/hdimage/cdrom_osx.cc文件193行,进行如下修改

代码语言:javascript
复制
if ((devname = strrchr(devpath, '/')) != NULL) {
改为:
if ((devname = (char *) strrchr(devpath, '/')) != NULL) {

报错二

代码语言:javascript
复制
onfig.cc:3261:55: error: ordered comparison between pointer and zero
      ('char *' and 'int')
    if (SIM->get_param_string("model", base)->getptr()>0) {

解决方法:打开bochs-<版本号>/config.cc文件3261行,进行如下修改

代码语言:javascript
复制
if (SIM->get_param_string("model", base)->getptr()>0) {
改为
if (SIM->get_param_string("model", base)->getptr()>(char *)0) {

再进行make && make install之后Bochs安装成功!

5 配置Bochs硬盘启动文件

Bochs编译安装成功之后,需要配置Bochs启动信息,比如是从软盘还是从硬盘启动?可使用内存大小多少bulabula

在安装目录下有配置文件的模板文件: bochs/share/doc/bochs/bochsrc-sample.txt 可供参考,得到如下配置信息,保存为bochs/bochsrc.disk即可,.disk表示从硬盘启动,也可自定义文件名和后缀名,后期启动Bochs时输入该配置文件名即可

代码语言:javascript
复制
# Bochs启动配置文件
# 1.Bochs在运行中可使用的内存,设为32MB
megs: 32
# 2.设置对应真实机器的BIOS和VGA BIOS; 须为绝对路径,Bochs不识相对路径
romimage: file=/Users/sparks_fly/Documents/操作系统实战/bochs/share/bochs/BIOS-bochs-latest
vgaromimage: file=/Users/sparks_fly/Documents/操作系统实战/bochs/share/bochs/VGABIOS-lgpl-latest
# 3.选择启动盘符为硬件启动
boot: disk 
# 4.日志输出
log: bochs.out
# 5.关闭鼠标,打开键盘
mouse: enabled=0
keyboard: keymap=/Users/sparks_fly/Documents/操作系统实战/bochs/share/bochs/keymaps/x11-pc-us.map
# 6.硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# ata0-master: type=disk, path="hd60M.img", mode=flat, cylinders=121, heads=16, spt=63

6 运行Bochs

6.1 bochs运行初尝试

  • 在bochs安装目录中,命令行输入bin/bochs -f bochsrc.disk
在这里插入图片描述
在这里插入图片描述

继续回车后,x11图形界面被打开,但目前为黑屏,需键入c再回车后即可出现书P50如下界面

在这里插入图片描述
在这里插入图片描述

6.2 创建启动盘

按书中提示,Boot Failed: could not read the boot disk意味之前我们只是写了硬件启动盘的配置文件,但压根没有实际创建该启动盘,因此在点击Quit后,键入如下命令创建启动盘

代码语言:javascript
复制
bin/bximage -hd -mode="flat" -size=60 -q hd60M.img

各个参数解释如下

-hd 创建硬盘 -mode 硬盘类型,有flat,sparse和growing三种 -size 硬盘大小,单位为MB -q 静态模式创建,创建过程中不会和用户交互

在这里插入图片描述
在这里插入图片描述

即在bochsrc.disk中的硬盘设置中新增如下启动盘信息

代码语言:javascript
复制
# 6.硬盘设置
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd60M.img", mode=flat, cylinders=121, heads=16, spt=63

此时重新启动后报错信息成功转变为not a bootable disk

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0 本机环境
  • 1 Bochs下载解压
  • 2 configure
  • 3 make前的软件包准备
  • 4 Bochs的编译与安装
  • 5 配置Bochs硬盘启动文件
  • 6 运行Bochs
    • 6.1 bochs运行初尝试
      • 6.2 创建启动盘
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档