繁体   English   中英

从引导程序运行汇编程序

[英]Run assembly program from bootloader

我最近开始了一个庞大的项目……制作自己的自制操作系统。 事实证明,这比我想象的要难得多,但是我决心坚持下去,直到获得可用的东西为止。 我设法使引导加载程序在VirtualBox Machine上工作,但是我仍然坚持下一步。 我正在尝试将第二阶段加载到引导加载程序,但是不知道如何将其加载到内存中并运行它。 我已经考虑过使用GRUB引导加载程序,因此请不要提出建议。 如果可能,代码示例将非常有帮助。 如果重要的话,我在Ubuntu上使用NASM。 任何帮助是极大的赞赏。

首先,您需要在引导加载程序中至少具有简单的文件系统支持。 只要在引导加载程序中很难支持功能齐全的文件系统,就可以使用以下几种技巧:

  1. 提供非常简单的文件系统支持。 例如,从引导设备的根目录中搜索具有给定名称的文件。

  2. 或者只是为第二阶段二进制文件保留一些物理扇区,然后从那里直接读取它。

您需要的第二项服务是加载和执行可执行文件。 最简单的解决方案是使用内存的普通二进制映像,例如在DOS .com文件中。

因此,引导加载程序将能够从磁盘加载一个更大的程序,将其放入内存中并运行它。 现在,这个更大的程序有足够的空间来提供文件系统支持和复杂的可执行文件加载/运行。 在更简单的情况下,此可执行文件可能包含您的整个内核,并且无需加载其他模块即可直接启动它。

如果您确实要使用GRUB,则必须创建兼容Multiboot的内核文件。 可以在以下位置找到规范: http : //www.gnu.org/software/grub/manual/multiboot/multiboot.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM