Hola a todos, este tutorial está destinado a ser una expansión actualizada en los tutoriales existentes que se centra más en la arquitectura X86_64 de 64 bits. No está destinado a ser una introducción a C o al ensamblaje, por lo que es posible que desee aprenderlos primero en otro lugar. Hicimos todo lo posible para documentar correctamente todo, por lo que si hay algo que no entiende, entonces es posible que deba regresar algunos capítulos.
Todavía no está completo, pero ha llegado a un punto en el que sentimos que podría ser útil.
Este tutorial está dirigido a personas que tienen una comprensión general sobre C y Asamblea, pero no son necesariamente expertos en informática. Está diseñado para ser lo más accesible posible, por lo que puede parecer en momentos como explicamos sobre algunos conceptos (y eso está bien). Sin embargo, si te encuentras desesperadamente perdido , háganoslo saber. Creamos este proyecto porque no nos gustó el Gatekeeping que se ve en el desarrollo del sistema operativo, y estaríamos encantados de enmendar nuestras explicaciones o señalarlo con otro recurso que puede ser más útil.
Si desea contribuir a este proyecto o agregar algo propio, envíe una solicitud de extracción. Intentaré llegar a todos lo antes posible :)
Este tutorial utiliza la suite del compilador LLVM, incluidos clang y ld.lld . Si no tiene los instalados, deberá hacerlo y agregarlos a su camino. También usamos nasm para nuestro ensamblador y qemu-system-x86_64 como nuestro emulador. Opcionalmente, gdb se puede usar para depurar el código del kernel. Si bien no es necesario, este tutorial utiliza scripts de shell para facilitar la construcción y la depuración. Recomendamos encarecidamente que haya instalado bash At /bin/bash (o al menos en forma de simulación allí). Si no, puede ejecutar los scripts usando el comando bash .
Debería poder ejecutar todos los comandos anteriores en una ventana de terminal sin especificar la ruta completa. Si no puede, probablemente necesite instalarlos y agregarlos a su ruta. Este tutorial ha sido probado en MacOS (Catalina y Big Sur), así como Ubuntu (20.04). No se admiten oficialmente otros sistemas operativos, aunque debería funcionar bien en la mayoría de las máquinas *nix.
Nota: MacOS
gdbtiene dificultades con los símbolos de depuración del núcleo (Elf64). Es posible que deba cambiar el nivel de salida de depuración a -glLDB en los makefiles y usarlo en su lugar, o construir un nuevogdba partir de la fuente.
¡Eso es todo! No es necesario instalar ningún compilador Cross u otras herramientas, ya que Clang ya tiene la mayor parte cubierto. ¡Mucha suerte, y si tienes algún problema, siéntete libre de informarnos!