macOS 编译安装 bochs 虚拟机

头图 之所以有这篇文章,是因为最近又重拾了一直以来的一个梦想:自己写一个操作系统。虽然很早就有了这个梦想,但都没有坚持下去,每次都是刚写了个 hello OS 就不了了之了。当然了,梦想还是要有的,万一,咳咳咳…

我是跟着《Orange’S:一个操作系统的实现》这本书来学习的。当然了,第一步就是装一个虚拟机环境嘛,按照这本书的推荐,需要安装一个带 debug 功能的 bochs 环境。之前有数次尝试都卡在了这里。这次总算摸索出来了一个 macOS 下比较好的编译安装 bochs 的方式。

编译环境


  • macOS Sierra. 版本号:10.12.3
  • bochs 2.6.8

bochs 2.6.8 版本是目前最新的 release 版本,虽然是最新的,但也是 2015 年发布的,接近一年多没有 release 版本发布了。

编译安装


安装 bochs 的图形界面有两个选择:X11 和 sdl,这里选择 sdl。感觉 sdl 安装起来要比 X11 方便,因为可以用 brew 直接安装,执行下面命令:

brew install sdl

下载 bochs 2.6.8 的源码并解压后,在解压后的文件夹中执行下面的命令

./configure --enable-ne2000 \
            --enable-all-optimizations \
            --enable-cpu-level=6 \
            --enable-x86-64 \
            --enable-vmx=2 \
            --enable-pci \
            --enable-usb \
            --enable-usb-ohci \
            --enable-e1000 \
            --enable-debugger \
            --enable-disasm \
            --disable-debugger-gui \
            --with-sdl \
            --prefix=/opt/bochs

其中,--disable-debugger-gui 被加入的原因是,debugger GUI 需要使用 GTK+ 库,但是 macOS 默认没有安装 GTK+,所以就不启用 debugger GUI 了。

这里在配置的时候,将 bochs 的安装路径指定到 /opt/bochs, configure 成功之后,依次执行下面命令进行编译安装:

make
sudo make install

还需要设置一些环境变量

export BXSHARE="/opt/bochs/share/bochs"
export PATH="$PATH:/opt/bochs/bin"

这里需要提到的一点是,我所学习的这本书里的 bochs 配置是针对 2.6 版本的,在 2.6.8 版本上,bochs 的配置文件 bochsrc 的写法有变化, 就是 keyboard map 这个设置跟之前不一样。 hello OS 这个例子中, bochsrc 的内容如下

###############################################################
# Configuration file for Bochs
###############################################################

# how much memory the emulated machine will have
megs: 32

# filename of ROM images
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

# what disk images will be used
floppya: 1_44=helloOS.img, status=inserted

# choose the boot disk.
boot: floppy

# where do we send log messages?
# log: bochsout.txt

# disable the mouse
mouse: enabled=0

# enable key mapping, using US layout as default.
keyboard: keymap=$BXSHARE/keymaps/sdl-pc-us.map

学习过程相关的源码我放到了 Github 上,仓库地址:https://github.com/webfrogs/makeOS 不定期更新。

参考资料





Previous     Next

Published under (CC) BY-NC-SA