
Современный экзокернел
Прежде чем говорить о рукописной строительной системе, мне нужно упомянуть esque.toml. Это файл конфигурации с множеством параметров, доступных для настройки. Настройка этого заняла много времени, поэтому теперь это стандарт для построения ОС ESQUE.
cargorustcddmtools (Mcopy, Mmd, ...)dosfstools (mkfs.vfat)python >= 3python.tomlpython.xbstrap$ sudo apt install cargo rustc binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap toml y.py - утилита, вдохновленная rustc's x.py Вы можете настроить ядро, используя файл Esque.toml , который можно найти в Sysroot этого каталога. Этот файл предлагает много вариантов, посмотрите на него перед строительством.
Вы можете создать проект просто с помощью
./y.py build
Эта система очень настраивается. Просто введите
./y.py --help
Чтобы увидеть все варианты.
Во-первых, вы должны войти в Esque.toml и изменение enable-kvm на false.
Здание на окнах не рекомендуется. Я давний пользователь Linux, и весь процесс сборки предназначен для меня, однако, создание с использованием winy.ps1 возможно, но не оптимизирован.
В Windows только определенные команды y.py могут выполняться так же, как и на Linux (пример: ./y.py Build выполняет dd для создания файла IMG). Поэтому вам представлены два варианта
Это может быть предпочтительным вариантом для некоторых. В этом сценарии вы запускаете все команды, кроме ./y.py run с помощью WSL.
Это требует всех зависимостей, перечисленных выше в разделе Dependencies (On Linux)
winy.ps1 - это сценарий PowerShell, который решает, что бежать и что нет. Использование равно ./y.py ./winy build например ./winy run Run Run, и.
Внимание это требует, чтобы у вас была обходная политика. Вы можете временно изменить это, открыв командный хост с привилегиями администратора и печатанием
Set-ExecutionPolicy Bypass Это требует всех зависимостей, перечисленных выше , за исключением груза и Rustc на WSL. Это требует груза, Rustc и tar биназа на окнах. Упомянутые зависимости могут быть легко установлены с использованием бинарной rustup.rs
Запустите следующую команду на WSL (предполагает Ubuntu):
$ sudo apt install binutils mtools dosfstools python3 python3-pip ; pip install --user xbstrap tomlОперационная система должна быть близка к тому, чтобы быть без зависимости. К сожалению, эта система зависит от 2 ящиков:
bitflags
spin
Более 10+ наших собственных зависимостей поддерживаются в crates/ подкаталоге. Эти зависимости включают в себя галетный погрузчик и гораздо больше.
std::sync::{Mutex,...} . Это невероятно полезный ящик, который используется почти во всех крупных проектах Osdev. Этот ящик может быть сброшен в будущем. В то время как тогда он может производить большие двоичные файлы, скажем, C, он все еще производит маленькие после счистки. Текущее ядро составляет всего ~ 300 тыс. Размер, что приемлемо для меня. Bootloader составляет около 270 тыс. Благодаря своей огромной зависимости «UEFI».
Esque-это ядро, которое стремится объединить аспекты Linux и Windows, в то же время является системой, похожей на Exokernel. Экзокернел - это ядро, которое обеспечивает только основные вещи, и любые дополнительные вещи (такие как сетевые стеки) загружаются через модули.
Из -за огромной доступности программного обеспечения на Linux, Esque стремится быть несколько совместимой с ним. Он достигает совместимости файловой системы из-за использования fake-root . Есть два основных. Настоящий корень и фальшивый корень . Примером поддельного пути будет /home/user/ or /bin/* . Настоящий корневой путь начинается с схемы пути: пути . Примеры: initramfs:/myfile , C:/Binaries/* , B:/BOOT/EFI/BOOTX64.EFI , C:/Users/User/ или proc:/CpuInfo .
Syscalls Linux расположены в их фактическом месте (0, 1, 2, 3, 4 ...), в то время как Syscalls Esque расположены по адресу (sys_num + 0x1000)
Да - и нет. В Esque есть три различных виртуальных «пространства» для приложений. Только два из них реальны. Есть
Я понимаю, что не многие готовы использовать свое время на таком ядре, как это. Я все еще с радостью приветствую любой вклад, независимо от того, насколько большим или маленьким. Пожалуйста, прочитайте файл взносов и посмотрите на файлы в каталоге документации
В инициациях, начиная с сейчас, каталоги не поддерживаются. Вы можете создать новые initramfs, просто поместив файлы в initramfs/ subercectory. Затем, используя ./y.py initramfs готовые initramfs будут найдены в build/initramfs.tar . Bootloader ожидает, что этот файл будет найден в корневом разделе.
Все файлы, заканчивающиеся .system , будут затем загружены инициаторами. Ожидается, что один из указанных файлов .system загружает файловую систему.
Хотя это правда, что операционная система без небезопасного кода невозможна, я попытался ограничить ее здесь. В любой момент,
./y.py count-unsafe
может быть вызван, который будет отображать информацию о небезопасности кода. На момент написания выработка производится следующий вывод:
A total of 52 occurences have been found (1641 LOC, 0.* percent Percent)
alloc