我正在开发一个操作系统。我想在我的主内核asm
中加入一个小elf
程序,它可以作为第一个加载进程。我无法让这个工作。该计划是initcode.s
。我使用从xv6操作系统源修改的以下Makefile
来执行此任务:
initcode:
$(AS) $(ASFLAGS) initcode.s -o initcode.o
ld $(LDFLAGS) -N -e start -Ttext 0 -o initcode initcode.o
objcopy --input binary --output elf32-i386 --binary-architecture i386 initcode.out initcode
kernel.elf: $(OBJECTS) initcode
ld -T link.ld -melf_i386 $(OBJECTS) -o kernel.elf initcode
内核编译和链接很好。 objcopy
还创建标记,使我能够从内核代码中找到二进制文件。但是initcode
的内容被删除了。内容与initcode.out
中的汇编程序步骤不同。
如何在我的主initcode.s
中将kernel.elf
包含为单独的二进制文件并生成一些标记,以便从内核中找到它?有什么建议吗?
答案 0 :(得分:1)
我可以想到两种简单的方法。如果您愿意,肯定会有更复杂的方法。
OR