我昨天买了一本关于操作系统开发的书,但是这本书是为 Windows 系统编写的,而描述中没有提到这一点。我需要将 .BAT 文件转换为等效的 shell 脚本或 makefile,但不知道如何解决一个错误。
这是我的目录结构:
OsDev
--src/
----Boot.asm
----Kernel_Entry.asm
----main.c
--bin/
本书的源代码可以在这里找到https://github.com/TINU-2000/OS-DEV/tree/main/Beginning-OS-DEV/Entering%20c
我将.bat 文件重写为这个.sh 文件:
#!/bin/sh
nasm src/Boot.asm -f bin -o bin\bootsect.bin
nasm src/Kernel_Entry.asm -f elf -o bin\Entry.bin
gcc -m32 -ffreestanding -c src/main.c -o bin\kernel.o
ld -T NUL -o bin\Kernel.img -Ttext 0x1000 bin\Entry.bin bin\kernel.o
objcopy -O binary -j .text bin\kernel.img bin\kernel.bin
copy /b /Y bin\bootsect.bin+bin\kernel.bin bin\os-image
qemu-system-i386 -drive format=raw,file=bin\os-image
但我收到一个错误:
ld: cannot open linker script file NUL: No such file or directory
objcopy: 'binkernel.img': No such file
./make.sh: 11: copy: not found
有人能告诉我需要做什么才能让它在 ubuntu 22.04 上运行吗?非常感谢!