OSDev имеет вики-запись в Visual Studio , которая может дать некоторое представление, особенно со ссылками на блог записей Кашика Среневасана по теме PE ядра, предназначенные для загрузки мультизагрузочными загрузчиками (например, GRUB).
Пара больших, широких штрихов, которые вы должны знать:
- В заголовке мультизагрузки вам необходимо использовать AOUT kludge.
- Вам необходимо указать аргумент / BASE: 0x100000 для компоновщика, чтобы окончательный двоичный код основывался на том, куда его поместит загрузчик.
- Точка входа вашего ядра (обычно называемая '
kmain
') должна иметь __declspec(noreturn)
, и вам нужно будет сделать __asm { hlt }
вместо возврата.