bochs

● 制作一个硬盘

./bximage

步骤与制作软盘的相似,完成后将bochs软件提示的最后一句话,添加到自己的配置文件里:

dd if=loader.bin of=~/Softwares/bochs-2.6.9/a.img bs=512 count=1 conv=notrunc
dd if=zero.bin of=~/Softwares/bochs-2.6.9/hd.img bs=512 count=10 conv=notrunc 
dd if=app.bin of=~/Softwares/bochs-2.6.9/hd.img bs=512 seek=10 conv=notrunc

要加conv=notrunc参数,否则会改变磁盘文件的大小

参考:http://blog.csdn.net/zhaodedong/article/details/51082128

● bochs调试

u/4 ;可反汇编得到当前指令后面4条指令的地址,然后通过b 0x700b(示例)设置断点,输入c,跳转到断点处

r 显示寄存器内容

eflags 0x00000006: id vip vif ac vm rf nt IOPL=0 of df if tf sf zf af PF cf

用r指令显示出的eflags各个标志位,若为大写字母,则为1,否则为0。因此上面的标志位PF=1,其他为0

xp /3 0x90000 查询从0x90000开始的3个字节内容

step 2 ;跳过2条指令

n ;跳过loop,rep等循环指令

print-stack; 查看栈的内容,显示栈顶以上16字的内容

sreg查看段寄存器

 

参考:http://blog.csdn.net/ddna/article/details/4997695

● linux下安装bochs并创建一个简单的os

1. 创建一个软盘a.img

./bximage 

2. 将引导程序复制到软盘

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

3. 新建配置文件myos/bochsrc.bxrc

加入如下内容:

# how much memory the emulated machine will have
megs: 32

# filename of ROM images
romimage: file=bios/BIOS-bochs-latest
vgaromimage: file=bios/VGABIOS-lgpl-latest

# what disk images will be used

floppya: 1_44=a.img, status=inserted

# choose the boot disk.
boot: floppy

4. 运行os

./bochs -f rao/bochsrc.bxrc

5. 回车,在命令行输入c,然后回车

参考:http://www.linuxidc.com/Linux/2016-10/135905.htm

● windows下创建一个简单的os

1. 用bximage.exe创建一个软盘,boot.img

2. 创建引导程序boot.asm,并编译

nasm boot.asm -o boot.bin

3. 将引导程序写入到软盘(在linux下写)

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

4. 在bochs安装目录下新建一个目录myos,将dlxlinux系统里的文件全部拷贝到myos目录下,只需修改两个文件:bochsrc.bxrc和run.bat

5. 

修改这行:floppya: 1_44= boot.img, status= inserted

注释掉这行:floppyb: 1_44= floppyb.img, status= inserted

注释掉带有"hd10meg.img" 的行,这是
# hard disk
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17
启动项应该为软驱启动,这与我们前面做的软驱镜像一直
# choose the boot disk.
boot: floppy

run.bat修改后的文件如下:
cd "D:/SoftTools/Bochs-2.3/myos"
../bochs -q -f bochsrc.bxrc

6. 点击bochsrc.bxrc或者run.bat运行

参考:http://blog.csdn.net/sinzou1/article/details/5905813

转载于:https://www.cnblogs.com/volcanorao/p/7612344.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值