Feral es un núcleo monolítico, al igual que un pequeño proyecto de pasatiempo para construir un sistema operativo completo desde cero, incluso si eso es muy lento.
Feral está diseñado para ejecutarse en sistemas de PC recientes con un BIOS razonablemente compatible. Por ahora, Feral no admite UEFI, aunque un puerto está en progreso.
Feral, por ahora, supone la presencia de las dos fotos 8259A presentes en las microcomputadoras tradicionales compatibles con PC. En los micros modernos, su Southbridge, como X399 o X470, probablemente tiene algo compatible. En el futuro, Feral tiene la intención de pasar a la utilización de características más nuevas del procesador, como el APIC, y finalmente el XAPIC y X2APIC. Además, Feral admitirá el multiprocesamiento simétrico.
Actualmente, el hardware que se está probando incluye una PC con una placa base de 4 "X4" y una CPU N3700 ("Braswell") con 4 GB de RAM, una computadora portátil de 17z con un 2500U (Zen 1 mencionado anteriormente), y en el futuro, un X5-Z8350 con 2 GB de RAM ("Cherry Trail").
En el futuro, Feral tiene la intención de ejecutarse en hardware Aarch64 (BCM2711), Power (SFORZA) y RV64GC (U540), con puertos escritos en algún lugar de ese orden.
Architecturalmente, Feral es un kernel monolítico simple, que arquitectónicamente comparte muchas similitudes con Mach y el Plan 9, especialmente este último. Feral prefiere colocar la mayoría de la funcionalidad en los conductores, en lugar de hornear directamente en el núcleo mismo, para permitir una mayor flexibilidad y exponer los recursos como una ubicación de red y enchufe, para reflejar mejor cómo funcionan los procesos modernos y el almacenamiento.
Por ejemplo, para abrir un archivo, uno consulta el servidor de archivos, que es un proceso propiedad del kernel, que abre un socket que acepta el tráfico entrante. Luego se puede leer o escribir de cómo se abrió el enchufe.
La idea principal es tomar la modularidad y la flexibilidad de los microkernos e injertarla en una arquitectura tradicional de núcleo monolítico, sacrificando la capacidad de hacer cosas como reiniciar los controladores del sistema de archivos al tiempo que conserva beneficios como la arquitectura limpia, las capas de controladores y múltiples proveedores de controladores.
Feral se crea para que aprenda más sobre el diseño de sistemas operativos, mientras que sale de la forma tradicional de "hacer otro *clon" "Nix": no hay nada de malo en eso, pero me gustaría explorar diferentes formas de exponer las características de hardware y sistema a programas además de hacer un archivo en algún lugar. Además, me gustaría explorar cuán diferente puede ser un nuevo sistema operativo de los sistemas tradicionales, al tiempo que es fácil de transferir el software existente.
Si bien esta imagen está desactualizada, ya que algunos de estos subsistemas deberían ser absorbidos por el núcleo, en su mayor parte esto es preciso para la intención: 
Feral ahora usa Cmake para construir. Se incluye un script de utilidad para el caso común de construcción para x86_64 y qemu en vm_test.sh , y con el stub GDB habilitado en vm_test_gdb.sh .
Para construir manualmente, debe usar Clang como su compilador C. Para el objetivo X86-64-PC sin soporte EFI, puede usar el archivo de herramientas CMAKE/X86_64-PC.CMAKE con el parámetro -DCMAKE_TOOLCHAIN_FILE=cmake/x86_64-pc.cmake . Esto construirá el núcleo propiamente dicho como 'Feralker', y se requerirán algunos pasos adicionales para crear un archivo ISO de arranque. Consulte el archivo vm_test.sh para más detalles.
Feral debe ejecutarse cómodamente en cualquier PC que implementa el conjunto de instrucciones x86-64 (es decir, al menos K8 CPU), y al menos 1 GB de memoria del sistema. Este requisito de memoria se reducirá en el futuro, pero por ahora se requiere que haga las cosas un poco más fáciles al configurar el núcleo inicialmente.
Feral espera que un adaptador de pantalla compatible con VGA esté presente para una PC. Como tal, necesitará alguna forma de adaptador de video capaz de ejecutarse en modo VGA. La mayoría de las CPU y GPU de clase de consumo implementan esto en al menos una de sus GPU.
Actualmente, Feral se prueba exclusivamente en máquinas virtuales además de Zen 1 1950X, y un puñado de máquinas Zen 1 más pequeñas. Es probable que Feral funcione bien en otro hardware, pero no se prueba.
Las carpetas deben ser nombradas para evitar caracteres innecesarios (es decir, 'Inc' vs 'incluir'.) Del mismo modo, para un módulo dado, el nombre de la carpeta debe reflejar el prefijo, de modo que la gestión de la memoria está en "mm", y la gestión de objetos está en "ob", y así sucesivamente.
Las funciones que deben exportarse entre los módulos generalmente deberían tener la convención de nomenclatura de (subsistema) (uso de funciones) (tipo opcional-argumento), como "kestartprocessor". Cuando la función es específica de la arquitectura, debe prefijarse con la arquitectura a la que pertenece, como "Aarch64StartPaging ()" o "x86SetUpidt ()". Para más detalles, consulte Formatting.txt
Además, las funciones deben usar las macros en, inout, OPT, etc. para identificar claramente lo que hace una función con un argumento. Estas macros se expanden a nada, y solo están allí para ayudar en la documentación.
Núcleo de núcleo liviano. La mayoría de la funcionalidad en los conductores. Los procesos se comunican a los libos (los syscalls van a una mesa de núcleo que le dice a un conductor de libos que esto se llamaba).
Los controladores manejan las llamadas del sistema para permitir la ejecución de programas "extranjeros" sin modificar, como la versión GNU Mach de GCC, o el juego DOS favorito de todos en Marte.
Estable, el núcleo interno abi. Los conductores de terceros deben trabajar en revisiones menores. Use el puntero PNEXT para cualquier cambio grave.
Se incluye el sistema de archivos de versiones estables, de modo que un deltree accidental no elimine todo para siempre. Suponga que el usuario no hace copias de seguridad.
(Eventualmente) Cree conductores totalmente compatibles con la familia de GPU "VEGA" y "Navi".
Soporte de extensiones de virtualización X86-64 ("Pacifica").
Algo como una cárcel o contenedores de chroot, para permitir que Feral sea útil para las operaciones del servidor.
¿Algo divertido para trabajar que podría ser útil algún día?