为 GRUB 引导加载程序的多重引导指定的全局变量的含义是啥

Posted

技术标签:

【中文标题】为 GRUB 引导加载程序的多重引导指定的全局变量的含义是啥【英文标题】:What are meaning of the global variables specified for multiboot for GRUB boot loader为 GRUB 引导加载程序的多重引导指定的全局变量的含义是什么 【发布时间】:2017-03-15 03:19:00 【问题描述】:

我正在努力弄清楚这是做什么的

.set ALIGN,    1<<0             # align loaded modules on page boundaries
.set MEMINFO,  1<<1             # provide memory map
.set FLAGS,    ALIGN | MEMINFO  # this is the Multiboot 'flag' field
.set MAGIC,    0x1BADB002       # 'magic number' lets bootloader find the header
.set CHECKSUM, -(MAGIC + FLAGS) # checksum of above, to prove we are multiboot

所以我有所有这些注释行,但我找不到为什么会这样。第一组对齐加载的模块如何导致 ALIGN 全局变量的结果为 1 而 MEMINFO 为 2。我不知道。

【问题讨论】:

gnu.org/software/grub/manual/multiboot/multiboot.html 【参考方案1】:

Michael 指向Multiboot Specification 的链接准确地显示了正在发生的事情。 FLAGS 符号(在您的情况下包含 0xB0000000)指定 OS 映像请求或需要引导加载程序的功能。由于 ALIGN 符号而设置的位 0 指定与操作系统一起加载的所有引导模块必须在页面 (4KB) 边界上对齐。由 MEMINFO 符号设置的位 2 指定需要内存信息。

【讨论】:

以上是关于为 GRUB 引导加载程序的多重引导指定的全局变量的含义是啥的主要内容,如果未能解决你的问题,请参考以下文章

linux系统管理之grub引导

从 GRUB2 多重引导信息结构中获取总可用 RAM

grub命令磁盘管理

GRUB 的第一阶段引导加载程序如何加载第二阶段引导加载程序?

具有共享库支持的 Grub 引导加载程序

Linux系统启动流程之grub