Feral est un noyau monolithique, tout comme un petit projet de passe-temps pour construire un système d'exploitation complet à partir de zéro, même si c'est très lentement.
Feral est conçu pour fonctionner sur des systèmes PC récents avec un BIOS raisonnablement compatible. Pour l'instant, Feral ne prend pas en charge l'UEFI, bien qu'un port soit en cours.
Feral, pour l'instant, suppose la présence des deux photos 8259a présentes dans les micro-ordinateurs traditionnels compatibles PC. Sur les micros modernes, votre Southbridge, comme X399 ou X470, a probablement quelque chose de compatible. À l'avenir, Feral a l'intention de passer à l'utilisation de nouvelles fonctionnalités de processeur, telles que l'APIC, et éventuellement le Xapic et X2APIC. De plus, Feral prendra en charge le multiprocessement symétrique.
Actuellement, le matériel testé comprend un PC avec une carte mère de 4 "x4" et un processeur N3700 ("Braswell") avec 4 Go de RAM, un ordinateur portable 17Z avec un 2500U (Zen 1 susmentionné), et à l'avenir, un X5-Z8350 avec 2 Go de RAM ("Cherry Trail").
À l'avenir, Feral est destiné à fonctionner sur AARCH64 (BCM2711), Power (SFORZA) et RV64GC (U540), avec des ports écrits quelque part dans cet ordre.
Architecturalement, Feral est un simple noyau monolithique, qui partage architectural de nombreuses similitudes avec Mach et Plan 9, en particulier ce dernier. Feral préfère placer la plupart des fonctionnalités dans les conducteurs, plutôt que directement dans le noyau lui-même, pour permettre plus de flexibilité et exposer les ressources en tant que localisation et socket de réseau, pour mieux refléter le fonctionnement des processus et du stockage modernes.
Par exemple, pour ouvrir un fichier, on interroge le serveur de fichiers, qui est un processus appartenant au noyau, qui ouvre une prise qui accepte le trafic entrant. Il peut ensuite être lu ou écrit à partir de la façon dont la prise a été ouverte.
L'idée principale est de prendre la modularité et la flexibilité des microkernels et de le greffer dans une architecture de noyau monolithique traditionnelle, sacrifiant la possibilité de faire des choses telles que le redémarrage des moteurs du système de fichiers tout en conservant des avantages tels que l'architecture propre, la superposition de pilotes et plusieurs fournisseurs de pilotes.
Feral est créé pour moi pour en savoir plus sur la conception des systèmes d'exploitation, tout en quittant la façon traditionnelle "faire un autre * clone" de faire ceci: il n'y a rien de mal à cela, mais j'aimerais explorer différentes façons d'exposer des fonctionnalités matérielles et système aux programmes en plus de faire un fichier quelque part. De plus, j'aimerais explorer à quel point un nouveau système d'exploitation peut être différent des systèmes traditionnels tout en étant facile à porter le logiciel existant.
Bien que cette image soit obsolète, car certains de ces sous-systèmes devraient être absorbés dans le noyau, pour la plupart, cela est exact à l'intention: 
Feral utilise désormais Cmake pour construire. Un script utilitaire est inclus pour le cas commun de construction pour x86_64 et qemu dans vm_test.sh , et avec le talon gdb activé dans vm_test_gdb.sh .
Pour la construction manuelle, vous devez utiliser Clang comme compilateur C. Pour la cible X86-64-PC sans prise en charge EFI, vous pouvez utiliser le fichier d'outils CMake / x86_64-pc.cmake avec le paramètre -DCMAKE_TOOLCHAIN_FILE=cmake/x86_64-pc.cmake . Cela créera le noyau proprement dit en tant que «feralker», et certaines étapes supplémentaires devront créer un fichier ISO amorçable. Voir le fichier vm_test.sh pour plus de détails.
Feral devrait fonctionner confortablement sur n'importe quel PC implémentant le jeu d'instructions x86-64 (c'est-à-dire au moins K8 CPU) et au moins 1 Go de mémoire système. Cette exigence de mémoire sera abaissée à l'avenir, mais pour l'instant est nécessaire pour faciliter un peu les choses lors de la configuration du noyau initialement.
Feral s'attend à ce qu'un adaptateur d'affichage compatible VGA soit présent pour un PC. En tant que tel, vous aurez besoin d'une forme d'adaptateur vidéo capable de fonctionner en mode VGA. La plupart des processeurs et des GPU de la classe grand public le mettent en œuvre dans au moins un de leurs GPU.
Actuellement, Feral est testé exclusivement sur des machines virtuelles au-dessus du Zen 1 1950x, et une poignée de petites machines Zen 1. Il est probable que le sauvage fonctionnera bien sur un autre matériel, mais il n'est pas testé.
Les dossiers doivent être nommés de manière à éviter les caractères inutiles (c'est-à-dire, «Inc» vs »incluent».) De même, pour un module donné, le nom du dossier doit refléter le préfixe, de sorte que la gestion de la mémoire est en «mm», et la gestion des objets est dans «OB», etc.
Les fonctions qui doivent être exportées entre les modules devraient généralement avoir la convention de dénomination de (sous-système) (fonction de fonction) (type argument facultatif), tel que "KestartProcessor". Lorsque la fonction est spécifique à l'architecture, elle doit être préfixée avec l'architecture à laquelle il appartient, comme "Aarch64StartPaging ()", ou "x86SetUpidt ()". Pour plus de détails, voir Formatting.txt
De plus, les fonctions doivent utiliser les macros dans, inout, opt, etc. pour identifier clairement ce qu'une fonction fait avec un argument. Ces macros se développent à rien et ne sont là que pour aider à la documentation.
Noyau de noyau léger. Majorité des fonctionnalités chez les conducteurs. Les processus communausent aux libos (les systèmes vont à une table de noyau qui indique à un conducteur de libos que cela a été appelé.)
Les conducteurs gèrent les appels du système pour permettre l'exécution de programmes "étrangers" non modifiés, tels que la version GNU Mach de GCC, ou le jeu DOS préféré de tout le monde sur Mars.
Noyau interne stable Abi. Les conducteurs de tiers devraient travailler sur des révisions mineures. Utilisez le pointeur PNEXT pour tout changement sérieux.
Système de fichiers stable et versioning inclus, de sorte qu'un deltree accidentel ne supprime pas tout pour toujours. Supposons que l'utilisateur ne fait aucune sauvegarde.
(Finalement) Créez des pilotes conformes entièrement vulkan pour la famille des GPU "Vega" et "Navi".
Prise en charge des extensions de virtualisation x86-64 ("Pacifica").
Quelque chose comme une prison de chroot ou des conteneurs, pour permettre à Feral d'être utile pour les opérations de serveur.
Quelque chose d'amusant à travailler qui pourrait être utile un jour?