簡體   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