Ubuntu下安装Bochs2.7

前言

通过自带软件库sudo apt-get install bochs bochs-x安装的Bochs运行时不显示任何内容,这里选用源码安装方式。
在这里插入图片描述
在这里插入图片描述

下载安装

  1. 源码下载https://sourceforge.net/projects/bochs/files/bochs/2.7/bochs-2.7.tar.gz/download
  2. 解压
    tar -zxvf bochs-2.7.tar.gz
    
  3. 进入目录cd bochs-2.7
  4. 生成配置
    ./configure --prefix=/usr/local/bochs --enable-debugger --enable-iodebug --enable-iodebug --enable-x86-debugger --with-x --with-x11
    
  5. 编译make
  6. 安装sudo make install
  7. 编辑环境变量vim ~/.bashrc
    # 添加到~/.bashrc文件末尾
    alias bochs='/usr/local/bochs/bin/bochs'
    alias bximage='/usr/local/bochs/bin/bximage'
    
  8. 环境变量生效source ~/.bashrc
  9. 测试bochs
    在这里插入图片描述

在Bochs实现最简单的操作系统

创建软盘

使用bochs自带的bximage工具创建软盘,执行bximage
在这里插入图片描述

编写并编译汇编指令

  1. 创建文件vim boot.asm
  2. 添加内容
    	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. 保存后编译
    nasm boot.asm -o boot.bin
    

编写bochs配置文件

  1. 创建文件vim bochsrc
  2. 添加内容
    megs: 32
    romimage: file=/usr/local/bochs/share/bochs/BIOS-bochs-latest
    vgaromimage: file=/usr/share/vgabios/vgabios.bin
    floppya: 1_44=boot.img, status=inserted
    boot: floppy
    log: bochsout.txt
    mouse: enabled=0
    keyboard: keymap=/usr/local/bochs/share/bochs/keymaps/x11-pc-us.map
    

将操作系统写入到软盘

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

启动操作系统

bochs -f bochsrc

在这里插入图片描述

在这里插入图片描述
至此,成功在bochs上运行了我们的操作系统,这个系统的功能是输出字符串Hello, OS world!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

it00zyq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值