Minios ist ein Kernel des Miniatur-Betriebssystems für Betriebssystementwicklungslernende, die auf einer 32-Bit-X86-Architektur-CPU ausgeführt werden können. Minios konzentriert sich auf das Lernen und die Erforschung der Kernkonzepte und Grundprinzipien in der Entwicklung des Betriebssystems und implementiert verschiedene grundlegende Subsysteme oder Module im Betriebssystem basierend auf allgemeiner Hardware.
Die beliebten Betriebssystemkerne wie Linux und FreeBSD sind gut, sind jedoch nicht für Anfänger in der Kernelentwicklung geeignet. Einerseits haben sich diese Kernel des Betriebssystems seit vielen Jahren entwickelt und eine große Menge an Code angesammelt (die frühe Version des 2005 veröffentlichten Linux -Kernel v2.6.12 hatte bereits etwa 4 Millionen Codezeilen). Auf der anderen Seite enthalten diese Kernelcodes aufgrund der Anforderungen von Anwendungen in Produktionsumgebungen eine große Anzahl von Details, die nicht mit den Grundprinzipien des Betriebssystems zusammenhängen, was für Anfänger schwierig ist, die wichtigsten Punkte zu erfassen. Ausgehend von einem einfachen Betriebssystem -Kernel mit einer geringen Menge an Code, wobei Sie sich mit kurzer Zeit mit den Kernkonzepten und Grundprinzipien des Kernelentwicklungsfelds des Betriebssystems vertraut machen und diese Grundkenntnisse auf ein bestimmtes Niveau beherrschen und sich dann der Entwicklung praktischer Kernel wie Linux widmen, ist eine relativ realistische und merkwürdige Strategie für Kernel -Anfänger. Auch wenn Sie nicht vorhaben, sich mit der Entwicklung von Kernel zu beschäftigen, hilft Ihnen das Erlernen von Grundkenntnissen über das Betriebssystem über einen leicht zu startenden Kernel, um robustere und Ausführung von Anwendungen zu schreiben.
Minios sind hauptsächlich basierend auf C -Sprache und X86 -Assemblersprache entwickelt. Zu den verwendeten Entwicklungstools gehören:
Unter ihnen ist Binutils eine Reihe von Tools zum Betrieb von Binärdateien, einschließlich Tools zum Erstellen statischer Bibliotheken, Tools zum Entfernen von Symboltabellen aus Binärdateien zur Reduzierung der Dateigröße usw.
Minios wird derzeit von der Diskette von Diskette gestartet, und der Startprozess lautet:
Da Minios ein Kernel des Betriebssystems für Lernende sind, wird es derzeit hauptsächlich in virtuellen Maschinen mit optionalen virtuellen Maschinen wie Bochs und QEMU ausgeführt.
MINIOIS IN BOCHS Führen
sudo apt-get install bochs im Ubuntu-System direkt ausführen, um ihn zu installieren. Sie können zuerst den Quellcode von Bochs herunterladen und dann kompilieren und installieren. Sie können die gewünschte Version von Bochs beim Installieren über den Quellcode auswählen.tar zxvf misc/80m.img.tar.gz . und dekomprimieren Sie das Festplattenbild aus dem Festplattenbildkomprimierungspaket.bochs -Befehl im aktuellen Verzeichnis aus, um die virtuelle Bochs -Maschine zu starten. Bochs lesen zuerst die Konfigurationsinformationen aus der BochsRC -Datei und bestätigen dann die von Bochs angegebenen Ausführungsaufforderungsinformationen, damit Minios Bochs ausführen können.MINIOIS in Qemu laufen
sudo apt-get install qemu-system-x86 direkt ausführen.tar zxvf misc/80m.img.tar.gz . und dekomprimieren Sie das Festplattenbild aus dem Festplattenbildkomprimierungspaket../launch-qemu.sh im aktuellen Verzeichnis aus, um die virtuelle QEMU-Maschine zu starten. Anschließend werden die Minios direkt in QEMU ausgeführt. Die virtuelle QEMU -Maschine verwendet keine Konfigurationsdatei wie BOCHSRC. Die Konfigurationsinformationen werden über Befehlszeilenoptionen angegeben. Das Skript-Start-qemu.sh enthält die derzeit verwendeten Konfigurationsoptionen. Minios können auf der Assembly-Ebene durch die Verwendung der in Bochs oder QEMU enthaltenen Debugging-Funktion debuggen werden. Diese Debugging-Methode ist jedoch nicht sehr bequem zu verwenden, da das Montageprogramm langwierig und schwer zu lesen ist. Glücklicherweise haben sowohl Bochs als auch Qemu eine eingebaute GDB-Unterstützung. Durch die Kombination mit der von GDB bereitgestellten Remote -Debugging -Funktion können Minios im C -Quellcode debuggen.
Debugging Minios mit Bochs+GDB
./launch-bochs-gdb.sh im Minios-Quellverzeichnis. Das laufende Shell -Skript wird in einem neuen Terminalfenster GDB ausgeführt und die Debug -Version des Kernel -Binärs geladen.target remote :2345 in der GDB -Befehlsschnittstelle aus, um eine Verbindung mit Bochs herzustellen.Debugging Minios mit QEMU+GDB
./launch-bochs-gdb.sh im Minios-Quellverzeichnis. Das laufende Shell -Skript wird in einem neuen Terminalfenster GDB ausgeführt und die Debug -Version des Kernel -Binärs geladen.target remote :1234 in der GDB -Befehlsschnittstelle aus, um eine Verbindung mit QEMU herzustellen. # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean