7 puntos por GN⁺ 2024-09-15 | 1 comentarios | Compartir por WhatsApp
  • El repositorio Blog OS contiene el código fuente utilizado en la serie Writing an OS in Rust de os.phil-opp.com
  • El código de cada artículo está en una rama de git separada, por lo que se puede revisar el estado intermedio después de seguir cada texto
  • Actualmente, los artículos de la segunda edición se organizan en las categorías Bare Bones, Interrupts, Memory Management y Multitasking, y el código del artículo más reciente está en la rama post-12
  • Los nombres de las ramas siguen el formato post-XX; por ejemplo, post-03 corresponde al código del artículo VGA Text Mode y post-07 al de Hardware Interrupts
  • La primera edición ya no recibe mantenimiento, pero todavía puede servir como referencia, y el código del proyecto, excepto la carpeta blog/content, usa una licencia de elección entre Apache-2.0 o MIT

Propósito del repositorio Blog OS

  • Este repositorio proporciona el código fuente de la serie Writing an OS in Rust
  • Las preguntas se pueden hacer abriendo un issue en GitHub o a través del chat de Gitter

Estructura del código por artículo

  • El código de cada artículo está en una rama de git separada
    • Se puede revisar el estado intermedio después de avanzar siguiendo el artículo
    • El código del artículo más reciente está en post-12
  • La rama de cada artículo se puede encontrar en el enlace (source code) de la lista de artículos de abajo
  • Los nombres de las ramas usan el formato post-XX
    • post-03: VGA Text Mode
    • post-07: Hardware Interrupts
  • Para saber cómo compilar, hay que consultar el README de cada rama
  • Se puede usar git worktree para hacer checkout de una rama específica en un subdirectorio
git worktree add code post-10
  • El comando anterior crea el subdirectorio code con el código del décimo artículo, Heap Allocation

Lista actual de artículos de la edición

Primera edición

  • El blog actual corresponde a la segunda edición
  • La primera edición es antigua y ya no recibe mantenimiento, pero todavía puede ser útil
  • La primera edición incluye artículos de las categorías Bare Bones, Memory Management, Exceptions y Additional Resources

Licencia y contribuciones

  • El proyecto, excepto la carpeta blog/content, puede usarse bajo Apache License 2.0 o MIT license, a elección del usuario
  • Para la licencia de la carpeta blog/content, hay que consultar blog/content/README.md
  • A menos que se indique lo contrario, cualquier contribución enviada intencionalmente para su inclusión se aplicará bajo la doble licencia anterior, sin condiciones adicionales, según la definición de Apache-2.0

1 comentarios

 
GN⁺ 2024-09-15
Comentarios en Hacker News
  • Hace unos años terminé de leer la 2.ª edición completa, y de verdad me abrió los ojos
    La explicación sobre desarrollo de sistemas operativos es muy buena, pero también me sirvió como material para seguir aprendiendo Rust después de leer el libro de Rust
    El autor entiende muy bien los modismos de Rust, así que también aprendí mucho viendo cómo expresaba en código cosas que yo habría implementado de otra manera, y en particular async-await in Rust, donde explica cómo se implementan los futures en Rust, fue de lo mejor que he visto sobre este tema
    Ojalá Phil vuelva a motivarse y continúe el trabajo en la 3.ª edición basada en EFI. Si ves los commits de la rama de Git, parece que se detuvo, y aunque fui sponsor en GitHub como por un año, siempre me daba pena ver que faltaba en las publicaciones de “This Month In Rust OSDev”
    Aun así, la 2.ª edición es un recurso excelente para dedicarle tiempo de fin de semana, y se nota claramente el esfuerzo que le pusieron

  • Hace 5 años terminé este tutorial y después empecé a trabajar en MOROS; lo recomiendo muchísimo para cualquiera que tenga interés en Rust y en el desarrollo de sistemas operativos
    Phil le metió muchísimo esfuerzo, y se nota. El proyecto cubre mucho contenido, y después puedes seguir con osdev wiki
    MOROS: http://moros.cc, https://github.com/vinc/moros

    • Se ve bastante genial. Hasta ahora xv6 había sido el proyecto que más me gustaba, porque su base de código es lo bastante pequeña como para entenderla en unas semanas, se puede compilar con el GCC estándar que te da el gestor de paquetes sin necesidad de compilar un GCC personalizado desde el código fuente, y además tiene espacio de usuario
      MOROS parece cumplir también con esas condiciones, así que lo guardé en marcadores
    • ¿http://moros.cc no tiene TLS? :(
    • Llevo tiempo suscrito al feed RSS, y MOROS de verdad parece un proyecto muy genial
      Aunque por alguna razón no me arranca en QEMU, así que todavía no he podido usarlo, y sospecho que probablemente sea un problema de mi lado más que del sistema operativo en sí
  • Hoy encontré este recurso después de haber profundizado bastante en Rust y en el desarrollo de sistemas operativos, y me impresionó la calidad del contenido
    Aprendes mucho sobre la historia y el diseño de los sistemas operativos, y al mismo tiempo vas absorbiendo elementos de Rust de forma natural. Phil hizo un trabajo excelente

  • Acabo de volver de Rustconf, y parecía que del lado de Rust ya hay como cinco lanzamientos importantes de sistemas operativos, especialmente varios enfocados en tiempo real
    Aunque no todos son de código abierto

    • Entre los principales sistemas operativos de tiempo real (RTOS) están Tock-OS, Oxid-OS (una versión con seguridad reforzada de Tock-OS, en una posición similar a freertos/safertos), y Hubris de Oxide Computers; Embassy y RTIC son frameworks usados comúnmente en sistemas bare metal para planificación y gestión de recursos, pero no son RTOS tradicionales
      Además de esos, hay otros más de nicho o no públicos
      Del lado de los sistemas operativos tradicionales, es decir, no de tiempo real, Redox es el más representativo, y también hay muchos sistemas operativos de investigación, experimentación y enseñanza, incluyendo Blog OS de esta guía/publicación
  • Recomiendo especialmente la primera edición de estos textos
    La edición actual se sentía como que ayudaba demasiado al encargarse de todo el arranque con crates dedicados

    • Me gusta que exista una forma de saltarse la parte del bootloading
      Al ver este comentario, de hecho me dieron ganas de probarlo. Me gustaría hacer un sistema operativo pequeño por diversión, pero no me atrae la parte de tener que pasar por una serie de pasos casi mágicos para llegar a un estado de máquina decente donde ya puedas hacer algo
      Claro, eso no es algo malo; simplemente a cada quien le gustan partes distintas
  • Gracias a este recurso empecé con Rust en 2021, y de verdad agradezco que exista algo así

  • Los textos de Phil sobre desarrollo de sistemas operativos siempre son agradables de leer

  • Va a dar una charla en la conferencia GOSIM el próximo mes
    https://china2024.gosim.org/speakers#philipp-oppermann
    Ojalá pudiera conocerlo y platicar con él en persona

  • https://harvey-os.org/ se retiró, y el equipo ahora está trabajando en este proyecto: https://github.com/r9os/r9

  • No soy desarrollador profesional, pero cuando veo la expresión “escribir X sobre Y”, me acuerdo del meme de Ryan Reynolds de “But why?”: https://screenrant.com/ryan-reynolds-but-why-gif-harold-kuma...
    Si es con fines de aprendizaje, me parece perfecto hacerlo todo lo que quieras. Uno mejora programando mucho
    Además, MOROS se ve como un proyecto y una página muy geniales