Tiny OS ist ein Betriebssystem, das auf der x86_64 -Architektur ausgeführt wird.
Dieses Projekt wurde auf linux -System entwickelt. Unter windows -Systemen können Sie linux -Subsystem durch Installieren von WSL ausführen.
Wenn Sie WSL verwenden:
windows . Es wird empfohlen, XMing oder VCXSVR zu installieren.-ac starten oder disable access control über die GUI überprüfen.WSL :WSL verwenden (Version 1): export DISPLAY=:0WSL2 (Version 2) verwenden: export DISPLAY= $( cat /etc/resolv.conf | grep nameserver | awk ' {print $2} ' ) :0~/.bashrc oder ~/.profile hinzu.Could not initialize SDL (No available video device) ... , überprüfen Sie, ob Ihr X -Server gestartet wird und ob die DISPLAY korrekt festgelegt ist. Rust ist eine moderne Programmiersprache auf Systemebene, und dieses Projekt wurde hauptsächlich mit Rust entwickelt. Laden Sie es herunter und installieren Sie es über die offizielle Rust -Website. Hinweis: Dieses Projekt erfordert die Installation nightly Version der Toolchain.
Installieren Sie nach Abschluss der Installation llvm-tools über rustup :
rustup component add llvm-tools-preview Installieren Sie einige nützliche Werkzeuge über cargo für die Entwicklung:
cargo install cargo-binutilsbochs Emulator Simulation über bochs Simulator. Quellcode -Download -Link: Source Forge - Bochs X86 PC Emulator. Nach dem Herunterladen kompilieren und installieren.
Der Befehl lautet wie folgt:
cargo run --release Der kompilierte Kernelbildpfad ist target/os.img .
Erstellen Sie eine os.img -Datei im Verzeichnis ./bochs über bximage :
bximage -func=create -hd=10M -imgmode=flat ./bochs/os.img -q Gravel ./target/os.img in ./bochs/os.img über das dd -Tool:
# 注意下面的参数 count 要根据生成的 target/os.img 文件的大小进行调整
dd if=target/os.img of=bochs/os.img bs=512 count=250 conv=notruncbochs aus bochs/conf enthält die folgenden Konfigurationsdateien im Verzeichnis:
bochsdbg-gdb.bxrc : Sie können aus der Ferne durch gdb debuggen und localhost:1234 binden (Sie müssen bei der Kompilierung bochs aktivieren --enable-gdb-stub ))bochsdbg-win : Öffnen Sie bochs debugger mit grafischer Schnittstelle auf der windowbochsrc.bxrc : Die grundlegendste bochs -Konfigurationsdatei ohne debug -Funktion Führen Sie bochs aus, um die Simulation zu aktivieren:
bochs -q -f bochs/conf/bochsrc.bxrcqemu aus Im Gegensatz zu bochs kann qemu das generierte target/os.img direkt laden:
qemu-system-x86_64 -drive format=raw,file=bochs/os.img -boot c
Das Stammverzeichnis des Projekts befindet sich eine Makefile -Datei, in der einige laufende und debuggierende Befehle definiert werden:
clean : verwendet, um die generierten Dateien zu reinigenbuild-release : Wird verwendet, um release -Versions-Kernel-Bilder zu kompilierenbuild-debug : Wird verwendet, um die Kernel-Bilder debug Version zu kompilieren (nicht abgeschlossen)run-bochs : Wird verwendet, um Kernelbilder zu kompilieren und bochs Simulation zu startenrun-qemu : Wird verwendet, um Kernelbilder zu kompilieren und qemu Simulation zu startendebug-bochs : Wird verwendet, um Kernelbilder zu kompilieren, bochs zu starten und über rust-gdb debugdebug-qemu : Wird verwendet, um Kernelbilder zu kompilieren, qemu und Remote- debug über rust-gdb zu starten Dieses Projekt ist hauptsächlich in 4 Teile unterteilt:
builder : Das src -Verzeichnis befindet sich hauptsächlich zum Kompilieren und Bau von Kernelbildernboot : Im boot -Verzeichnis befindet sich bootloader für tiny OSboot_info : Im Verzeichnis boot_info liefert es BootInfo -Strukturkernel : Es befindet sich im kernel -Verzeichnis und ist der Kernelcode des tiny OS long mode ein BootInfo -Struktur vor, um Informationen von bootloader -Stufe an kernel zu übergeben elf -Datei logger (verwendet, um tiny os -Druckfunktionen zu implementieren und während der Kernelentwicklung zu debuggen) Page Fault GP Fault Double Fault umgehen linked_list_allocator buddy system spawn implementieren FAT32 -Dateisystems shell implementierenBuilder (Sie können wählen, ob Sie debug kompilieren und Bilder release ). bochs direkt geladen werden kann, anstatt es in bochs/os.img durch das dd -Tool zu gravieren