Deodeokos
Este es un proyecto del sistema operativo escrito basado en el principio de los libros de OS y rescate multinúcleo de 64 bits.
¡Es fácil de grabar, por lo que puede haber cambios y errores frecuentes!
Medio ambiente y construcción
- Apple M1 MacBook Air
- Docker (Ubuntu 18.04 / AMD64)
- Dado que GCC, Qemu ... es un sistema operativo escrito en el entorno x86_64, si es M1, debe agregar la opción de plataforma Docker.
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
Referencia
- El entorno QEMU introducido en el libro de OS y rescate de múltiples puntajes de 64 bits es 0.10.4, por lo que si usa el último QEMU, el sistema operativo no aparecerá correctamente. Utilizo la versión QEMU 2 y necesito modificar el cargador de arranque para resolverlo. Cambie el
cmp al, 19 de Bootloader.asm a cmp al, 37 para trabajar.
Depuración
gdb
Si procede con la depuración a través de GDB, necesitará dos proyectiles.
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
El progreso de la depuración después de establecer el punto de interrupción
VCODE
Primero, instale la extensión de depuración nativa.
Si continúa con la depuración en el entorno VSCode, siga el siguiente proceso.
-
.vscode/task.json Qemu Build Ejecución - Ejecutar la depuración de qemu en
.vscode/task.json - Punto de ruptura
- Depuración con f5
Puede personalizar el comando modificando el contenido del .vscode/launch.json y .vscode/task.json .
Cambiar
- 210125: Implementación de sincronización de spinlock
- 211220: Interrupción del procesamiento de dispersión en el modo de E/S simétrico
- 211116: Implementación de multicore 2 (activación central)
- 211028: Implementación multinúcleo 1 (implementación de la tabla MP)
- 211020: Implementación del controlador del dispositivo del puerto serie
- 211017: Cache del sistema de archivos e implementación de Rampdic
- 211002: Implementación de E / S de archivo
- 210927: Configuración del entorno de depuración
- 210902: Implementación simple del sistema de archivos
- 210830: controlador de disco duro agregado
- 210824: Implementación de la asignación de memoria dinámica
- 210813: Implementación de lectura múltiple
- 210809: Solución de condición de carrera a través de Mutex
- 210807: Implementación del planificador de colas de nivel múltiple
- 210802: Implementación del planificador de Round Robin
- 210725: Implementación multitarea simple
- 210723: agregue un dispositivo de temporizador
- 210720: implementación de shell de consola
- 210719: Implementación de la interrupción utilizando el controlador PIC
- 210717: Agregar interrupción básica del teclado (encuesta)
- 210716: controlador de teclado agregado
- 210712: convertido del modo de protección al modo IA-32E
- 210708: crea el primer núcleo
- 210706: Transición del modo real al modo de protección
- 210701: Agregar cargador de arranque