pato
Un sistema operativo tipo Hobby con un administrador gráfico de ventanas y aplicaciones para PC x86, con un puerto AARCH64 de trabajo en progreso.

Demostración | Características | Aplicaciones | Puertos | Cómo construir
En espera
El desarrollo de Duckos está actualmente en espera. ¡Siéntase libre de bifurcarlo y perder el tiempo con él!
Prueba duckos
Virtualizar localmente
Se puede descargar una versión reciente de la página de lanzamientos. Alternativamente, se puede descargar una imagen de disco de los últimos Duckos de los artefactos del flujo de trabajo Duckos Github. Esto puede ser virtualizado o emulado utilizando QEMU o su software de elección.
Emular en el navegador
Alternativamente, gracias al proyecto V86 por copia, puede probar una versión de Duckos en su navegador. Esto es mucho más lento ejecutarlo localmente y no tiene copias de software portado como Doom . ¡Puedes probarlo aquí!
Características
- Un administrador de ventanas / compositor más un kit de herramientas de interfaz de usuario basado en una vista temible para crear aplicaciones
- Un TCP/UDP básico sobre la pila de redes IP con enchufes Unix y un controlador E1000 Ethernet
- Sound Support para tarjetas de sonido AC97
- Muchos puertos de programas como Doom, servicios públicos como GCC y bibliotecas como SDL
- Vinculación y carga dinámica de binarios
- Capacidades de depuración a bordo como Ptrace y un perfilador de muestreo
- Una biblioteca de renderizado 3D de software
- Se ejecuta en un hardware real
- Un puerto WIP Aarch64 que pasa más allá de la etapa 1 en una frambuesa Pi 3b :)
Planes futuros
- Terminar el puerto Aarch64
- Renovar el sistema IPC del núcleo para ser más eficiente
- Mejor representación de fuentes (fuentes vectoriales, diferentes tamaños, etc.)
- anfitrión
- Más estabilidad y velocidad
- Una mejor implementación de caché del sistema de archivos que puede liberar la memoria cuando sea necesario y se reduzca periódicamente
- Más pruebas unitarias de kernel y espacio de usuario
- Mejor documentación de núcleo, bibliotecas y aplicaciones
- Algunas herramientas de depuración de espacio de kernel y usuarios, así que no tengo que pasar horas hasta las rodillas en el depurador QEMU cada vez que ocurre un Segfault debido a un simple error que podría haberse evitado con un café adicional en mi sistema
- Soporte multiprocesador (multinúcleo)
- Transición lentamente varios módulos del núcleo al espacio de usuario (a la microkernel)
- Agregar óxido a la mezcla (?)
Servicios
El código para estos se puede encontrar en los servicios.
- Init (/bin/init): el sistema init para duckos.
- Pond (/bin/estanque): el administrador/compositor de la ventana para Duckos.
- Quack (/bin/quack): el servidor de sonido para duckos.
- Cliente DHCP (/bin/DHCPClient): un cliente DHCP para asignar una dirección IP.
Aplicaciones
El código para estos se puede encontrar en programas/aplicaciones.
- Calculadora (/apps/Calculator.App): una calculadora básica.
- Terminal (/Apps/Merminal.App): una aplicación terminal basada en Libui.
- Sistema Monitor (/Apps/Monitor.App): un monitor básico del sistema que muestra la memoria y la utilización de la CPU.
- 4 en una fila (/apps/4inarow.app): un juego básico de cuatro en una fila. Juega con dos jugadores o en contra de la computadora.
- Sandbar (/bin/sandbar): una "barra de tareas" básica que muestra una fila de botones en la parte inferior de la pantalla para iniciar aplicaciones.
- Archivos (/apps/files.app): una aplicación de explorador de archivos rudimentaria.
- Viewer (Apps/Viewer.App): un visor de medios básico que puede ver imágenes y reproducir archivos de sonido
- Demo lib3d (Apps/3Demo.App): una demostración para la biblioteca lib3d. Muestra un cubo de forma predeterminada; se puede usar para ver archivos OBJ.
- Editor (/apps/editor.app): una aplicación básica para editar archivos de texto.
- Acerca de (/apps/about.app): muestra cierta información del sistema.
- Ducksweper (/apps/ducksweper.app): un juego de evitación de pato basado en la cuadrícula;)
Programas de CLI
El código para estos se puede encontrar en programas/coreutils. Junto a los sospechosos habituales, Duckos tiene:
- DSH (/bin/DSH): un shell básico con soporte para tuberías, redirecciones y retiro de comando.
- Open (/bin/open): una utilidad para abrir archivos y aplicaciones desde la línea de comando utilizando el programa apropiado.
- Play (/bin/play): reproduce archivos de audio.
- Fecha (/bin/fecha): muestra la fecha y la hora.
- Perfil (/bin/perfil): perfila una aplicación en ejecución y emite un archivo compatible con flamegraph/speedscope.
- Puede ejecutar
scripts/debugd.py en el host (con Speedscope instalado) y pasar el parámetro -r al perfil para enviar la salida directamente al host a través de la red y abrirlo en Speedscope.
Los programas que toman argumentos le proporcionarán el uso correcto cuando los ejecute sin argumentos.
Bibliotecas
- LIBC: La biblioteca C Standard C.
- LibM: La parte matemática de la biblioteca C Standard C.
- Libpond: la biblioteca utilizada para interactuar con el administrador / compositor de la ventana de estanque.
- LibGraphics: una biblioteca que proporciona algunas utilidades para trabajar con gráficos como la carga del formato de imagen.
- Libui: un marco de UI para aplicaciones.
- Libtui: un marco para aplicaciones terminales.
- Libterm: Un marco para manejar terminales.
- libduck: una biblioteca que contiene clases y utilidades de uso común, como el análisis de argumentos y archivos de configuración.
- Libriver: una biblioteca IPC que no es diferente a D-Bus, que proporciona un marco para llamadas de funciones remotas y pase de datos.
- LibApp: una biblioteca que proporciona métodos para recuperar información sobre aplicaciones instaladas y en ejecución.
- Libsys: proporciona abstracciones de C ++ de nivel superior para recuperar la información del sistema, a saber, de PROCFS.
- Libsound: proporciona un marco para aplicaciones de audio e interfaz con el Sound Server, Quack.
- Lib3D: proporciona una funcionalidad básica de renderizado de software 3D.
- Libmatrix: proporciona utilidades matemáticas de matriz.
- LibExec: proporciona soporte de elfos.
- Libdebug: proporciona funcionalidad de depuración.
Puerto
Los puertos se pueden instalar ejecutando puertos.sh suministrados con el puerto deseado como argumento. Las dependencias requeridas también serán construidas e instaladas.
Algunos de los puertos más emocionantes son:
- CONDENAR
- Deberá proporcionar su propio Doom Wadfile y ponerlo en el directorio /apps/doom.app/. (Consulte las instrucciones de compilación para obtener más detalles).
- binutilos
- GCC
- sdl2
- Además, SDL2_GFX, SDL2_IMAGE y SDL2_TTF
Edificio / carrera
- Consulte Instrucciones. MD para obtener instrucciones.
Que contribuye
- Consulte Contriping.MD para obtener información sobre cómo contribuir a Duckos.
Créditos
- El espejo de Blanham de Libballoc 1.1 para la implementación de asignación de almacenamiento de montón de kernel (es dominio abierto, por lo que si desea usarlo, lo recomiendo encarecidamente)
- Serenitios por mucha inspiración
- Gohufont para la fuente (con licencia bajo WTFPL)
Licencia