我在内核中使用multiboot2,并试图从GRUB2获取ELF符号,但我不知道如何做到这一点。
我在boot.s中设置了.long MULTIBOOT_TAG_TYPE_ELF_SECTIONS,还从grub2中获得了elf的类型、大小、数量、entsize和shndx。
.section .multiboot_header
.align 8
multiboot_header:
.long MULTIBOOT2_HEADER_MAGIC
.long MULTIBOOT_ARCHITECTURE_I386
.long multiboot_header_end - multiboot_header
.long -(MULTIBOOT2_HEADER_MAGIC + MULTIBOOT_ARCHITECTURE_I386 + multiboot_header_end - multiboot_header)
# multiboot2 information request
.align 8
mbi_tag_start:
.short MULTIBOOT_HEADER_TAG_INFORMATION_REQUEST
.short MULTIBOOT_HEADER_TAG_OPTIONAL
.long mbi_tag_end - mbi_tag_start
.long MULTIBOOT_TAG_TYPE_CMDLINE
.long MULTIBOOT_TAG_TYPE_MODULE
.long MULTIBOOT_TAG_TYPE_BOOTDEV
.long MULTIBOOT_TAG_TYPE_MMAP
.long MULTIBOOT_TAG_TYPE_ELF_SECTIONS
.long MULTIBOOT_TAG_TYPE_APM
.align 8
mbi_tag_end:
.short MULTIBOOT_HEADER_TAG_END
.short 0
.long 8
multiboot_header_end:struct multiboot_tag_elf_sections {
multiboot_uint32_t type;
multiboot_uint32_t size;
multiboot_uint32_t num;
multiboot_uint32_t entsize;
multiboot_uint32_t shndx;
char sections[0];
};发布于 2019-06-19 12:38:46
在多引导信息中搜索带有type=9的标记。
https://stackoverflow.com/questions/54182969
复制相似问题