如何从磁盘/ cd / usb启动我的小型控制台,具有以下配置:
我想要使用的程序是,当我的系统启动时,它从磁盘/ cd / usb启动,然后启动我的操作系统。现在想象一下,操作系统将成为一个hello world程序。我实际上想看看现实世界操作系统如何实现自己。
答案 0 :(得分:3)
引导加载程序必须为512字节。不能再少了。 它必须以标准的PC启动签名结束:0xAA55。
另请注意,PC以16位模式启动。 您需要将内核或二级引导加载程序从该代码加载到内存中,然后跳转到该代码(并可能将CPU切换到32位保护模式)。
例如(nasm):
BITS 16
; Your assembly code here (510 bytes max)...
jmp $
; Fills the remaining space with 0
times 510 - ( $ - $$ ) db 0
; Boot signature
dw 0xAA55
答案 1 :(得分:2)
执行启动加载程序。引导加载程序应存在于HardDisk的前512个字节中。此位置称为MBR(主引导记录)
当bios加载时,它会检查媒体是否包含MBR。它验证MBR签名0xAA55,它应该作为MBR的最后2个字节出现。
然后Bios将BootLoader加载到地址为0x7C00的RAM中
然后,通过读取文件系统,引导加载程序实际上将内核加载到内存中。
通常你不能用512字节的所有代码,所以会有一个辅助启动加载器。
辅助引导加载程序将由主引导加载程序加载。
辅助引导加载程序加载IDT和GDT(中断向量表和全局描述符表)。使A20门进入保护模式。
辅助引导加载程序将32位内核从磁盘加载到内存中,然后跳转到内核代码
有关更多信息,您可以下载Linux kernel v0.01(第一版)。看看它是如何完成的。令我惊讶的是,读取文件系统的代码+进入保护模式的代码适合512字节的代码。