Grub 报告 "NOT SUPPORT TAG 0x0a"
Grub report that "NOT SUPPORT TAG 0x0a"
我正在制作 OS
Grub 报告“NOT SUPPORT TAG 0x0a”,如果它 real.Then 我将无法指定加载内核的地址。那我怎么link呢?还是grub在标准中规定的目标地址?
这是我的 header
.section .mbt2std
tag_start:
.long 0xE85250D6
.long 0
.long tag_end-tag_start
.long -1*(tag_end-tag_start + 0 + 0xE85250D6)
.vbe:
.short 5
.short 0
.long 20
.long 1024
.long 768
.long 32
.vbe_e:
.long 0
.rl:
.short 10
.short 0
.long 24
.long 0x100000
.long 0xffffffffffffffff
.long 4096
.long 0x100000
.rl_e:
.short 0
.short 0
.long 8
tag_end:
我不确定所有符合 GRUB 的加载程序在所有情况下都支持所有标签。标记 0a (10) 用于重定位,不适用于您的静态定位代码。您的链接描述文件已将 VMA 设置为 0x100000,因此 GRUB2 将自动从内存中的 0x100000(1 MiB 标记)开始加载您的内核和数据。我自己从来没有亲自使用过这个标签。
其他观察:
- 您可以使用
.balign 8
在标签之间添加所需的8字节对齐,这样可以更容易地保持对齐。可以在 Whosebug answer. 中找到这方面的示例
我正在制作 OS Grub 报告“NOT SUPPORT TAG 0x0a”,如果它 real.Then 我将无法指定加载内核的地址。那我怎么link呢?还是grub在标准中规定的目标地址? 这是我的 header
.section .mbt2std
tag_start:
.long 0xE85250D6
.long 0
.long tag_end-tag_start
.long -1*(tag_end-tag_start + 0 + 0xE85250D6)
.vbe:
.short 5
.short 0
.long 20
.long 1024
.long 768
.long 32
.vbe_e:
.long 0
.rl:
.short 10
.short 0
.long 24
.long 0x100000
.long 0xffffffffffffffff
.long 4096
.long 0x100000
.rl_e:
.short 0
.short 0
.long 8
tag_end:
我不确定所有符合 GRUB 的加载程序在所有情况下都支持所有标签。标记 0a (10) 用于重定位,不适用于您的静态定位代码。您的链接描述文件已将 VMA 设置为 0x100000,因此 GRUB2 将自动从内存中的 0x100000(1 MiB 标记)开始加载您的内核和数据。我自己从来没有亲自使用过这个标签。
其他观察:
- 您可以使用
.balign 8
在标签之间添加所需的8字节对齐,这样可以更容易地保持对齐。可以在 Whosebug answer. 中找到这方面的示例