Bienvenido al ... uh ... system stem?
Es un sistema operativo x86_64 escrito completamente desde cero (sin dependencias), hecho por el suyo de verdad.
Este proyecto fue escrito sin la ayuda de GitHub CodeStealer, ChatgpTthief de OpenAi u otros algoritmos predictivos similares de robo de contenido.
TLDR: ¡Reestrado a mediados de la mitad y el desastre parcial! ¡Divertido!
_old tiene un núcleo funcional que utiliza las grandes bibliotecas de Phil-OPP y algunas otras. El código no está muy bien documentado, pero no es demasiado complicado, por lo que debería ser bastante legible. Fue hecho para un increíble foro de desarrollo del sistema operativo en mi escuela secundaria.
Todo lo demás es mi reescritura sin dependencia de WIP. En este momento, solo tiene un gestor de arranque del BIOS que puede ingresar al modo de 64 bits. El siguiente paso es implementar un analizador ELF, luego un cargador ELF, y luego cargar el núcleo (que simplemente será un archivo ELF).
La nueva versión de BS está extremadamente bien documentada, incluidos recursos para futuras investigaciones. Parte de mi objetivo es hacer este excelente código de demostración para futuros programadores para hacer referencia y aprender.
Cada carpeta tiene un readme y, con suerte, se explica por sí mismo, pero aquí hay una tabla de contenido aproximada para este repositorio:
boot : todas las cajas en el gestor de arranque de BS.kernel : BS 'Kernel (actualmente vacío hasta que se escribe el cargador de elfos).lib : Bibliotecas auxiliares utilizadas por BS. Esto tiene herramientas de compilación, Frieren (el cargador de elfos WIP) y una biblioteca común (que pronto se dividirá en múltiples cajas). Estas cajas tienen sus propias bibliotecas porque son utilizadas por múltiples cajas en BS (por ejemplo, el cargador de arranque carga un elfo, pero el sistema operativo final también podrá).qemu : Una caja que incorpora BS en un disco final y lo lanza en QEMU. Para la versión antigua y más funcional de BS con dependencias, ejecute cargo r en la carpeta _old .
La nueva versión utiliza mi sistema de compilación personalizado, bargo, por lo que deberá instalar ese primero (no temer: Bargo solo tiene 1 dependencia, un analizador Toml sin dependencia y debería compilar en segundos). Bargo es una especie de envoltorio alrededor de la carga, por lo que puede usarlo casi exactamente de la misma manera: bargo b para construir, bargo r para ejecutar, -r para modo de liberación, etc.
Si se pregunta por qué BS usa Bargo en lugar de carga, es porque la carga no tiene todas las características que necesito. Necesito scripts posteriores a la construcción y la capacidad de usar build-std para múltiples objetivos, ya que el cargador de arranque tiene un objetivo diferente al de Kernel y el sistema operativo. Lo intenté durante horas, pero no pude encontrar una forma sensata de implementar esto en Vanilla Cargo.
Ambas versiones se ejecutan en QEMU, así que asegúrese de que eso esté instalado primero. Si desea construirlo y ejecutarlo manualmente, el comando que se usa bajo el capado esencialmente se reduce a esto: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 . Para la versión anterior, querrá cargar el archivo _old/disk.bin en lugar de target/bs.bin .