boxuchsrc模板

在使用Bochs模拟器时遇到软盘镜像启动问题,通过调整配置文件中的floppya参数,如将`image=a.img, status=inserted`改为`1_44=a.img, status=inserted`,成功解决了启动问题。此外,在硬盘启动过程中,使用dd命令写入二进制信息到硬盘映像时,务必包含`conv=notrunc`选项,以避免文件大小错误。" 108122984,7525992,Linux下线程池模型的实现与优化,"['c++', '操作系统', '并发编程', '多核编程', '线程管理']

软盘镜像启动

真坑,用bxiamge制作出来的软盘,提示让在配置文件中加入

floppya: image=a.img, status=inserted 这句话

但是死活不对

网上让加入

floppya: 1_44=a.img, status=inserted 这句话

结果就对了,真的是,bochs这个软件真坑

 

megs: 32
romimage: file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/local/share/bochs/VGABIOS-lgpl-latest
floppya: 1_44=a.img, status=inserted
boot: floppy
log: bochsout.txt
mouse: enabled=0
keyboard_mapping: enabled=1, map=/usr/local/share/bochs/keymaps/x11-pc-us.map


gcc -I lib/kernel/ -I lib/ -I kernel/ -c -fno-builtin -o build/main.o kernel/main.c

nasm -f elf -o build/print.o lib/kernel/print.S

nasm -f elf -o build/kernel.o kernel/kernel.S

gcc -I lib/kernel/ -I lib/ -I kernel/ -c -fno-builtin -o build/interrupt.o kernel/interrupt.c

gcc -I lib/kernel/ -I lib/ -I kernel/ -c -fno-builtin -o build/init.o kernel/init.c

ld -Ttext 0xc0001500 -e main -o build/kernel.bin build/main.o build/init.o 














build/kernel.bin: build/main.o build/init.o build/interrupt.o build/print.o build/kernel.o build/timer.o 
	ld  -m32 elf_i386 -Ttext 0xc0001500 -e main -o build/kernel.bin  build/main.o build/init.o build/interrupt.o build/print.o build/kernel.o build/timer.o 

build/timer.o:device/timer.c
	gcc -m32  -fno-stack-protector -I lib/kernel      -c    device/timer.c   -o    build/timer.o

build/main.o:kernel/main.c 
	gcc -m32  -fno-stack-protector -I lib/kernel/ -I lib/ -I kernel/ -c -fno-builtin  kernel/main.c         -o    build/main.o

build/init.o:kernel/init.c
	gcc -m32  -fno-stack-protector -I lib/kernel/  -I lib/ -I kernel/ -c -fno-builtin  kernel/init.c        -o    build/init.o

build/interrupt.o:kernel/interrupt.c
	gcc -m32  -fno-stack-protector -I lib/kernel/ -I lib/ -I kernel/ -c -fno-builtin   kernel/interrupt.c   -o    build/interrupt.o

build/kernel.o:kernel/kernel.S
	nasm -f elf  kernel/kernel.S 		-o    build/kernel.o

build/print.o:lib/kernel/print.S
	nasm -f elf  lib/kernel/print.S		-o    build/print.o

loader.bin:loader.S
	nasm  loader.S -o loader.bin

mbr.o:mbr.S
	nasm  mbr.S -o mbr.bin

dd if=mbr.bin of=c.img bs=512 count=1 conv=notrunc
dd if=loader.bin of=c.img bs=512 count=3 seek=2 conv=notrunc
dd if=kernel.bin of=c.img bs=512 count=20 seek=9 conv=notrunc

dd if=mbr.bin of=start.img bs=512 count=1 conv=notrunc
dd if=loader.bin of=start.img bs=512 count=3 seek=2 conv=notrunc
dd if=kernel.bin of=start.img bs=512 count=20 seek=9 conv=notrunc






  build/interrupt.o build/print.o build/kernel.o

硬盘启动

需要注意的是在向硬盘写入二进制信息的时候,dd if=a.bin of=c.img count=1 bs=512 conv=notrunc 

一定要加入 conv=notrunc 这句话,不然c.img文件的大小就会变成 count * bs的大小。

megs: 32

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

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


#floppya: image="a.img", status=inserted
floppya: 1_44=a.img, status=inserted

#boot:floppy


ata0-master: type=disk, path="c.img", mode=flat, cylinders=20, heads=16, spt=63
boot: disk


mouse: enabled=1

keyboard:keymap=/usr/local/share/bochs/keymaps/x11-pc-us.map





 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值