Minios es un núcleo de sistema operativo en miniatura para estudiantes de desarrollo de sistemas operativos que pueden ejecutarse en una CPU de arquitectura X86 de 32 bits. Minios se enfoca en aprender e investigar los conceptos básicos y los principios básicos en el desarrollo del sistema operativo, e implementa varios subsistemas o módulos básicos en el sistema operativo basado en hardware general.
Los populares núcleos del sistema operativo como Linux y FreeBSD son buenos, pero no son adecuados para principiantes en el desarrollo del núcleo. Por un lado, estos núcleos del sistema operativo se han desarrollado durante muchos años y han acumulado una gran cantidad de código (la versión temprana del núcleo Linux V2.6.12 lanzado en 2005 ya tenía aproximadamente 4 millones de líneas de código). Por otro lado, debido a las necesidades de las aplicaciones en los entornos de producción, estos códigos de núcleo contienen una gran cantidad de detalles que no están relacionados con los principios básicos del sistema operativo, lo que es difícil para los principiantes comprender los puntos clave. Por lo tanto, comenzando con un kernel de sistema operativo simple con una pequeña cantidad de código, utilizando un corto tiempo para familiarizarse y dominar los conceptos centrales y los principios básicos del campo de desarrollo del núcleo del sistema operativo, dominar estos conocimientos básicos a un cierto nivel, y luego dedicarte al desarrollo de núcleos prácticos como Linux, es una estrategia relativamente realista y viable para los núcleos. Incluso si no planea participar en el desarrollo del núcleo, aprender algunos conocimientos básicos sobre el sistema operativo a través de un kernel fácil de iniciar lo ayudará a escribir aplicaciones más robustas y de realización.
Minios se desarrolla principalmente en función del lenguaje C y el lenguaje de ensamblaje X86, y las herramientas de desarrollo utilizadas incluyen:
Entre ellos, Binutils es un conjunto de herramientas para operar archivos binarios, incluidas herramientas para crear bibliotecas estáticas, herramientas para tiras para eliminar tablas de símbolos de archivos binarios para reducir el tamaño del archivo, etc.
Minios se inicia actualmente desde el disquete, y el proceso de inicio es:
Dado que Minios es un núcleo de sistema operativo para los alumnos, actualmente se ejecuta principalmente en máquinas virtuales, con máquinas virtuales opcionales que incluyen BOCHS y QEMU.
Corre Minios en Bochs
sudo apt-get install bochs debajo del sistema Ubuntu para instalarlo. Puede descargar primero el código fuente de BOCHS y luego compilarlo e instalarlo. Puede seleccionar la versión deseada de BOCHS al instalar a través del código fuente.tar zxvf misc/80m.img.tar.gz . y descomprima la imagen del disco duro del paquete de compresión de imagen de disco duro.bochs en el directorio actual para iniciar la máquina virtual BOCHS. BOCHS leerá primero la información de configuración del archivo BOCHSRC y luego confirmará la información de solicitud de ejecución dada por BOCHS para permitir que Minios se ejecute en BOCHS.Ejecutar Minios en QEMU
sudo apt-get install qemu-system-x86 en el sistema Ubuntu para la instalación, o puede descargar el código fuente de QEMU para la compilación e instalación.tar zxvf misc/80m.img.tar.gz . y descomprima la imagen del disco duro del paquete de compresión de imagen de disco duro../launch-qemu.sh en el directorio actual para iniciar la máquina virtual QEMU, y luego Minios comenzará a funcionar directamente en QEMU. La máquina virtual QEMU no usa un archivo de configuración como BOCHSRC. La información de configuración se especifica a través de opciones de línea de comandos. El script elunch-qemu.sh contiene las opciones de configuración utilizadas actualmente. Minios se puede depurar en el nivel de ensamblaje utilizando la función de depuración incluida en Bochs o QEMU, pero este método de depuración no es muy conveniente de usar porque el programa de ensamblaje es largo y difícil de leer. Afortunadamente, tanto Bochs como QEMU tienen soporte GDB incorporado. Al combinar con la función de depuración remota proporcionada por GDB, Minios se puede depurar en el código fuente C.
Minios de depuración con bochs+GDB
./launch-bochs-gdb.sh en el directorio de origen de Minios. El script de shell en ejecución ejecutará GDB en una nueva ventana de terminal y cargará la versión de depuración del binario del núcleo.target remote :2345 en la interfaz de comando GDB para establecer una conexión con BOCHS.Minios de depuración con qemu+gdb
./launch-bochs-gdb.sh en el directorio de origen de Minios. El script de shell en ejecución ejecutará GDB en una nueva ventana de terminal y cargará la versión de depuración del binario del núcleo.target remote :1234 en la interfaz de comando GDB para establecer una conexión con QEMU. # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean