在Linux下安装配置bochs,并成功跑一个简单的boot引导(超详细)

在Linux下安装配置bochs,并成功跑一个简单的boot引导(超详细)

环境:centos7(建议带桌面的版本)镜像网址

环境配置:gcc、gas、nasm、make

1.配置环境

yum -y install xxx(eg:gcc.等)

若出现yum源问题请观看

没有可用软件包和yum源问题https://blog.csdn.net/weixin_42492218/article/details/127656213?spm=1001.2014.3001.5501

2.安装bochs

1.进入boch官网:bochs版本选择页 选择版本,原则上越新越好,博主选择的是2.6.9

2点击进入选择红框内tar.gz文件,点击下载,下载完成在Linux下进行解压

3.解压完成进入解压后的文件目录,在终端执行下列命令进行安装(make install须在root用户下进行,否则使用sudo进行执行)sudo make install

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

make

make install

4.接着执行下列配置参数,打开所有功能(不知道具体用到哪些)

./configure --with-x11 --with-x --enable-debugger --enable-disasm --enable-all-optimizations --enable-readline --enable-long-phy-address --enable-ltdl-install --enable-idle-hack --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

由于再次执行make、make install 时可能会出现一些文件缺失之类需要执行以下命令

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可以说配置安装完成了,为了更好的使用bochs,进行下一步配置操作

3.创建配置文件

1.创建一个配置文件,命名为bochsrc内容如下:

执行命令vim bochsrc(可以在自己新建的目录下进行创建,与后面.img文件放在同目录下最佳)

plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, iodebug=1

config_interface: textconfig

#使用GUI调试

display_library: x, options="gui_debug"

cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"

cpu: cpuid_limit_winnt=0

cpuid: x86_64=1, mmx=1, sep=1, simd=sse4_2, apic=xapic, aes=1, movbe=1, xsave=1

cpuid: family=6, model=0x1a, stepping=5

romimage: file=$BXSHARE/BIOS-bochs-latest

vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest

vga: extension=vbe, update_freq=5

keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none

mouse: type=ps2, enabled=0, toggle=ctrl+mbutton

pci: enabled=1, chipset=i440fx

clock: sync=none, time0=local, rtc_sync=0

private_colormap: enabled=0

#软盘启动的配置,a.img为软盘名

floppya: type=1_44, 1_44=boot.img, status=inserted, write_protected=0

ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14

ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15

ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11

ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9

# 硬盘启动配置,a.img为硬盘名,根据硬盘大小不同需改变后三个参数的值

#ata0-master: type=disk, mode=flat, path=a.img, cylinders=130, heads=16, spt=63

#ata0-slave: type=none

#ata0-master: type=none

#ata1-slave: type=none

# 软盘启动/硬盘启动

boot: floppy

# boot: disk

floppy_bootsig_check: disabled=0

log: -

logprefix: %t%e%d

panic: action=ask

error: action=report

info: action=report

debug: action=ignore

debugger_log: -

com1: enabled=1, mode=null

com2: enabled=0

com3: enabled=0

com4: enabled=0

parport1: enabled=1, file=none

parport2: enabled=0

speaker: enabled=1, mode=system

magic_break: enabled=0

print_timestamps: enabled=0

port_e9_hack: enabled=0

megs: 2048

4.编写一个简单的boot引导程序(使用asm)

建议与bochsrc在同一目录下

代码详细说明请参考:

简单的boot引导的实现代码(内有详细注解,asm INT10的使用)https://blog.csdn.net/weixin_42492218/article/details/127665541?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127665541%22%2C%22source%22%3A%22weixin_42492218%22%7D

org 0x7c00

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

jmp $

startBootMessage: db "start Boot"

;=========fill zero until whole sector

times 510-($-$$) db 0

dw 0xaa55

编写完成后,对其进行编译

nasm boot.asm -o boot.bin

5.创建一个软盘镜像

如图所示,建议与bochsrc在同一目录下

创建为软盘即fd,大小默认1.44M即可,命名为boot.img

之后为查看创建是否成功

6.将生成的boot.bin写入img文件中

执行命令

这行命令中的if = boot.bin指定输入源文件名,而of=boot .img则指定输出文件名,参数bs=512指定传输的块大小为512B,参数count=1指定写入到目标文件的块数量,参数conv=notrunc规定在写入数据后不截断(改变)输出文件的尺寸大小。

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

执行日志:

7.开始进行boot引导的执行

执行命令

bochs -f ./bochsrc

这时可能会出现错误:

Event type: PANIC

Device: [XGUI ]

Message: bochs: cannot connect to Xll server

是缺少图形库等问题,执行下列命令再次运行即可

yum install xorg*

yum install libX*

若未成功弹出窗口,输入debug即可

由于配置文件中有options="gui_debug" 所以需要输入debug才可继续进行,将该项删除即可正常运行。

接着输入 c 就成功了!!!!

成功跑出boot引导:

相关推荐

CF手游v4折扣是多少?官方折扣如何计算?
bt365体育手机客户端

CF手游v4折扣是多少?官方折扣如何计算?

📅 11-06 👁️ 5619
抖音人工客服多久回复?计时方法有哪些?
bt365体育手机客户端

抖音人工客服多久回复?计时方法有哪些?

📅 08-11 👁️ 3705
科目二考试一次过经验分享,把握好细节很重要!
365bet网上网投

科目二考试一次过经验分享,把握好细节很重要!

📅 10-10 👁️ 5278
生当作人杰,死亦为鬼雄。
365bet网上网投

生当作人杰,死亦为鬼雄。

📅 07-08 👁️ 6505
崩坏3的任务刷新时间有固定的规定吗
365bet网上网投

崩坏3的任务刷新时间有固定的规定吗

📅 08-08 👁️ 8304