¿Existe algún tutorial paso a paso que ayude a aprender e implementar un sistema operativo?

La mayoría de los “nuevos” sistemas operativos se basan en un kernel de Linux existente, por lo que el primer paso es familiarizarse con Linux y decidir qué distribuciones tienen características que son deseables (incluido el mejor soporte para herramientas de desarrollo).

A continuación, intente volver a compilar un kernel desde el código fuente, a menudo llamado bootstrapping en la lengua vernácula de Unix, porque está recompilando un kernel mientras ejecuta el mismo kernel. Revise el proceso de arranque e inicialización. Esto le ayudará a comenzar con la organización de la arquitectura de Unix y cómo desarrollarla.

También hay un buen libro:

Desarrollo del núcleo de Linux (3ª edición): Robert Love: 9780672329463: Amazon.com: Libros

Le sugeriría que como primer proyecto, tal vez quiera hacer algo simple, como cambiar los scripts de arranque para hacer ping a un servidor en su red o descargar un motd personalizado desde un servidor web remoto. Una vez que se sienta cómodo con cómo funciona el proceso de arranque e inicialización, puede intentar abordar proyectos más agresivos.

Una herramienta que podría ayudarlo a comenzar a construir sus propias distribuciones de Linux es Woof . Es un conjunto de scripts para crear distribuciones de Linux, basadas en varios núcleos diferentes (Slackware, Ubuntu, etc.). Automatiza algunos de los trabajos pesados ​​hasta arrancar el sistema operativo y seleccionar lo que entra.

PuppyLinux: Guau
Guau el cachorro constructor de linux
Barry Kauler – Powered by PPLOG

Aprender sistemas operativos es muy beneficioso, ya que le brinda una idea de cómo funciona un sistema informático a un nivel muy bajo. Puede comenzar por aprender conceptos básicos de libros como los descritos en esta pregunta. ¿Cuál es el mejor libro sobre sistemas operativos?

Personalmente, recomendaría primero eliminar la teoría y los conceptos del sistema operativo de los Conceptos del sistema operativo (2012) de Silberschatz, Galvin y Gagne.

Luego, para poner esa teoría en práctica, utilice los sistemas operativos de Dietel y Choffnes.

Sin embargo, si desea concentrarse en un sistema operativo específico como Linux , puede echar un vistazo a Linux From Scratch! que es un proyecto que le proporciona instrucciones paso a paso para crear su propio sistema Linux personalizado, completamente a partir del código fuente.

Un enlace más donde encontré algo decente en la implementación de una página de sistema operativo en bham.ac.uk. Aquí algunos de los conceptos han sido discutidos e implementados. También echa un vistazo a este documento. Aquí han discutido un enfoque para el desarrollo del sistema operativo.

También se proporciona un buen tutorial sobre algunos temas en el siguiente enlace Categoría: Tutoriales – OS Dev Wiki.

El tutorial de desarrollo de Kernel está disponible en este enlace y es excelente.

Busqué en Google y encontré esto. ¿Cuáles son algunos recursos para comenzar en el desarrollo de sistemas operativos? pregunta sobre desbordamiento de pila. Hay excelentes respuestas y es una excelente fuente para responder a su pregunta.

Hay algunas cosas que debe considerar.

  • Considera trabajar en equipo.

  • Comenzar desde cero puede ser bastante difícil y frustrante, por lo que se recomienda comenzar a construir desde un kernel existente (sin embargo, no es obligatorio).
  • Decida qué idioma desea utilizar (C ++ o algo más).

  • Al menos estar familiarizado con el lenguaje ensamblador (no se requiere una gran competencia).
  • Haga una buena imagen en su mente, qué desea que haga su sistema operativo y cuál será su diseño.

Espero que esto te ayudará.

Gracias por A2A

PD: No soy un experto y nunca diseñé un sistema operativo. Acabo de implementar algunos de los conceptos. Te dije lo que siento que debes hacer. Si puede hacer que Jeff Nelson responda a esta pregunta, sería genial. Usted obtendría una mejor visión.

Las sugerencias son bienvenidas. 🙂 Saludos y feliz codificación.

Solo para agregar a la respuesta de Jeff.

  • Puedes construir una pequeña distribución USB de Linux. Aprendí mucho sobre sistemas operativos porque tuve que construir una pequeña distribución de disquete (sí, disquete) para un entorno de terminal tonto utilizando PC antiguas y arranque PXE. Esto me dio una mejor apreciación de cómo funciona la secuencia de eventos del sistema operativo, matices de BIOS, sistema de inicio, herramientas de espacio de usuario crítico (lo que es más importante, busybox) y demonios (como inetd o equivalente). Esto también me dio una mejor apreciación de cómo mantener las cosas pequeñas. Tuve que encajar todo en 1.44MB.
  • Puede escribir un controlador de dispositivo. Esto le brinda una visión más firme de cómo interactuar con el hardware, que es una de las tareas principales de cualquier sistema operativo. Esto es particularmente útil si ingresas al espacio de programación incrustado.

Si tiene interés en el desarrollo de sistemas operativos, hay muchos recursos con diversos grados de control de mano, y la mayoría de ellos están disponibles en la wiki de osdev, o en google ‘osdev’. Sin embargo, seguir un tutorial no es muy útil si desea tener la experiencia de escribir un sistema operativo. Después de todo, si sigue el tutorial paso a paso de alguien, no ha escrito un sistema operativo. simplemente ha recibido una copia del sistema operativo que escribieron de la manera menos eficiente posible (al volver a escribir su código fuente).

Hay un sentido general de en qué orden se deben realizar los pasos básicos para que un sistema operativo esté en funcionamiento, y la mayoría de los tutoriales seguirán estos pasos en más o menos el mismo orden: si no está utilizando un cargador de arranque existente, comience por escribir uno; luego, obtenga el modo de texto VGA para imprimir en la pantalla e implemente una función de error de aserción (para imprimir en la pantalla y detener, necesario para la depuración); después de eso, si su gestor de arranque no lo ha hecho por usted, consiga que el modo protegido funcione (para lo cual puede necesitar un tutorial); luego, cree ganchos para las interrupciones del temporizador y el teclado y un enganche predeterminado para otras interrupciones (aquí es donde las aserciones serán útiles; trabajar con un IDT puede ser complicado) y comenzará con cientos de interrupciones desconocidas que necesita para enganchar probablemente querrá detenerse mientras imprime sus números en la pantalla para que pueda ver qué significan y si deberían ser fatales. Si está realizando una multitarea de software simple, querrá implementar una pequeña parte cuando se engancha inicialmente la interrupción del temporizador, y se preocupa por implementar el almacenamiento de pila y el cambio de contexto más tarde, ya que pasará unas semanas intentando averiguar por qué se producen tres fallas cada vez que toca el mouse).

Adaptar el sistema operativo de otra persona (que es lo que implica seguir un tutorial) es bastante sencillo, y cualquier persona que haya tomado una clase de pregrado en conceptos de sistemas operativos puede hacerlo sin muchos problemas. Por otro lado, escribir su propio sistema operativo es casi totalmente inútil desde un punto de vista comercial y práctico (a menos que sea, profesionalmente, un ingeniero informático que trabaje en el campo de los sistemas integrados, o que sea uno de los pocos que trabaja en una la próxima generación de algunos sistemas operativos existentes, nunca necesitará saber cómo disputar un IDT o pasar al modo protegido o escribir un gestor de arranque; podría beneficiarse de saber cómo funciona el modo de texto VGA o cómo escribir un conmutador de procesos o una memoria gerente, pero ninguna de estas son las partes difíciles del desarrollo del sistema operativo) e indudablemente difícil (el desarrollo del sistema operativo es como aprender el cálculo por primera vez, o aprender a leer por primera vez; existen importantes obstáculos conceptuales que tendrá que superar el De manera difícil, para tener éxito, y si alguien más hace las cosas difíciles por ti, entonces realmente no lo estás haciendo, hay un montón de cosas fáciles y luego un puñado de cosas que llevarán semanas o meses resolver el primero. tiempo yo Lo haces, independientemente de lo que lees). ¿Es beneficioso? Probablemente, en el sentido de que enseña la tenacidad (de la misma manera que correr un maratón o participar en una rutina de meditación diaria o construir barcos modelo dentro de las botellas es beneficioso).

No hay ningún libro que le ayude a escribir un sistema operativo; primero decida si desea escribir un sistema operativo desde cero o si desea crear una interfaz de usuario sobre un kernel existente (por ejemplo, un kernel de Linux, etc.). Si desea escribir un kernel desde cero, hay una cosa que debe entender, su sistema operativo NO SE CONVIERTA EN WINDOWS DE INMEDIATO. Windows se ha convertido en lo que se ha convertido durante muchos años. Al principio solo tendrá una interfaz simple basada en texto. Bueno, para escribir un kernel debe estar bien versado en Ensamblaje y C o C ++ (yo diría que con C ++), luego debe decidir qué arquitectura apuntará y luego necesita obtener un manual para procesadores que se basan en la arquitectura que ha elegido para Intel x86 y x86_64, consulte Intel® 64 y IA-32 Architectures Software Developer Manuals. Leer esto te ayudará con todo. Aunque hay algunos sitios web como OS Dev o Kernel Development Tutorial de Bran, pero siguiendo estos nunca obtendrás todo el conocimiento porque estos tutoriales omiten algunas cosas, pero definitivamente deberías echarles un vistazo (otras respuestas proporcionan más tutoriales). De todos modos, es un ejercicio de aprendizaje brillante, te ayudará a entender cómo funciona tu computadora y es un sentimiento increíble tener control total sobre tu computadora.
Cómo sé esto, escribí mi propio kernel y lo mejoré casi todos los días, ahora mismo estoy implementando redes.
Feliz Programación 🙂

Un buen comienzo será saber cuáles son las cosas más importantes que debe saber sobre cualquier sistema operativo antes de implementar el suyo.
Los sistemas operativos internos son un buen material de referencia y además de las respuestas anteriores, intente implementar proyectos de programación para pintos.
Hay cuatro proyectos junto con una descripción detallada de lo que se debe hacer y cómo se hace.
La búsqueda simple en Google lo llevará al curso stanford cs140, que tiene el material de referencia requerido. De todas formas estoy agregando el enlace aquí.
http://web.stanford.edu/class/cs

Aquí está el que he usado: 1.-Configuración del entorno

Pero este enlace aquí le dará una mejor perspectiva: ¿Cuáles son algunos recursos para comenzar a desarrollar el sistema operativo?

¡Espero que esto ayude!

Debería retirar Minix (Minix3) y el libro que lo acompaña.

Este libro gratuito es bastante popular en GitHub SamyPesse / How-to-a-a-computer-system-system.

http://www.linuxfromscratch.org/

es un buen comienzo