Lanos: aclare la serie de puntos de conocimiento de Linux0.12
这个工程的目标是梳理《Linux源码剖析》的知识点并从0.12版本的源码中抠出部分代码构建一个
能用现代linux发行版方便编译的迷你系统,从而验证各个知识点
bilibili tutorial de video
Recursos de referencia
- "Análisis de código fuente de Linux" Última versión electrónica
- Código fuente de Linux 0.1x
- Sitio web oficial de Oldlinux
- Orange's: Implementación de un sistema operativo
¡Gracias Dr. Zhao Jiong, maestro Yu Yuan, Sr. Hideshi Kawahiro, y el más alto respeto!
Características de este tutorial
- Muchas referencias a las ideas de diseño de Linux0.12 para crear demostraciones, lo que lo ayudará a leer el código fuente de Linux más tarde.
- Vuelva a implementar tanto como sea posible código implementado en Linux con C para mejorar la legibilidad y reducir los costos de aprendizaje
- Use Docker para compilar, haciendo que el entorno de compilación sea muy fácil de construir
Método de compilación Ultra-rápido (dependiendo de Docker y redes)
Ejecute el siguiente comando para extraer el código y compilar (será más lento ejecutar make_os.sh por primera vez porque desea extraer la imagen compilada de Docker)
git clone https://github.com/freelw/LanOS.git
cd LanOS
./make_os.sh
Efecto de ejecución
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.
Catálogo de puntos de conocimiento
- Cómo compilar y ejecutar la demostración
- Aclare la serie de puntos de conocimiento Linux 0.12 para hacer que el ensamblaje ya no sea lejos
- Aclare la línea de dirección A20 de la serie Linux0.12 Point de conocimiento
- Aclarar la inicialización y la interrupción del reloj de 8259A en la serie Linux0.12 Point de conocimiento
- 8259A Principio de descripción detallada
- Clasificación de información relacionada en línea
Sangre y lágrimas
- Saltar al modo de usuario
- Tenedor de depuración preliminar
- horquilla+copia en la escritura
- Sobre variables globales
Otras instrucciones
- Cómo compilar un archivo binario personalizado
Hacer
Implementación de print_STR hecho 20200224 Implementación print_num hecho 20200224 Implementación de LAN_FS hecho 20200224 implementación exec hecho 20200224 Implementación de salida hecho 20200304
Visualización de efectos finales
Hay shells y sistemas de archivos simples que pueden ejecutar programas LS
Apoya las llamadas del sistema EXEC, puede ejecutar aplicaciones
Durante la ejecución de un programa ejecutable, ejecute otro programa, lo que indica que la multitarea es compatible
Implementación del programa de bucle
Ver aquí para más detalles
Enlace de demostración final
Ver aquí para más detalles
Orden de demostración histórica
- ASM_INT_80
- asm_call_c
- SUD_TEST
- Protect_mode_demo
- Protect_mode_cpp_demo
- a20_not_open
- A20_OPEN
- mm
- user_mode_demo
- bifurcado
- cp_on_write
- print_str_demo
- FS_DEMO
- exec_demo
- shell_demo
- ls_demo
- exit_demo
- Common_header_demo
B Documento del sitio web
- 01 Metas y preparativos
- 02 Comparación de dos direcciones
- 03 Control de archivos binarios
- 04 Modo de protección rápido
- 05 Línea de dirección A20
- 06 8259a
- 07 mm