LANOS - Clarifier la série de points de connaissances de Linux0.12
这个工程的目标是梳理《Linux源码剖析》的知识点并从0.12版本的源码中抠出部分代码构建一个
能用现代linux发行版方便编译的迷你系统,从而验证各个知识点
Tutoriel vidéo de Bilibili
Ressources de référence
- "Analyse du code source Linux" Dernière version électronique
- Code source Linux 0.1x
- Site officiel OldLinux
- Orange's: mise en œuvre d'un système d'exploitation
Merci le Dr Zhao Jiong, le professeur Yu Yuan, M. Hideshi Kawahiro, et le plus grand respect!
Caractéristiques de ce tutoriel
- Beaucoup de références aux idées de conception de Linux0.12 pour créer des démos, ce qui vous aidera à lire le code source Linux plus tard
- Remplément autant que le code possible implémenté dans Linux avec C pour améliorer la lisibilité et réduire les coûts d'apprentissage
- Utilisez Docker pour compiler, ce qui rend l'environnement de compilation très facile à construire
Méthode de compilation ultra-rapide (en s'appuyant sur Docker & Networking)
Exécutez la commande suivante pour extraire le code et compiler (il sera plus lent d'exécuter Make_os.sh pour la première fois car vous souhaitez extraire l'image compilée Docker)
git clone https://github.com/freelw/LanOS.git
cd LanOS
./make_os.sh
Effet d'exécution
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.
Catalogue de points de connaissance
- Comment compiler et exécuter une démo
- Clarifier la série Linux 0.12 Point de connaissances pour que l'assemblage ne soit plus loin
- Clarifier la ligne d'adresse A20 de la série de points de connaissance Linux0.12
- Clarifier l'interruption d'initialisation et d'horloge de 8259A dans la série de points de connaissance Linux0.12
- 8259A Principe DESCRIPTION DÉTAILLE
- Tri des informations connexes en ligne
Sang et larmes
- Sautez en mode utilisateur
- Fourche de débogage préliminaire
- fourche + copie sur l'écriture
- Sur les variables globales
Autres instructions
- Comment compiler un fichier binaire personnalisé
Faire
implémentation print_str fait 20200224 implémentation print_num fait 20200224 implémentation LAN_FS fait 20200224 implémentation de l'exec fait 20200224 implémentation de sortie fait 20200304
Affichage d'effet final
Il existe des shells et des systèmes de fichiers simples qui peuvent exécuter des programmes LS
Prise en charge des appels système exec, peut exécuter des applications
Pendant l'exécution d'un programme exécutable, exécutez un autre programme, indiquant que le multitâche est pris en charge
Implémentation du programme de boucle
Voir ici pour plus de détails
Lien de démonstration final
Voir ici pour plus de détails
Ordre de démonstration historique
- asm_int_80
- asm_call_c
- lds_test
- Protect_Mode_demo
- Protect_mode_cpp_demo
- a20_not_open
- A20_Open
- MM
- user_mode_demo
- fourchette
- cp_on_write
- print_str_demo
- fs_demo
- exec_demo
- shell_demo
- ls_demo
- exit_demo
- Common_header_demo
B document de site Web
- 01 buts et préparatifs
- 02 Comparaison de deux directions
- 03 CONTROL des fichiers binaires
- 04 Mode de protection rapide
- 05 A20 Ligne d'adresse
- 06 8259A
- 07 mm