Forwarded from Технологический Болт Генона
Четверг, а значит время проектов от подписчиков! 🌝
Тем, кто пропустил, что такое четверговые проекты от подписчиков, можно прочитать тут - https://t.me/tech_b0lt_Genona/4983
Слово автору @daniilvaino
---
Всем привет!
Меня зовут Даниил Вайно, я делаю свою x86_64 операционную систему SharpOS (https://github.com/daniilvaino/SharpOS)
Дотнет - это система которая может решить 80% задач из коробки, 90% с использованием библиотек. Много лет я задумывался над тем - а что если приделать дотнету ножки, запустить повершел и csharpREPL просто на железе и кайфовать ? А если ему еще приделать virtio драйвер то вообще можно закинуть в фаеркрекер и запустить сервер.
А что для этого нужно - операционная система. Так родился шарпос (https://github.com/daniilvaino/SharpOS).
Что такое шарпос - это операционная система унюкернел, написанная на чистом natveAOT C# с парочкой трюков. Абсолютно все написано на шарпах, шеллкоды ассемблирует комптайм и рантайм ассемблер тоже на C#, в образ с -skipCoreCLR вообще не попадает ни единого объекта и даже символа который не сгенерировался бы из C# ни libcmt, ни libm, ни даже плюсовые аллокаторы, единственное исключение - форк CoreCLR в соответствующем режиме линкуется прямо в ядро для запуска взрослых приложений, да-да - то самое "приделать к дотнету ножки".
Формат ядра и приложений PE, собирается обычным dotnet publish, есть sdk в виде .props для компиляции аот приложений против стд шарпоса (стд тоже написана на си шарпе).
Уже сейчас есть TUI лаунчер, простой шел, DOOM, два эмулятора NES, прерывания, вытеснения, чтение/запись в файл на FAT32, PS/2 и usb стек, AHCI и PCI драйверы, без единой строчки на плюсах, полная таблица фичей в ридми, а с влинкованным дотнетом - работает взрослый PowerShell с PSReadLine и любая другая управляемая сборка потенциально будет работать.
Покрытие стд огромное, большинство вещей можно скомпилировать аот против стд шарпоса и они заработают! Сетевого стека пока что нет, SMP нет, нет звука и GPU-ускорения, но работают исключения, GC, да и вообще практически вся машинария.
Проект молодой, быстро развивается (не без помощи агентов), но прямо сейчас можно склонировать собрать и протестировать в QEMU и на реальном железе (для сборки в текущем состоянии требуется Windows , инструкция в README).
Да и в целом если вас интересует C#, nativeAOT и OSDEV - буду рад познакомиться. Проект молодой, работаю я над ним один, к уважаемому @rusdacent как раз за этим и пришел, найти единомышленников и людей которым такое интересно.
Так же есть маленький канал посвященный именно шарпосу: https://t.me/sharpos_dev
Ссылка на репу https://github.com/daniilvaino/SharpOS
С уважением!
---
Слово автору @daniilvaino
---
Всем привет!
Меня зовут Даниил Вайно, я делаю свою x86_64 операционную систему SharpOS (https://github.com/daniilvaino/SharpOS)
Дотнет - это система которая может решить 80% задач из коробки, 90% с использованием библиотек. Много лет я задумывался над тем - а что если приделать дотнету ножки, запустить повершел и csharpREPL просто на железе и кайфовать ? А если ему еще приделать virtio драйвер то вообще можно закинуть в фаеркрекер и запустить сервер.
А что для этого нужно - операционная система. Так родился шарпос (https://github.com/daniilvaino/SharpOS).
Что такое шарпос - это операционная система унюкернел, написанная на чистом natveAOT C# с парочкой трюков. Абсолютно все написано на шарпах, шеллкоды ассемблирует комптайм и рантайм ассемблер тоже на C#, в образ с -skipCoreCLR вообще не попадает ни единого объекта и даже символа который не сгенерировался бы из C# ни libcmt, ни libm, ни даже плюсовые аллокаторы, единственное исключение - форк CoreCLR в соответствующем режиме линкуется прямо в ядро для запуска взрослых приложений, да-да - то самое "приделать к дотнету ножки".
Формат ядра и приложений PE, собирается обычным dotnet publish, есть sdk в виде .props для компиляции аот приложений против стд шарпоса (стд тоже написана на си шарпе).
Уже сейчас есть TUI лаунчер, простой шел, DOOM, два эмулятора NES, прерывания, вытеснения, чтение/запись в файл на FAT32, PS/2 и usb стек, AHCI и PCI драйверы, без единой строчки на плюсах, полная таблица фичей в ридми, а с влинкованным дотнетом - работает взрослый PowerShell с PSReadLine и любая другая управляемая сборка потенциально будет работать.
Покрытие стд огромное, большинство вещей можно скомпилировать аот против стд шарпоса и они заработают! Сетевого стека пока что нет, SMP нет, нет звука и GPU-ускорения, но работают исключения, GC, да и вообще практически вся машинария.
Проект молодой, быстро развивается (не без помощи агентов), но прямо сейчас можно склонировать собрать и протестировать в QEMU и на реальном железе (для сборки в текущем состоянии требуется Windows , инструкция в README).
Да и в целом если вас интересует C#, nativeAOT и OSDEV - буду рад познакомиться. Проект молодой, работаю я над ним один, к уважаемому @rusdacent как раз за этим и пришел, найти единомышленников и людей которым такое интересно.
Так же есть маленький канал посвященный именно шарпосу: https://t.me/sharpos_dev
Ссылка на репу https://github.com/daniilvaino/SharpOS
С уважением!
---
💋2
Please open Telegram to view this post
VIEW IN TELEGRAM
теперь шарпос можно собрать на любой системе (вин мак и линукс) !
Зависимости ставятся через mise
Payloads (необязательны, см. payloads/README.md):
Один раз включить mise в оболочке — тогда инструменты из него сами попадают в PATH в каталоге репозитория:
Сборка и запуск:
попробуйте у себя на компьютере если есть такая возможность, спасибо за обратную связь.
Зависимости ставятся через mise
# 1. mise: Windows — winget install jdx.mise; macOS — brew install mise; Linux — curl https://mise.run | sh
# 2. репозиторий (с подмодулями)
git clone --recurse-submodules https://github.com/daniilvaino/SharpOS.git && cd SharpOS
# 3. по желанию — форк CoreCLR (hosted-ярус); без него собирается чистое ядро
git clone -b sharpos/coreclr-port https://github.com/daniilvaino/dotnet-runtime-sharpos.git
# 4. инструменты, системные пакеты, подмодули, зависимости форка
mise trust && mise bootstrap # Linux со старым индексом apt: mise bootstrap --update
Payloads (необязательны, см. payloads/README.md):
payloads/DOOM1.WAD, картриджи .nes, PowerShell для гостя в payloads/pwsh/PowerShell-7.6.5-win-x64/.Один раз включить mise в оболочке — тогда инструменты из него сами попадают в PATH в каталоге репозитория:
# PowerShell: Add-Content $PROFILE 'mise activate pwsh --shims | Out-String | Invoke-Expression'
# bash / zsh: echo 'eval "$(mise activate bash --shims)"' >> ~/.bashrc (zsh — ~/.zshrc, mise activate zsh --shims)
Сборка и запуск:
cd dotnet-runtime-sharpos; ./build_clr_sharpos.ps1 -Clean; cd .. # форк, если он есть (Release по умолчанию)
./build_launcher.ps1 # и build_fetch / aottests / benchaot / doom / shell / tricnes / fami
$env:SHARPOS_GUI=1; ./run_build.ps1 -UsbOnly # ядро + образ + QEMU; без форка: -SkipCoreClr
# из bash/zsh — через pwsh: SHARPOS_GUI=1 pwsh ./run_build.ps1 -UsbOnly
попробуйте у себя на компьютере если есть такая возможность, спасибо за обратную связь.