博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Install Bochs on Ubuntu
阅读量:6555 次
发布时间:2019-06-24

本文共 1700 字,大约阅读时间需要 5 分钟。

 

安装gcc编译环境

sudo apt-get install build-essential

sudo apt-get install xorg-dev

sudo apt-get install libgtk2.0-dev

下载bochs最新版本

http://bochs.sourceforge.net/

安装命令

$tar vxzf bochs-2.4.5.tar.gz

$cd bochs-2.4.5

$./configure --enable-debugger --enable-disasm

$make

$sudo make install

安装nasm

sudo apt-get install nasm

编译boot.asm

nasm boot.asm -o boot.bin

此处的boot.asm是一段汇编代码,在屏幕上打印出hello, OS world!

代码如下:

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 ; 结束标志

使用dd命令将它写进刚刚创建的软盘映像a.img的第一个扇区

dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

此时还需要配置bochs的配置文件bochsrc,标准的配置文件格式为

###############################################################

# Configuration file for Bochs

###############################################################

# how much memory the emulated machine will have

megs: 32

# filename of ROM images

romimage: file=/usr/local/share/bochs/BIOS-bochs-latest

vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest

# what disk images will be used

floppya: 1_44=a.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_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map

接着便可以执行

bochs -f bochsrc

来运行bochsrc虚拟机。

转载于:https://www.cnblogs.com/kazzakyoung/archive/2012/08/21/2649163.html

你可能感兴趣的文章
用Alamofire进行网络请求的一段代码解析(一)
查看>>
elasticsearch的percolator操作
查看>>
windows 定时任务:schtasks,定时关闭网易云音乐
查看>>
C# Note17: 使用Ionic.Zip.dll实现解压缩文件
查看>>
Mina Basics 06-传输
查看>>
c 编译异常 switch 之a label can only be part of a statement and a declaration is not a statement...
查看>>
nullnullDataTable 排序
查看>>
Codeforces Ilya and Queries
查看>>
NEWS - InstallShield 2013发布
查看>>
Viewport
查看>>
〖Linux〗Debian 7.1.0 Wheezy使用ltib报错的解决办法
查看>>
〖Android〗(how-to) fix k860/k860i buletooth.
查看>>
static与线程安全 -摘自网络
查看>>
jsf标签,jsp标签与jstl标签
查看>>
使用PHP CURL的POST数据
查看>>
struts2:表单标签
查看>>
mysql字符串截取
查看>>
ASP.NET MVC3 通过Url传多个参数方法
查看>>
遭遇sql server 2005 启动包未能正确加载需要重新安装错误,重装.NET FRAMEWORK经历分析...
查看>>
《Essential C++》读书笔记 之 基于对象编程风格
查看>>