LANOS - Klären Sie die Knowledge Points -Reihe von Linux0.12
这个工程的目标是梳理《Linux源码剖析》的知识点并从0.12版本的源码中抠出部分代码构建一个
能用现代linux发行版方便编译的迷你系统,从而验证各个知识点
Bilibili Video Tutorial
Referenzressourcen
- "Linux -Quellcode -Analyse" Neueste elektronische Version
- Linux 0.1x Quellcode
- OFFORTIONEL OFFIZIERTE AUFTRAGSETZUNG
- Orange: Implementierung eines Betriebssystems
Vielen Dank an Dr. Zhao Jiong, Lehrer Yu Yuan, Herr Hideshi Kawahiro und den höchsten Respekt!
Merkmale dieses Tutorials
- Viele Verweise auf die Designideen von Linux0.12 zum Erstellen von Demos, mit denen Sie den Linux -Quellcode später lesen können
- Implementieren Sie so viel wie möglich in Linux mit C implementiert Code, um die Lesbarkeit zu verbessern und die Lernkosten zu senken
- Verwenden Sie Docker zum Kompilieren, wodurch die Kompilierungsumgebung sehr einfach zu bauen ist
Ultraschnelle Kompilierungsmethode (stützt sich auf Docker & Networking)
Führen Sie den folgenden Befehl aus, um den Code zu ziehen und zu kompilieren (es ist langsamer, make_os.sh zum ersten Mal auszuführen, da Sie das docker kompilierte Bild ziehen möchten).
git clone https://github.com/freelw/LanOS.git
cd LanOS
./make_os.sh
Ausführungseffekt
dantadeMacBook-Pro:yard danta$ git clone https://github.com/freelw/LanOS.git
Cloning into 'LanOS'...
remote: Enumerating objects: 517, done.
remote: Counting objects: 100% (517/517), done.
remote: Compressing objects: 100% (322/322), done.
remote: Total 1316 (delta 304), reused 379 (delta 181), pack-reused 799
Receiving objects: 100% (1316/1316), 2.78 MiB | 42.00 KiB/s, done.
Resolving deltas: 100% (788/788), done.
dantadeMacBook-Pro:yard danta$ cd LanOS
dantadeMacBook-Pro:LanOS danta$ ./make_os.sh
builing lan os...
cleaning temp files...
file [a.vfd] is our os image with a simple ramdisk filesystem.
Wissenspunktkatalog
- Wie man die Demo kompiliert und ausführt
- Klären Sie die Linux 0.12 Knowledge Point -Serie, um die Montage nach C nicht mehr weit zu bringen
- Klären Sie die A20 -Adresslinie von Linux0.12 Knowledge Point Series
- Klären Sie den Initialisierungs- und Uhr -Interrupt von 8259a in Linux0.12 Knowledge Point Series
- 8259a Prinzip detaillierte Beschreibung
- Online -verwandte Informationssortierung
Blut und Tränen
- Springe zum Benutzermodus
- Vorläufige Debugging -Gabel
- Gabel+Kopie auf Schreiben
- Über globale Variablen
Andere Anweisungen
- So kompilieren Sie eine benutzerdefinierte Binärdatei
Todo
print_strimplementierung fertig 20200224 print_num -Implementierung fertig 20200224 LAN_FS -Implementierung fertig 20200224 Exec -Implementierung fertig 20200224 Implementierung der Beendigung fertig 20200304
Final Effect Display
Es gibt einfache Shells und Dateisysteme, mit denen LS -Programme ausgeführt werden können
Unterstützen Sie EXEC -Systemanrufe, können Anwendungen ausführen
Führen Sie während des Ausführens eines ausführbaren Programms ein anderes Programm aus, was darauf hinweist, dass Multitasking unterstützt wird
Implementierung des Schleifenprogramms
Weitere Informationen finden Sie hier
Abschließender Demo -Link
Weitere Informationen finden Sie hier
Historische Demo -Ordnung
- ASM_INT_80
- ASM_CALL_C
- LDS_test
- STOPT_MODE_DEMO
- STOPT_MODE_CPP_DEMO
- A20_NOT_OPEN
- A20_Open
- mm
- user_mode_demo
- dark_demo
- cp_on_write
- print_str_demo
- fs_demo
- exec_demo
- Shell_demo
- ls_demo
- exit_demo
- COMMON_HEADER_DEMO
B Website -Dokument
- 01 Ziele und Vorbereitungen
- 02 Vergleich von zwei Richtungen
- 03 Binärdateien steuern
- 04 SCHRAUFT MODE SCHNELL
- 05 A20 Adresslinie
- 06 8259a
- 07 mm