ubuntu下搭建操作系统实验平台(VirtualBox和Bochs)
前段时间在做操作系统的实验,安装X86模拟器遇到了一些问题,从源码安装时失败,在网上找到这个解决办法,分享一下。
原文地址:http://blog.csdn.net/ariesjzj/article/details/8604335
我的操作系统是Ubuntu14.04和Ubuntu16.04的64位版本。
Bochs是模拟器,提供调试功能,因为所有指令都是模拟的,所以比较慢。VirtualBox是虚拟机(提供硬件,软件虚拟,不过启动部分是跑在基于Qemu的模拟器上),VirtualBox也提供了简单的调试功能。
本文基于Ubuntu12.04 LTS(64 bits),但所有的功能在Windows下都有对应的版本。这里以《自己动手写操作系统》中的例子为例,介绍如何通过VirtualBox和Bochs运行img和com文件。
一 VirtualBox:
1. 安装virtualBox
sudo apt-get install virtualBox
2. 下载MS-DOS安装盘(如http://download.csdn.net/detail/ariesjzj/5082584),接着创建虚拟机,安装DOS。
如果要运行img文件,在VirtualBox中的Floppy中插入虚拟盘即可。如放入《自己动手写操作系统》的例子TINIX.IMG后,启动后显示:
如果可执行文件编译成com文件,需要先搞定Host和Guest的通信,才能把com文件拷进去。有几种方法,一种是网络或Share folder(见https://www.virtualBox.org/wiki/Sharing_files_with_DOS),不过这种方法得装一坨软件,比较麻烦。
另一种方法是将文件做成iso,在VirtualBox中插入虚拟光盘,然后DOS访问光盘。比如要让DOS访问Host中/home/jzj/cdrom下的内容,先制作iso镜像:
mkisofs -r -o myiso.iso /home/jzj/cdrom
然后在VirtualBox的Storage中加入虚拟盘myiso.iso,上面的DOS安装盘是含cd-rom驱动的,所以不需要额外操作就可以访问光驱(自动挂载到D盘)。但如果下载的DOS默认没有光盘支持,可以参考http://mylinuxramblings.wordpress.com/2010/12/05/linux-mint-debian-edition-lmde-first-impressions/。
为了运行实模式程序,还要关掉EMM386,在C盘里的config.sys中把有EMM386.EXE的行注掉,如:REM DEVICE=C:\DOS71\EMM386.EXE NOEMS
否则运行例子中的com文件会出错。现在就可以运行书中的例子了,如:
2 Bochs:
1. 安装Bochs
sudo apt-get install bochs bochs-sdl vgabios bochsbios
2. 假设要运行的是TINIX.IMG,先编写bochs配置文件:
@H_502_117@
- ###############################################################
- #bochsrc.bxrcfileforTinix.
- ###############################################################
- #howmuchmemorytheemulatedmachinewillhave
- megs:32
- #filenameofROMimages
- romimage:file=$BXSHARE/BIOS-bochs-latest
- vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest
- #whatdiskimageswillbeused
- floppya:1_44=TINIX.IMG,status=inserted
- #choosethebootdisk.
- boot:a
- #wheredowesendlogmessages?
- log:bochsout.txt
- display_library:sdl
- #disablethemouse,sinceTinixistextonly
- mouse:enabled=0
- #enablekeymapping,usingUSlayoutasdefault.
- keyboard_mapping:enabled=1,map=$BXSHARE/keymaps/sdl-pc-us.map