Операционная система, написанная в ржавчине.
Чтобы построить ОС, обязательно используйте nightly сборку ржавчины. Это требуется из -за использования некоторых нестабильных флагов и свойств, которые доступны только в nightly сборке.
Примечание. Цель была указана в
.cargo/config.toml.
cargo buildПРИМЕЧАНИЕ. Если компиляция для пользовательской цели, вы можете переопределить цель, используя флаг
--target <target>.
cargo build --target x86_64-fractal_os.json Чтобы создать загрузочное изображение, мы используем зависимость загрузчика. Наряду мы будем использовать инструмент bootimage для компиляции ядра и загрузчика и связать их вместе.
Убедитесь, что у вас установлен Bootimage.
cargo install bootimageПримечание. Чтобы запустить BootImage и создать загрузчик, вам необходимо установить установлен компонент Rustup
llvm-tools-preview.
rustup component add llvm-tools-previewПосле того, как зависимости и инструменты были установлены, вы можете запустить грузовой бутмаж для создания загрузочного диска.
cargo bootimageПосле генерации загрузочного файла изображения вы можете легко запустить фрактал на эмуляторе, таком как QEMU.
qemu-system-x86_64 -drive format=raw,file=target/x86_64-fractal_os/debug/bootimage-fractal_os.binВы также можете запустить его с грузовым бегуном с помощью Bootimage Runner.
cargo runВыше приведено на последнюю сборку загружаемого изображения и запустит экземпляр QEMU. Вы также можете предоставить конкретную цель и пройти через опции QEMU.
cargo run --target < target > -- [QEMU options] Все после -- будет передано в Qemu.
Чтобы запустить пользовательскую структуру тестирования для Fractalos, вы можете запустить команду испытания груза.
cargo testЭто запустит все устройства и интеграционные тесты.
ПРИМЕЧАНИЕ. Интеграционные тесты расположены в каталоге
/tests, в то время как модульные тесты являются автономными в файлах реализации/srcConcrete.
Ядро использует ядро compiler_builtins вместе с mem реализацией. Функции, однако, довольно нептимизированы. В настоящее время существует открытый PR против этой проблемы, поэтому либо это должно использовать нашу собственную реализацию таких функций, как memcmp и memcpy , либо подождать, пока этот PR не объединится.
Как инженер -программист с опытом работы в EEE (электрическая и электронная инженерия), я всегда люблю выяснять, что заставляет вещи тикать, и что может быть лучше, чтобы выяснить, как работают операционные системы вместе со всем аппаратным обеспечением, а программное обеспечение не является своим собственным?
В то же время изучение того, что делает все элементы чистой операционной системы, я также изучаю ржавчину. Я нахожу это очень приятным.
Это лишь некоторые основные средства, которые на пути будут реализованы. Не в порядке.