canard
Un système d'exploitation de type Unix avec un gestionnaire de fenêtres graphiques et des applications pour x86 PC, avec un port Aarch64 en cours.

Démo | Caractéristiques | Applications | Ports | Comment construire
En suspens
Le développement de Duckos est actuellement en attente. N'hésitez pas à le fourrer et à jouer avec!
Essayez Duckos
Virtualiser localement
Une version récente peut être téléchargée à partir de la page des versions. Alternativement, une image disque des derniers Duckos peut être téléchargée à partir des artefacts du flux de travail Duckos Github. Cela peut ensuite être virtualisé ou émulé à l'aide de Qemu ou de votre logiciel de choix.
Imiter dans le navigateur
Alternativement, grâce au projet V86 par copie, vous pouvez essayer une version de Duckos dans votre navigateur. C'est beaucoup plus lent à l'exécuter localement et n'a pas de copies de logiciels portés comme DOOM . Vous pouvez l'essayer ici!
Caractéristiques
- Un gestionnaire de fenêtres / compositeur plus une boîte à outils d'interface utilisateur basée sur la vue thématique pour la création d'applications
- Une pile de base TCP / UDP sur IP Networking avec Unix Sockets et un pilote Ethernet E1000
- Support sonore pour les cartes sonures AC97
- De nombreux ports de programmes comme Doom, des services publics comme GCC et des bibliothèques comme SDL
- Lien dynamique et chargement de binaires
- Capacités de débogage intégrées comme Ptrace et un profileur d'échantillonnage
- Une bibliothèque de rendu 3D logicielle
- S'exécute sur du matériel réel
- Un port WIP AARCH64 qui se promène au-dessus de l'étape 1 sur un Raspberry Pi 3B :)
Plans futurs
- Terminer le port Aarch64
- Réorganiser le système IPC du noyau pour être plus efficace
- Meilleur rendu de police (polices vectorielles, différentes tailles, etc.)
- auto-hôte
- Plus de stabilité et de vitesse
- Une meilleure implémentation de cache de système de fichiers qui peut libérer de la mémoire en cas de besoin et des écritures périodiquement
- Plus de tests d'unité d'espace de noyau et d'espace utilisateur
- Meilleure documentation du noyau, des bibliothèques et des applications
- Quelques outils plus de débogage d'espace de noyau et d'espace utilisateur, donc je n'ai pas à passer des heures jusqu'aux genoux dans le débogueur Qemu chaque fois qu'un segfault se produit en raison d'un simple bug qui aurait pu être évité avec un café supplémentaire dans mon système
- Prise en charge du multiprocesseur (multicore)
- Transitionrez lentement divers modules du noyau à l'espace utilisateur (à LA Microkernel)
- Ajouter la rouille dans le mélange (?)
Services
Le code pour ceux-ci se trouve dans les services.
- Init (/ bin / init): le système init de Duckos.
- Pond (/ bac / étang): le gestionnaire de fenêtres / compositeur de Duckos.
- Quack (/ bin / charlatan): le serveur sonore de Duckos.
- Client DHCP (/ bin / dhcpclient): un client DHCP pour attribuer une adresse IP.
Applications
Le code pour ceux-ci peut être trouvé dans les programmes / applications.
- Calculatrice (/apps/calculator.app): une calculatrice de base.
- Terminal (/apps/terminal.app): une application terminale basée sur Libui.
- Moniteur système (/apps/monitor.app): un moniteur système de base montrant la mémoire et l'utilisation du processeur.
- 4 ARRICHE (/Apps/4inarow.app): un jeu de base quatre-une rangée. Jouez avec deux joueurs ou contre l'ordinateur.
- Sandbar (/ bac / basse-sable): une "barre de tâche" de base qui affiche une ligne de boutons en bas de l'écran pour lancer des applications.
- Fichiers (/apps/files.app): une application Rudimentaire File Explorer.
- Viewer (Apps / Viewer.App): une visionneuse de base qui peut afficher les images et lire des fichiers sonores
- Demo lib3d (apps / 3demo.app): une démo pour la bibliothèque lib3d. Affiche un cube par défaut; Peut être utilisé pour afficher les fichiers OBJ.
- Editor (/apps/editor.app): une application de base pour modifier les fichiers texte.
- À propos (/apps/about.app): montre certaines informations système.
- Ducksweeper (/apps/ducksweeper.app): un jeu d'évitement de canard basé sur la grille;)
Programmes CLI
Le code pour ceux-ci peut être trouvé dans les programmes / coreutils. Aux côtés des suspects habituels, Duckos a:
- DSH (/ bin / dsh): un shell de base avec le support pour la tuyauterie, les redirections et le rappel de commande.
- Ouvrir (/ bin / ouvert): un utilitaire pour ouvrir des fichiers et des applications à partir de la ligne de commande à l'aide du programme approprié.
- play (/ bin / play): joue des fichiers audio.
- Date (/ bac / date): affiche la date et l'heure.
- Profil (/ bin / profil): profil une application en cours d'exécution et publie un fichier compatible FlameGraph / SpeedScope.
- Vous pouvez exécuter
scripts/debugd.py sur l'hôte (avec SpeedScope installé) et passer le paramètre -r au profil pour envoyer la sortie directement à l'hôte via la mise en réseau et l'ouvrir dans SpeedScope.
Les programmes qui prennent des arguments vous fourniront la bonne utilisation lorsque vous les exécutez sans arguments.
Bibliothèques
- LIBC: La bibliothèque standard C.
- LIBM: La partie mathématique de la bibliothèque C standard.
- LibPond: La bibliothèque utilisée pour l'interfaçage avec le Pond Window Manager / Compositeur.
- Libgraphics: une bibliothèque qui fournit quelques utilitaires pour travailler avec des graphiques tels que le chargement du format d'image.
- libui: un cadre d'interface utilisateur pour les applications.
- libtui: un cadre pour les applications terminales.
- Libterm: un cadre pour gérer les terminaux.
- Libduck: une bibliothèque contenant des classes et des utilitaires couramment utilisés, tels que l'anguille argumentaire et de configuration des fichiers.
- Libriver: une bibliothèque IPC non différente de D-BUS, qui fournit un cadre pour les appels de fonction distants et le passage des données.
- LIBAPP: Une bibliothèque fournissant des méthodes pour récupérer des informations sur les applications installées et exécutées.
- LIBSYS: fournit des abstractions C ++ de niveau supérieur pour récupérer les informations du système, à savoir à partir de ProCFS.
- LIBSOND: fournit un cadre pour les applications audio et l'interfaçage avec le serveur sonore, Quack.
- LIB3D: fournit des fonctionnalités de rendu 3D logicielles de base.
- LibMatrix: fournit des utilitaires matriciels matriciels.
- libexec: fournit un support ELF.
- libdebug: fournit des fonctionnalités de débogage.
Ports
Les ports peuvent être installés en exécutant des ports.Sh fournis avec le port souhaité comme argument. Les dépendances requises seront également construites et installées.
Certains des ports les plus excitants sont:
- PERTE
- Vous devrez fournir votre propre Doom Wadfile et le mettre dans le répertoire /Apps/Doom.App/. (Voir les instructions de construction pour plus de détails.)
- binutiles
- GCC
- sdl2
- Aussi, SDL2_GFX, SDL2_IMAGE et SDL2_TTF
Bâtiment / course
- Voir instructions.md pour les instructions.
Contributif
- Voir contribution.md pour plus d'informations sur la façon de contribuer à Duckos.
Crédits
- Le miroir de Blanham de Liballoc 1.1 pour l'implémentation d'allocation du tas de noyau (c'est un domaine ouvert, donc si vous voulez l'utiliser, je le recommande vivement)
- Serenityos pour beaucoup d'inspiration
- Gohufont pour la police (sous licence WTFPL)
Licence