Разработка своей ОС на Windows
Возник такой вопрос, а возможно ли вообще создать свою ос, используя Windows(плюс ld, gcc, C, nasm, qemu), я пересмотрел множество вариантов простеньких ОС'ок, но там всегда появлялся elf, а он как известно Linux'овский.
Ответы (1 шт):
Автор решения: SurfaceStack
→ Ссылка
Конечно можно. Ядро можно сделать файлом bin.
Загрузчик пишется на NASM, ядро на C/C++. После с помощью ld все собирается в один файл. Вот пример моего linker.ld (ядро загружается по 0x200000 (2Мб) и имеет формат bin):
OUTPUT_FORMAT("binary")
ENTRY(_start)
SECTIONS {
.text 0x200000 : {
*(.text)
*(.code)
*(.rodata*)
}
.data ALIGN(0x1000) : {
*(.data)
}
.bss ALIGN(0x1000) : {
*(.bss)
}
/* .empty ALIGN(0x1000) - 1 : {
BYTE(0)
} */
}
Линкуется такой командой ($(SOURCES) - все остальные файлики (*.o) для ядра):
x86_64-elf-ld -m elf_x86_64 -T src/kernel/linker.ld -nostdlib -o bin/kernel/kernel.bin bin/kernel/kentry.o $(SOURCES)
Вот мой kentry.o:
[bits 64]
extern kmain
section .text
global _start
_start:
call kmain
jmp $
В загрузчике надо загружать ядро с диска или просто определенные сектора по нужному адресу и передавать туда управление