- Projet d’OS de bureau full stack qui développe ensemble le noyau, les pilotes, les applications et les composants du bureau, avec une portée plus large qu’une simple expérimentation sur le noyau
- Les tests peuvent commencer via la build nightly
Essence.tar.xz,Essence.ovapour VirtualBox, ou la commande d’exécution QEMU - Les builds publiques sont fournies uniquement pour émulateur afin de faciliter les tests, et les builds pour matériel réel sont encore à venir
- Le noyau inclut des éléments clés comme un gestionnaire de cache indépendant du système de fichiers, un gestionnaire de mémoire, une pile réseau TCP/IP, un système de fichiers virtuel et un gestionnaire de fenêtres
- Le bureau comprend une bibliothèque UI personnalisée, un moteur de rendu vectoriel logiciel, des fenêtres à onglets, ainsi que le rendu de texte multilingue basé sur FreeType et Harfbuzz
Exécution et moyens de participer
- Essence est un projet de système d’exploitation et, en date d’octobre 2021, il existe une démo vidéo de son exécution sur du matériel réel
- Les canaux de discussion sont répartis entre un serveur Discord et un forum
- Discord : https://discord.gg/skeP9ZGDK8
- Forum : https://essence.handmade.network/forums
- Le développement peut être soutenu via Patreon, et Essence est un projet lauréat du Icculus Microgrant 2021
- Patreon : https://www.patreon.com/nakst
- Icculus Microgrant : https://icculus.org/microgrant/
Test et build
- La dernière build nightly est disponible sur build-essence releases
- Télécharger
Essence.tar.xzpuis le décompresser - Dans VirtualBox, importer
Essence.ova - Dans QEMU, exécuter la commande ci-dessous
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
- Télécharger
- Les builds actuellement fournies sont réservées aux émulateurs pour faciliter les tests
- La méthode de build et de test se trouve dans
help/Building.md
Composants de l’OS
-
Noyau
- Gestionnaire de cache indépendant du système de fichiers
- Gestionnaire de mémoire prenant en charge la mémoire partagée, les fichiers mappés en mémoire, le zeroing de pagination multithread et l’équilibrage du working set
- Pile réseau TCP/IP
- Ordonnanceur gérant plusieurs niveaux de priorité et la priority inversion
- Chargement de modules à la demande
- Système de fichiers virtuel
- Gestionnaire de fenêtres
- Mixeur audio
- En cours de réécriture
- Sous-système POSIX optionnel
- Peut exécuter GCC et certains outils Busybox
-
Applications
- File Manager
- Text Editor
- IRC Client
- System Monitor
-
Composants portés
- Bochs
- GCC et Binutils
- FFmpeg
- Mesa pour OpenGL en rendu logiciel
- Musl
-
Pilotes
- Gestion de l’alimentation : ACPI basé sur ACPICA
- Stockage secondaire : IDE, AHCI, NVMe
- Graphiques : BGA, SVGA
- Système de fichiers en lecture/écriture : EssenceFS
- Systèmes de fichiers en lecture seule : Ext2, FAT, NTFS, ISO9660
- Audio : HD Audio
- NIC : 8254x
- USB : XHCI, bulk storage devices, human interface devices
-
Bureau
- Bibliothèque d’interface utilisateur personnalisée
- Moteur de rendu vectoriel logiciel prenant en charge des animations complexes
- Fenêtres à onglets
- Rendu et mise en page de texte multilingue basés sur FreeType et Harfbuzz
1 commentaires
Avis sur Hacker News
Au début, je pensais que c’était encore une distribution Linux avec un gestionnaire de fenêtres personnalisé par-dessus, mais en réalité c’était son propre système d’exploitation
Il a même son propre noyau, et il a vraiment été construit depuis la base. Les projets qui créent un système d’exploitation ou un navigateur à partir de zéro ont beaucoup de valeur, même s’ils ne sont pas largement adoptés par le grand public, et j’ai envie d’applaudir les développeurs
D’autres distributions font aussi beaucoup d’efforts, mais j’aime particulièrement la façon dont les applis KDE s’intègrent bien comme applis par défaut d’un système d’exploitation. À l’inverse, Windows n’a presque pas cette unité, mélange d’anciennes approches, manque de cohérence dans ses applis essentielles, et ressemble de plus en plus à un système Linux bricolé. Si Microsoft ne laissait pas l’équipe marketing orienter Windows et se concentrait sur le polissage du système d’exploitation, cela aurait pu devenir un produit incroyablement excellent
Essence a été créé de zéro, et le fait qu’il ait une UI propre tout en n’étant pas « linuxienne » est assez impressionnant. Contrairement aux cas où l’on ajoute une apparence plus jolie et plus accueillante au-dessus d’une distribution existante, cela semble être une voie beaucoup plus rare, et il pourrait peut-être suivre les traces de ChromeOS
La landing page est vraiment excellente. Elle donne presque immédiatement toutes les informations qu’on veut savoir
De belles captures d’écran, la prise en charge du matériel basse consommation, un démarrage possible avec moins de 30 Mo de stockage et encore moins de RAM, aucune tâche en arrière-plan, d’excellentes performances, du code sous licence MIT publié, et même une vidéo de démo. Plusieurs usages susceptibles de devenir populaires dans des domaines que les systèmes d’exploitation desktop grand public ne couvrent pas me viennent immédiatement à l’esprit. J’aimerais en savoir plus sur la toolchain de développement et la manière de démarrer, mais les liens Discord/Patreon semblent couvrir cela dans une certaine mesure. Mettre en avant des fonctionnalités comme les interfaces tactiles comme support de premier ordre permettrait de mieux le différencier des systèmes d’exploitation desktop existants, et on peut aussi imaginer des appareils IoT qui ont besoin d’une UI
Si l’API de gestion des fenêtres est correcte, cela pourrait tout à fait servir de système de contrôle embarqué. En compilant vers WASM, on pourrait aussi créer une UI web plutôt correcte en exploitant un faux système de fenêtres
Il semble que la majeure partie du travail soit arrêtée depuis avril 2022 : https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...
C’est un peu comme si je disais que je vais construire moi-même un gros porteur. Je pourrais assembler quelque chose comme un biplan rudimentaire, mais je ne peux pas fabriquer les moteurs ni un fuselage grandeur nature, et sans mécaniciens ni usine, au final personne n’utilisera ce jet
J’aime bien la structure de la fin du code du bloc de démarrage en assembleur
La forme qui enchaîne
times (0x1B4 - ($-$$)) nop,disk_identifier: times 10 db 0, quatrepartition_entry_*: times 16 db 0, puisdw 0xAA55est élégante. Elle montre comment l’identifiant du disque et les quatre partitions MBR classiques coexistent avec le code de démarrage dans les 512 premiers octets. La structure suppose qu’après avoir copié le bloc de démarrage sur le disque, un programme externe, par exemple un outil commefdisk, définit les valeurs des partitions. J’ai vu beaucoup de code de bloc de démarrage, mais c’est la première fois que je vois une organisation de ce typeJ’aimerais que ce type de système d’exploitation trouve sa place auprès des gens qui n’ont pas besoin de toute la rétrocompatibilité et des fonctionnalités serveur de Linux, et qui veulent aussi éviter Microsoft ou Apple
Je veux quelque chose qui ressemble à ChromeOS, mais sans être aussi verrouillé
C’est l’un des plus gros problèmes auxquels les gens sont confrontés aujourd’hui, mais à ma connaissance il ne semble pas y avoir beaucoup d’intérêt réel pour tenter une nouvelle approche au niveau du système d’exploitation
S’il existait un modèle économique viable pour un système d’exploitation seul, plutôt que le modèle à la Apple reposant sur la vente de matériel, ou le modèle Android reposant sur la publicité — et Windows qui évolue de plus en plus dans ce sens — cela pourrait changer les choses. Peut-être que ce sera possible si je deviens un jour financièrement indépendant
Un démarrage en 0,7 seconde du BIOS au desktop, c’est impressionnant
C’était un cas d’usage automobile, visant des situations où des fonctions comme l’infodivertissement ou le tableau de bord doivent être disponibles juste après l’activation de l’alimentation des accessoires
Je me demandais comment un système d’exploitation dessine une interface graphique de qualité
En développement bare metal, j’ai déjà dessiné des graphismes simples avec un framebuffer linéaire, mais je me demande comment sont générées les images qui représentent les composants d’UI, comme dans ce type d’interface ou dans Windows. Je ne vois pas de fichiers PNG pour les bordures de fenêtres, mais je vois du code qui définit les couleurs des pixels selon le thème. Je me demande si les composants d’UI d’un système d’exploitation sont généralement dessinés par programme, plutôt que créés dans un éditeur d’images puis tuilés.
En revanche, avec une API de dessin, il est plus facile de mapper un encodage de graphismes vectoriels sous forme d’appels aux commandes de dessin correspondantes. Cela résout aussi les problèmes de redimensionnement, et les assets vectoriels prennent généralement beaucoup moins de place.
Il faut donc voir cela comme des descriptions de la manière de dessiner l’UI, plutôt que comme l’utilisation d’images raster.
Article lié : Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - janvier 2022, 290 commentaires
D’habitude, les tentatives de nouveau système d’exploitation semblent trop irréalistes, du genre à vouloir faire bouillir l’océan, mais celui-ci me plaît. Il paraît immédiatement plausible.
Quelques conseils : premièrement, ajouter tôt la virtualisation permettrait d’exécuter d’autres systèmes d’exploitation et des applications familières. À long terme, il serait possible d’explorer une virtualisation transparente, similaire à Parallels Coherence, pour exécuter des applications externes au-dessus de ce système hôte, ce qui pourrait être une solution à court et moyen terme au problème du « pas d’apps » qui pénalise les nouveaux OS. Deuxièmement, il vaudrait mieux limiter la prise en charge matérielle à quelques plateformes cibles, comme les fabricants de laptops orientés Linux tels que System76 et Framework, ainsi que Raspberry Pi. Troisièmement, il pourrait être utile d’étudier l’importation de pilotes Linux ou BSD via une API compatible, ce qui permettrait peut-être de gérer des périphériques notoirement difficiles à prendre en charge, comme les cartes Wi‑Fi.
Sur la page personnelle de nakst, l’auteur d’Essence, https://nakst.gitlab.io/, on trouve cette phrase :
nakst's webpage // This site works best with JavaScript disabled— un type formidable.Le monde est petit.