Creando un sistema operativo desde cero. Este sistema operativo se construye para i386+ 32 bits Intel X86. Cualquier otra plataforma puede no funcionar y no se ha probado.
Simplemente escriba make run que creará todos los archivos necesarios y se ejecuta en el emulador QEMU. El Makefile es un ruidoso, por lo que se aprecia cualquier sugerencia sobre mejores makfiles.
nasm - para ensamblar el gestor de arranquegcc - para compilar el núcleo e incluido la biblioteca Cld - para vincular todos los archivos de kernel juntosobjcopy : para crear el binario del kernel desde el archivo ELFar - para crear la biblioteca de la biblioteca Cmake - para ejecutar el makefileqemu - para ejecutar el sistema operativoWindows Linux subsystem :cmd : para usar los comandos de Windows en el terminal del subsistema de Linuxpartcopy - Windows CMD para crear el sector de arranqueimdisk - Windows CMD para crear y montar la imagen disqusiliarcopy - Windows CMS para copiar archivos en la imagen de disquete Lamento que esto lastime a la gente para ver como usando Windows y Linux juntos, por lo que si alguien tiene sugerencias y/o mejor Makefile que funcione que pueda usar, hágamelo saber. Los makfiles son nuevos para mí, así que cualquier cambio realizado, ¿puedes comentarlos para que pueda entender lo que está sucediendo? Especialmente un makefile que solo usa comandos de Linux sería lo mejor. He intentado usar dd para crear el sector de arranque, pero no pude hacer que funcione correctamente, por lo que cualquier forma de obtener los comandos de Windows será bueno. Puede enviarme un correo electrónico a [email protected] si tiene algún cambio.
Puede ejecutar make debug , que creará todos los archivos necesarios y se ejecutará en el emulador QEMU. Luego puede adjuntar un depurador GDB agregando las líneas a .gdbinit o escriba los comandos directamente:
set architecture i386
target remote localhost:1234
br *0x7c00
c
Esto establecerá la arquitectura en 16 bit x86, ya que esto es en lo que el cargador de arranque está codificado para comenzar. Luego se conecta al emulador en el puerto 1234 (predeterminado para QEMU). Luego establece un punto de interrupción al comienzo del gestor de arranque. Inicia el sistema operativo y se detiene al comienzo del gestor de arranque.
Si desea romper al comienzo del núcleo, la dirección en la que está cargada es 0x100000. Entonces, reemplace br *0x7c00 con br *0x100000 .
Ejecuta mi sistema operativo con su propio riesgo en hardware real. No hay garantía de que el hardware no se dañe al ejecutar el sistema operativo. Así que ejecute una máquina virtual o emulador por seguridad.