multiboot相关内容

未找到 GRUB 多重引导标头

阅读完这个这个问题后,这是主要的答案,我在内核上运行 readelf,并注意到我的 .text 部分位于 0x00101000 而不是 0x00100000.我还注意到上面的一个部分读取了 .not.gnu.build-i ,它位于 .text 部分应该在的位置.有没有办法让我的 .text 部分位于正确的位置?我已经用align 4设置为1M. 解决方案 问题在于 LD(或 LD via ..
发布时间:2021-11-24 23:20:21 C#

程序集:用于自定义操作系统键盘支持的引导加载程序

我有一个简单的自定义操作系统(目前没有做太多事情:D).现在我正在使用不支持键盘的程序集文件 (boot.s). 汇编文件(boot.s): # 将幻数设置为 0x1BADB002 以供引导加载程序识别.set MAGIC, 0x1BADB002# 设置标志为0.设置标志,0# 设置校验和.set 校验和,-(MAGIC + FLAGS)# 设置多引导启用.section .multibo ..
发布时间:2021-09-29 19:37:45 其他开发

在 Grub2 中启动自定义内核

我想用 Grub2 启动一个自定义内核.我使用了旧的(grub 1)多重引导头: .set flags, 0x0.set 魔法,0x1badb002.set checksum, -(magic + flags).align 4.long 魔法.long 标志.long 校验和...movl %eax, 魔法 但它不适用于 Grub2,所以我搜索了新的 Multiboot 规范并找到了它:htt ..
发布时间:2021-09-29 19:34:43 其他开发

找不到GRUB Multiboot标头

阅读此此问题,它是主要答案,我在内核上运行 readelf,注意到我的 .text 部分在 0x00101000 而不是 0x00100000.我还注意到上面的部分显示为.not.gnu.build-i,该位置应该位于.text部分.有没有一种方法可以使我的.text节放置在正确的位置?我已经使用 align 4 将其设置为1M. 解决方案 问题是 LD (或 LD 通过 GCC )自动在 ..
发布时间:2021-05-29 21:29:20 其他开发

x86保护模式下的键盘中断导致处理器错误

我正在研究一个简单的内核,并且一直在尝试实现键盘中断处理程序以摆脱端口轮询.我一直在-kernel模式下使用QEMU(以减少编译时间,因为使用grub-mkrescue生成iso需要相当长的时间),并且工作正常,但是当我想切换到-cdrom模式时,它突然开始了崩溃.我不知道为什么. 最终,我意识到,当它从iso引导时,它还会在引导内核本身之前运行GRUB引导程序.我发现GRUB可能会将处理器 ..
发布时间:2020-11-30 04:16:15 其他开发

最简单的链式加载启动管理器

为了从闪存驱动器启动,我们在实模式下使用BIOS中断13h加载磁盘,并指定了磁盘0x80.如 我正在尝试制作简单的GRUB . 我的第一步是从闪存驱动器启动(将MBR加载到0x7C00并打印一条消息,作为正确启动的证明)并读取我的主HDD(我假设它的编号为0x81,并且前15个扇区需要重新启动)再次进入0x7C00. 我想这个天真的主意应该让我进入主硬盘的引导加载程序,但这不是预期的. ..
发布时间:2020-06-17 19:14:14 其他开发

x86 ASM:DD被用作“指令"吗?

在以下x86汇编代码中: dd 0x1BADB002 dd 0x00 dd - (0x1BADB002+0x00) 该值似乎未分配给任何变量.那么这段代码是做什么的呢?我听说过一些有关它存储在内存中的信息,但是究竟在哪里? 解决方案 dd是“伪指令",它将4字节常量组装到输出中,与add eax,eax将0x01 0xc0组装到输出中的方式相同.输出. NASM手册第3.2 ..
发布时间:2020-04-25 11:37:10 其他开发