- Proyecto de OS de escritorio full-stack que desarrolla en conjunto kernel, drivers, aplicaciones y componentes de escritorio, abarcando más que un simple experimento de kernel
- Las pruebas pueden comenzar con el build nightly
Essence.tar.xz,Essence.ovapara VirtualBox y el comando de ejecución de QEMU - Los builds públicos se ofrecen solo para emuladores para facilitar las pruebas, y los builds para hardware real aún están pendientes
- El kernel incluye elementos clave como un administrador de caché independiente del sistema de archivos, administrador de memoria, stack de red TCP/IP, sistema de archivos virtual y administrador de ventanas
- El escritorio también cuenta con una biblioteca de UI personalizada, renderizador vectorial por software, ventanas con pestañas y renderizado de texto multilingüe basado en FreeType y Harfbuzz
Ejecución y vías para participar
- Essence es un proyecto de sistema operativo, y tiene un demo en video ejecutándose en hardware real con fecha de octubre de 2021
- Los canales de discusión se dividen en un servidor de Discord y un foro
- El desarrollo puede apoyarse vía Patreon, y Essence es un proyecto que recibió la Icculus Microgrant 2021
- Patreon: https://www.patreon.com/nakst
- Icculus Microgrant: https://icculus.org/microgrant/
Pruebas y build
- El build nightly más reciente puede descargarse desde build-essence releases
- Descargar y descomprimir
Essence.tar.xz - En VirtualBox, importar
Essence.ova - En QEMU, ejecutar el siguiente comando
qemu-kvm -drive file=drive,format=raw -m 2048 -smp 2 || qemu-system-x86_64 -enable-kvm -drive file=drive,format=raw -m 2048 -smp 2
- Descargar y descomprimir
- El build disponible actualmente está configurado solo para emuladores para facilitar las pruebas
- El método para compilar y probar está en
help/Building.md
Componentes del OS
-
Kernel
- Administrador de caché independiente del sistema de archivos
- Administrador de memoria con soporte para memoria compartida, archivos mapeados en memoria, zeroing de paginación multihilo y balanceo del working set
- Stack de red TCP/IP
- Scheduler que maneja varios niveles de prioridad y la inversión de prioridad
- Carga de módulos bajo demanda
- Sistema de archivos virtual
- Administrador de ventanas
- Mezclador de audio
- Actualmente en proceso de reescritura
- Subsistema POSIX opcional
- Puede ejecutar GCC y algunas herramientas de Busybox
-
Aplicaciones
- File Manager
- Text Editor
- IRC Client
- System Monitor
-
Componentes porteados
- Bochs
- GCC y Binutils
- FFmpeg
- Mesa para OpenGL con renderizado por software
- Musl
-
Drivers
- Administración de energía: ACPI basado en ACPICA
- Almacenamiento secundario: IDE, AHCI, NVMe
- Gráficos: BGA, SVGA
- Sistema de archivos con lectura/escritura: EssenceFS
- Sistemas de archivos de solo lectura: Ext2, FAT, NTFS, ISO9660
- Audio: HD Audio
- NIC: 8254x
- USB: XHCI, bulk storage devices, human interface devices
-
Escritorio
- Biblioteca de interfaz de usuario personalizada
- Renderizador vectorial por software con soporte para animaciones complejas
- Ventanas con pestañas
- Renderizado y maquetación de texto multilingüe basados en FreeType y Harfbuzz
1 comentarios
Opiniones en Hacker News
Al principio pensé que era otra distribución de Linux con un gestor de ventanas personalizado encima, pero en realidad era su propio sistema operativo.
Hasta tiene un kernel propio y de verdad fue hecho desde cero. Los proyectos que construyen un sistema operativo o un navegador desde cero tienen mucho valor aunque no terminen siendo usados masivamente, y quiero aplaudir a sus desarrolladores.
Otras distribuciones también hacen mucho esfuerzo, pero me gusta especialmente cómo las apps de KDE se integran como si fueran las apps predeterminadas de un sistema operativo. En cambio, Windows casi no tiene esa sensación de unidad; mezcla métodos viejos, las apps principales tienen poca consistencia y cada vez se parece más a un sistema operativo Linux armado con retazos. Si Microsoft no dejara que el equipo de marketing marcara el rumbo de Windows y se concentrara en pulir el sistema operativo, creo que podría ser un producto extraordinario.
Essence fue hecho desde cero, y es bastante impresionante que tenga una UI limpia y a la vez “poco Linux”. A diferencia de ponerle una apariencia más bonita y amigable encima a una distribución existente, esto parece un camino mucho menos común, y quizá podría seguirle los pasos a ChromeOS.
La landing page es realmente excelente. Te dice de inmediato casi todo lo que quieres saber.
Tiene capturas lindas, soporte para hardware de bajo consumo, puede arrancar con menos de 30 MB de almacenamiento y todavía menos RAM, no hay tareas en segundo plano, gran rendimiento, código abierto con licencia MIT y hasta un video demo. Se me ocurren de inmediato varios usos en nichos que los sistemas operativos de escritorio mainstream no cubren bien. Me gustaría saber más sobre la toolchain de desarrollo y cómo empezar, aunque parece que los enlaces a Discord/Patreon cubren eso en cierta medida. Si destacaran funciones como una interfaz táctil como soporte de primera clase, creo que se diferenciaría mejor de los sistemas operativos de escritorio existentes; también imagino dispositivos IoT que necesiten UI.
Si la API de gestión de ventanas es decente, creo que podría servir bastante bien como sistema de control embebido. Si se compila a WASM, también se podría crear una UI web bastante buena aprovechando un sistema de ventanas falso.
Parece que la mayor parte del trabajo se detuvo después de abril de 2022: https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...
Es parecido a decir que voy a construir mi propio jumbo jet. Tal vez pueda armar algo como un biplano rudimentario, pero no puedo fabricar el motor ni un fuselaje de tamaño real, y tampoco tengo mecánicos ni una fábrica, así que al final nadie usará ese jet.
Me gusta la estructura del final del código del bloque de arranque en ensamblador.
La forma en que sigue con
times (0x1B4 - ($-$$)) nop,disk_identifier: times 10 db 0, cuatropartition_entry_*: times 16 db 0,dw 0xAA55es elegante. Muestra cómo el identificador de disco y las cuatro particiones MBR clásicas coexisten con el código de arranque dentro de los primeros 512 bytes. Es una estructura que asume que, después de copiar el bloque de arranque al disco, un programa externo, por ejemplo una herramienta comofdisk, establece los valores de las particiones. He visto mucho código de bloques de arranque, pero nunca una organización así.Ojalá un sistema operativo así encontrara su lugar entre quienes no necesitan toda la compatibilidad hacia atrás y las funciones de servidor de Linux, y además quieren evitar Microsoft o Apple.
Quisiera algo parecido a ChromeOS, pero no tan cerrado.
Es uno de los mayores problemas que enfrenta la gente hoy, pero hasta donde sé no parece haber mucho interés real en intentar un enfoque nuevo a nivel de sistema operativo.
Si existiera un modelo de negocio viable solo con el sistema operativo, que no dependiera de vender hardware como el modelo de Apple ni de la publicidad como Android y, cada vez más, Windows, eso podría cambiar. Tal vez sea posible si algún día logro independencia económica.
El arranque en 0,7 segundos desde BIOS hasta el escritorio es impresionante.
Era un caso de uso automotriz, pensado para situaciones en las que funciones como el infotainment o el tablero deben estar disponibles inmediatamente después de encender la alimentación de accesorios.
Me preguntaba cómo dibuja un sistema operativo una GUI de alta calidad
En desarrollo bare metal he llegado a dibujar gráficos simples con un búfer de cuadros lineal, pero me da curiosidad cómo se generan las imágenes que representan componentes de UI en interfaces como esta o en pantallas tipo Windows. No se ven archivos PNG para los bordes de las ventanas, pero sí código que ajusta el color de los píxeles según el tema. Me pregunto si los componentes de UI de un sistema operativo normalmente se dibujan por programa, en vez de crearse en un editor de imágenes y luego repetirse en mosaico.
En cambio, si tienes una API de dibujo, es más fácil mapear una codificación de gráficos vectoriales en forma de llamadas a los comandos de dibujo correspondientes. Al mismo tiempo se resuelve el problema de escalado, y los assets vectoriales suelen ocupar mucho menos espacio.
Así que puede verse como explicaciones sobre cómo dibujar la UI en lugar de usar imágenes rasterizadas.
Artículo relacionado: Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - enero de 2022, 290 comentarios
Normalmente, los intentos de crear un nuevo sistema operativo parecen demasiado irreales, como si quisieran hervir el océano, pero este me gusta. Se ve con potencial inmediato
Como sugerencia, primero, si agregan virtualización temprano, podrían ejecutar otros sistemas operativos y apps familiares. A largo plazo, podrían explorar una virtualización fluida similar a Parallels Coherence para ejecutar apps externas encima del sistema operativo anfitrión, lo que podría ser una solución de corto y mediano plazo al problema de “no hay apps” que afecta a los sistemas operativos nuevos. Segundo, convendría limitar el soporte de hardware a algunas plataformas objetivo, como laptops orientadas a Linux de System76 y Framework, o Raspberry Pi. Tercero, valdría la pena evaluar traer y usar drivers de Linux o BSD mediante una API compatible, para quizá poder cubrir dispositivos de soporte notoriamente difícil, como las tarjetas Wi-Fi.
En la página de nakst, autor de Essence, https://nakst.gitlab.io/, aparece esta frase
nakst's webpage // This site works best with JavaScript disabled; excelente persona.Qué chico es el mundo.