bochs安装与boot引导程序

bochs的安装

首先输入命令先安装几个bochs的依赖
sudo yum install gcc
sudo yum install gtk2 gtk2-devel
sudo yum install libXt libXt-devel
sudo yum install libXpm libXpm-devel

然后执行su root输入密码进入到root管理员身份

接下来就是下载并解压bochs了
wget https://nchc.dl.sourceforge.net/project/bochs/bochs/2.6.9/bochs-2.6.9.tar.gz
tar -zxvf bochs-2.6.9.tar.gz
cd bochs2.6.9
读者都可以自行去官网找到最新版下载,因为版本越新出现的奇怪错误越少

接下来就可以进行编译安装了
./configure --with-x11 --with-wx --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-idle-hack --enable-plugins --enable-a20-pin --enable-x86-64 --enable-smp --enable-cpu-level=6 --enable-large-ramfile --enable-repeat-speedups --enable-fast-function-calls --enable-handlers-chaining --enable-trace-linking --enable-configurable-msrs --enable-show-ips --enable-cpp --enable-debugger-gui --enable-iodebug --enable-logging --enable-assert-checks --enable-fpu --enable-vmx=2 --enable-svm --enable-3dnow --enable-alignment-check --enable-monitor-mwait --enable-avx --enable-evex --enable-x86-debugger --enable-pci --enable-usb --enable-voodoo
在这里可能会出现文件不存在的错误,只要将后缀为.cpp的文件克隆出一个.cc的副本就可以了,举几个常用的
cp misc/bximage.cpp misc/bximage.cc
cp iodev/hdimage/hdimage.cpp iodev/hdimage/hdimage.cc
cp iodev/hdimage/vmware3.cpp iodev/hdimage/vmware3.cc
cp iodev/hdimage/vmware4.cpp iodev/hdimage//vmware4.cc
cp iodev/hdimage/vpc-img.cpp iodev/hdimage/vpc-img.cc
cp iodev/hdimage/vbox.cpp iodev/hdimage/vbox.cc
make
make install

然后我们还需要给bochs配置运行环境,这个环境是通过文件进行配置的,即在.bochsrc文件里面,配置如下,如果文件找不到则被隐藏了
在这里插入图片描述

plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, iodebug=1
config_interface: textconfig
display_library: x
#memory: host=2048, guest=2048
romimage: file="/usr/local/share/bochs/BIOS-bochs-latest"
vgaromimage: file="/usr/local/share/bochs/VGABIOS-lgpl-latest"
boot: floppy
floppy_bootsig_check: disabled=0
floppya: type=1_44, 1_44="boot.img", status=inserted, write_protected=0
#no floppyb
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=none
ata0-slave: type=none
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata1-master: type=none
ata1-slave: type=none
ata2: enabled=0
ata3: enabled=0
pci: enabled=1, chipset=i440fx
vga: extension=vbe, update_freq=5
 
cpu: count=1:1:1, ips=4000000, quantum=16, model=corei7_haswell_4770, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0, msrs="msrs.def"
 
cpuid: x86_64=1,level=6, mmx=1, sep=1, simd=avx512, aes=1, movbe=1, xsave=1,apic=x2apic,sha=1,movbe=1,adx=1,xsaveopt=1,avx_f16c=1,avx_fma=1,bmi=bmi2,1g_pages=1,pcid=1,fsgsbase=1,smep=1,smap=1,mwait=1,vmx=1
cpuid: family=6, model=0x1a, stepping=5, vendor_string="GenuineIntel", brand_string="Intel(R) Core(TM) i7-4770 CPU (Haswell)"
 
print_timestamps: enabled=0
debugger_log: -
magic_break: enabled=0
port_e9_hack: enabled=0
private_colormap: enabled=0
clock: sync=none, time0=local, rtc_sync=0
#no cmosimage
#no loader
log: -
logprefix: %t%e%d
debug: action=ignore
info: action=report
error: action=report
panic: action=ask
keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
mouse: type=ps2, enabled=0, toggle=ctrl+mbutton
speaker: enabled=1, mode=system
parport1: enabled=1, file=none
parport2: enabled=0
com1: enabled=1, mode=null
com2: enabled=0
com3: enabled=0
com4: enabled=0

megs: 2048

Boot引导程序

在第一节,我们已经下载好bochs虚拟机并配置好了,接下来就是实现一个简单的boot引导程序。

首先vim boot.asm创建且打开一个boot.asm文件,然后输入以下代码

然后用以下代码:

 
BaseOfStack	equ	0x7c00
 
Label_Start:
 
	mov	ax,	cs
	mov	ds,	ax
	mov	es,	ax
	mov	ss,	ax
	mov	sp,	BaseOfStack
 
;=======	clear screen
 
	mov	ax,	0600h
	mov	bx,	0700h
	mov	cx,	0
	mov	dx,	0184fh
	int	10h
 
;=======	set focus
 
	mov	ax,	0200h
	mov	bx,	0000h
	mov	dx,	0000h
	int	10h
 
;=======	display on screen : Start Booting......
 
	mov	ax,	1301h
	mov	bx,	000fh
	mov	dx,	0000h
	mov	cx,	10
	push	ax
	mov	ax,	ds
	mov	es,	ax
	pop	ax
	mov	bp,	StartBootMessage
	int	10h
 
;=======	reset floppy
 
	xor	ah,	ah
	xor	dl,	dl
	int	13h
 
	jmp	$
 
StartBootMessage:	db	"Start Boot"
 
;=======	fill zero until whole sector
 
	times	510 - ($ - $$)	db	0
	dw	0xaa55

接下来就是使用nasm编译生成.bin文件
nasm boot.asm -o boot.bin

然后将bin写入到img
dd if=boot.bin of=/home/wujian/bochs-2.6.9/boot.img bs=512 count=1 conv=notrunc
在这里插入图片描述

然后就是制作软盘了
在这里插入图片描述
选择1 创建一个软盘
在这里插入图片描述
输入fd 创建软盘镜像,hd为硬盘
在这里插入图片描述
默认为1.44M直接回车
在这里插入图片描述
输入镜像名字,我们选择boot.img
在这里插入图片描述
创建成功

然后就是运行bochs了
bochs
在这里插入图片描述
直接回车开始运行虚拟机
在这里插入图片描述
最后输入c
在这里插入图片描述
运行成功,接下来就可以关闭了
如果无法正常关闭可以执行
ps aux找到对应的pid
在这里插入图片描述
然后执行sudo kill -9 (对应pid)25898即可强制关闭

发布了6 篇原创文章 · 获赞 8 · 访问量 1645

猜你喜欢

转载自blog.csdn.net/miswujian/article/details/104461729
今日推荐