Доброй ночи!
Думаю, что пришло время выложить первое видео и первую информацию о своей операционной системе, полностью написанной на flat assembler. Знаю, что уже много написано и сделано подобного, но думаю, что любителям данной темы это будет немного интересно.
Итак, тестирую всё это дело на QEMU c 48-ю мегабайтами оперативной памяти, но вся система удачно работает и на 8-и мегабайтах (включая графическую оболочку). Так же малы требования и к жесткому диску — само ядро занимает 64 килобайта (в действительности 20-24 килобайт, но из-за специфики моей файловой системы я забиваю остальное пространство нулями до 64кб.).
К необходимым файлам также принадлежит 4 библиотеки, такие как user32.dll, kernel32.dll и omfs3.dll (есть также network.dll, но пока сеть я забросил...). Также, необходимо присутствие двух шрифтов — для терминала и графики. + программа-терминал и программа графического окружения.
Сразу оговорюсь. Все программы компилируются в формат Windows PE GUI и PE console. Т.е. их можно запускать и на Windows, единственная загвоздка — формат моих dll несовместим с форматом Windows DLL. Из этого вытекает, что можно дописать аналогичные библиотеки под Windows (с теми же функциями) и все программы можно портировать на Windows. Аналогично, если написать библиотеки (точнее переписать) под Systemicus то программы Windows могут работать на моей ОС. Кстати, пробы были, в основном только с функциями MessageBox и др. мелочами. Но не в этом суть.
Следующим моментом является использование своей ФС — OMFS-3. Отличительной чертой ее есть встроенная система сквозного шифрования (ГОСТ+RC6 в связке с ГОСТ 34.11-2012 Стрибог. Всё тоже на assembler). Причем, при формировании загрузочного образа системные файлы не зашифрованы, но после любой операции (например, копирование файла) конечный файл уже шифруется. Это не ограничение ФС, просто при сборке загрузочного образа даже на макросе fasm очень сложно будет во время компиляции зашифровать эти данные. Т.к. вся логика и функционал забиты в omfs3.dll, то планирую позже сделать что-то наподобе LeanfsGUI, но для OMFS3.
Из самого необходимого, что я намерен сделать в ближайшем будущем — это RealMode Int, оптимизацию рабочего стола (пока есть проблемы со скоростью, я еще не оптимизировал его код, т.к. закончил его буквально вчера), портирование fasm на Systemicus (+ несколько других приложений), поддержку int 0x21 (минимум — чтоб запускать какой-нибудь файловы менеджер и несколько игр под DOS). В будущем хочу всё-таки добавить в свои DLL поддержку минимальных функций WinAPI, не столько для совместимости с Windows, сколько из соображений экономии — дабы не переписывать код некоторых приложений. Слава Богу, наработки есть, пару простых консольных Windows-приложений уже запускал на Systemicus.
Вот. Если это кому-то интересно, то буду писать дальше о прогрессе в разработке + буду выкладывать самые интересные пройденные трудности в реализации некоторых вещей. Для примера, реализация поддержки PE+DLL очень помогла мне понять принципы работы этой связки в Windows, что помогло мне написать для нее неплохой PE-упаковщик ;-)
В завершение — скринкаст работы…
Автор: omegicus