diff --git a/boot/CYRILL1.F16 b/boot/CYRILL1.F16 new file mode 100644 index 0000000..2a85558 Binary files /dev/null and b/boot/CYRILL1.F16 differ diff --git a/boot/CYRILL2.F16 b/boot/CYRILL2.F16 new file mode 100644 index 0000000..d810183 Binary files /dev/null and b/boot/CYRILL2.F16 differ diff --git a/boot/CYRILL3.F16 b/boot/CYRILL3.F16 new file mode 100644 index 0000000..badbd7b Binary files /dev/null and b/boot/CYRILL3.F16 differ diff --git a/configs/autorun.cfg b/configs/autorun.cfg new file mode 100644 index 0000000..e69de29 diff --git a/configs/kernel.cfg b/configs/kernel.cfg new file mode 100644 index 0000000..e69de29 diff --git a/configs/limine.cfg b/configs/limine.cfg new file mode 100644 index 0000000..65713aa --- /dev/null +++ b/configs/limine.cfg @@ -0,0 +1,12 @@ +TIMEOUT=5 +DEFAULT_ENTRY=0 +INTERFACE_BRANDING=By Aren Elchinyan [Арен Елчинян]1234 + +TERM_FONT=boot:///CYRILL2.F16 +TERM_FONT_SIZE=8x16 + +:MSEOS (KASLR on) + PROTOCOL=limine + KASLR=no + KERNEL_PATH=boot:///kernel.elf + diff --git a/configs/linker.ld b/configs/linker.ld new file mode 100644 index 0000000..dde8bb8 --- /dev/null +++ b/configs/linker.ld @@ -0,0 +1,63 @@ +/* Сообщаем компоновщику, что мы хотим получить выходной файл в формате x86_64 ELF64 */ +OUTPUT_FORMAT(elf64-x86-64) +OUTPUT_ARCH(i386:x86-64) + +/* Мы хотим, чтобы символ _start был нашей точкой входа */ +ENTRY(_start) + +/* Определяем заголовки программы, чтобы загрузчик дал нам правильные */ +/* разрешения MMU */ +PHDRS +{ + text PT_LOAD FLAGS((1 << 0) | (1 << 2)) ; /* Execute + Read */ + rodata PT_LOAD FLAGS((1 << 2)) ; /* Read only */ + data PT_LOAD FLAGS((1 << 1) | (1 << 2)) ; /* Write + Read */ + dynamic PT_DYNAMIC FLAGS((1 << 1) | (1 << 2)) ; /* Динамический PHDR для учёта перерасположений */ +} + +SECTIONS +{ + /* Мы хотим быть размещены в верхних 2 ГБ адресного пространства, для оптимизации */ + /* и потому что это предписывает спецификация Limine. */ + /* Любой адрес в этом регионе подойдет, но часто выбирают 0xffffffff80000000, так как это */ + /* начало региона. */ + . = 0xffffffff80000000; + + .text : { + *(.text .text.*) + } :text + + /* Переходим на следующую страницу памяти для .rodata */ + . += CONSTANT(MAXPAGESIZE); + + .rodata : { + *(.rodata .rodata.*) + } :rodata + + /* Переходим на следующую страницу памяти для .data */ + . += CONSTANT(MAXPAGESIZE); + + .data : { + *(.data .data.*) + } :data + + /* Динамический раздел для перерасположений, как в собственном PHDR, так и внутри раздела data */ + .dynamic : { + *(.dynamic) + } :data :dynamic + + /* Примечание: .bss должен быть последней вещью, отображаемой в раздел data, иначе много */ + /* ненужных нулей будет записано в бинарный файл. */ + /* Если вам, например, нужны .init_array и .fini_array, они должны быть размещены */ + /* выше этого. */ + .bss : { + *(.bss .bss.*) + *(COMMON) + } :data + + /* Игнорируем разделы .note.* и .eh_frame, так как они могут вызывать проблемы на некоторых хостах. */ + /DISCARD/ : { + *(.eh_frame) + *(.note .note.*) + } +} diff --git a/configs/user.cfg b/configs/user.cfg new file mode 100644 index 0000000..383e5bb --- /dev/null +++ b/configs/user.cfg @@ -0,0 +1,2 @@ +name=Aren +password=