Construyendo un kernel de Linux de forma nativa en macOS: Un viaje al infierno de la compilación

2025-07-03
Construyendo un kernel de Linux de forma nativa en macOS: Un viaje al infierno de la compilación

Esta publicación detalla la experiencia del autor al construir un kernel de Linux (arquitectura RISC-V) de forma nativa en macOS. El viaje estuvo lleno de desafíos: una versión desactualizada de make, el ld de macOS siendo incompatible con las expectativas de Linux, la falta de los encabezados elf.h y byteswap.h, y conflictos de versión con uuid_t y sed. El autor superó estos problemas usando Homebrew para instalar cadenas de herramientas actualizadas (make, llvm, lld, libelf, gnu-sed) y creando parches para solucionar discrepancias en los encabezados y conflictos de definición de tipo. El kernel se construyó con éxito, con macOS mostrando tiempos de construcción más rápidos que Docker para construcciones limpias, pero construcciones incrementales más lentas. El autor concluye que solucionar problemas de construcción es un proceso continuo e iterativo, similar a la integración continua.

Leer más
Desarrollo

Starina: Un sistema operativo microkernel con un enfoque de hipervisor como biblioteca

2025-05-20
Starina: Un sistema operativo microkernel con un enfoque de hipervisor como biblioteca

Esta publicación presenta un enfoque innovador para la compatibilidad con Linux en el sistema operativo Starina: integrando el monitor de máquina virtual (VMM) como una biblioteca dentro de las aplicaciones. A diferencia de los VMM tradicionales independientes, la API `starina_linux::Command` de Starina permite a los desarrolladores ejecutar programas Linux de manera similar a `std::process::Command`, interactuando con la VM a través de un sistema de archivos virtual (virtio_fs). Este diseño simplifica el desarrollo y tiene el potencial de lograr tiempos de inicio más rápidos que Linux nativo. Actualmente, se admite E/S de archivos básica; el trabajo futuro incluye agregar red, almacenamiento persistente y contenerización mejorada.

Leer más
Desarrollo

Construyendo un hipervisor RISC-V en el sistema operativo Starina: De Hello World al arranque de Linux

2025-05-17
Construyendo un hipervisor RISC-V en el sistema operativo Starina: De Hello World al arranque de Linux

Esta publicación documenta el proceso del autor al construir un hipervisor ligero basado en la extensión RISC-V H dentro del sistema operativo Starina. Utilizando la emulación de la extensión RISC-V H de QEMU, el autor implementó incrementalmente la entrada al modo invitado, el manejo de llamadas al sistema, un simple programa Hello World y, finalmente, el arranque del kernel de Linux. Se superaron desafíos como la gestión de tablas de páginas, la configuración del árbol de dispositivos, el soporte del temporizador y el MMIO, con pasos y soluciones detalladas. La publicación concluye con un arranque exitoso de Linux en el hipervisor Starina.

Leer más
Desarrollo