mcopy 说“无法初始化 '::'”,没有明显的原因

问题描述 投票:0回答:1

我有这个makefile:

ASM = nasm

.PHONY: floppyimage kernel bootloader everything

goldos: everything
    qemu-system-i386 -fda build/goldos.img

norun: everything

everything: floppyimage kernel bootloader build

floppyimage: build/goldos.img

build/goldos.img: build bootloader kernel
    dd if=/dev/zero of=build/goldos.img bs=512 count=2880
    mkfs.fat -F 12 -n "GOLDOS" build/goldos.img
    dd if=build/bootloader.bin of=build/goldos.img conv=notrunc
    mcopy -i build/goldos.img build/kernel.bin "::kernel.bin"

bootloader: build/bootloader.bin

build/bootloader.bin: build bootloader/bootloader.asm
    $(ASM) bootloader/bootloader.asm -fbin -obuild/bootloader.bin

kernel: build/kernel.bin

build/kernel.bin: build kernel/kernel.asm
    $(ASM) kernel/kernel.asm -fbin -obuild/kernel.bin

clean:
    rm -r build

build:
    mkdir -p build

出于某种愚蠢的原因,它开始说:

dd if=/dev/zero of=build/goldos.img bs=512 count=2880
2880+0 records in
2880+0 records out
1474560 bytes (1.5 MB, 1.4 MiB) copied, 0.00605087 s, 244 MB/s
mkfs.fat -F 12 -n "GOLDOS" build/goldos.img
mkfs.fat 4.2 (2021-01-31)
dd if=build/bootloader.bin of=build/goldos.img conv=notrunc
1+0 records in
1+0 records out
512 bytes copied, 5.852e-05 s, 8.7 MB/s
mcopy -i build/goldos.img build/kernel.bin "::kernel.bin"
init :: non DOS media (here, the parentesis are not part of the output)
Cannot initialize '::'
::kernel.bin: Success
make: *** [makefile:18: build/goldos.img] Error 1

bootloader.asm(在 github 上,由于超过 300 行)
我无法再运行这个,在网上找不到任何信息,kernel.asm 没有任何信息,
当我向该文件添加一些内容时,mcopy 开始起作用,但我删除了它。 已经尝试删除输出文件,但同样的错误。

bootloader kernel makefile
1个回答
0
投票

jmp start
替换为
jmp strict short start
,然后添加
nop
。 BIOS 期望标头之前有 3 个字节,我可以通过在
talk
标签内添加对
fatal_reboot
的调用来获得更多空间,因为每个引用都在
fatal_reboot
之前运行对话。
谢谢@ecm。

© www.soinside.com 2019 - 2024. All rights reserved.