Tiny OS - это операционная система, работающая на архитектуре x86_64 .
Этот проект разработан в системе linux . В системах windows вы можете запустить подсистему linux , установив WSL .
Если вы используете WSL :
windows ; Рекомендуется установить Xming или VCXSVR.-ac или проверить disable access control через графический интерфейс.WSL :WSL (версия 1): export DISPLAY=:0WSL2 (версия 2): export DISPLAY= $( cat /etc/resolv.conf | grep nameserver | awk ' {print $2} ' ) :0~/.bashrc или ~/.profile .Could not initialize SDL (No available video device) ... или какие -либо ошибки о GTK, проверьте, запускается ли ваш X -сервер и правильно ли установлена DISPLAY переменной среды. Rust -это современный язык программирования системного уровня, и этот проект в основном разрабатывается с использованием языка Rust . Загрузите и установите его через официальный сайт Rust. Примечание. Этот проект требует установки nightly версии инструментального оборудования.
После завершения установки установите llvm-tools через rustup :
rustup component add llvm-tools-preview Установите несколько полезных инструментов через cargo для разработки:
cargo install cargo-binutilsbochs Моделирование через симулятор bochs . Ссылка на исходное код Ссылка: исходный кузница - Bochs x86 PC Emulator. После загрузки, компиляция и установить.
Команда следующая:
cargo run --release Скомпилированный путь изображения ядра является target/os.img .
Создайте файл os.img в каталоге ./bochs через bximage :
bximage -func=create -hd=10M -imgmode=flat ./bochs/os.img -q Grave ./target/os.img int ./bochs/os.img через инструмент dd :
# 注意下面的参数 count 要根据生成的 target/os.img 文件的大小进行调整
dd if=target/os.img of=bochs/os.img bs=512 count=250 conv=notruncbochs bochs/conf имеет следующие файлы конфигурации в каталоге:
bochsdbg-gdb.bxrc : Вы можете удаленно отлаживать через gdb и связывать localhost:1234 (вам нужно включить --enable-gdb-stub при компиляции bochs )bochsdbg-win : Открыть debugger bochs с графическим интерфейсом на window платформеbochsrc.bxrc : самый базовый файл конфигурации bochs , без функции debug Запустите bochs , чтобы включить симуляцию:
bochs -q -f bochs/conf/bochsrc.bxrcqemu В отличие от bochs , qemu может напрямую загружать сгенерированную target/os.img :
qemu-system-x86_64 -drive format=raw,file=bochs/os.img -boot c
В справочнике проекта есть файл Makefile , который определяет некоторые команды запуска и отладки:
clean : используется для очистки сгенерированных файловbuild-release : используется для компиляции изображений ядра версии releasebuild-debug : используется для компиляции debug версии ядра (не завершено)run-bochs : используется для составления изображений ядра и запуска моделирования bochsrun-qemu : используется для составления изображений ядра и запуска моделирования qemudebug-bochs : используется для компиляции ядра, начинать bochs и дистанционная debug через rust-gdbdebug-qemu : используется для составления изображений ядра, запуска qemu и удаленной debug через rust-gdb Этот проект в основном разделен на 4 части:
builder : расположен в каталоге src , он в основном используется для составления и создания изображений ядраboot : Расположен в каталоге boot , это bootloader для tiny OSboot_info : расположен в каталоге boot_info , он обеспечивает структуру BootInfokernel : расположен в каталоге kernel , это код ядра tiny OS long mode BootInfo для передачи информации со сцены bootloader в kernel elf logger (используется для реализации tiny os и отладки во время разработки ядра) Page Fault обработки GP Fault Double Fault linked_list_allocator buddy system spawn FAT32 shellBuilder (вы можете скомпилировать debug и release изображений) bochs , которое можно загрузить прямо, вместо того, чтобы гравировать его в bochs/os.img через dd -инструмент