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

被折叠的 条评论
为什么被折叠?



