From OSDev Wiki
Jump to navigation Jump to search

I will try to update this frequently; for more information, please contact (ahferroin7 AT gmail DOT com)

Note: As Ophiophagus is pre-pre-alpha at the moment, I am not currently looking for more developers

Current Info

  • Will be implemented on top of a L4 Fiasco.OC microkernel + L4re
  • Will be written in C with some Lua
  • Will absolutely NOT be a monolithic kernel
  • Will utilize FUSE for most fs drivers
  • Will have a POSIX compatibility layer
  • Will also have compatibility layers providing some of the more unique API's of some other UNIX derived OSes (eg Linux, 4.4 BSD, possibly SVR4, possibly others)
  • General structure:
    • Core system servers: the absolute minimum that must be running for a usable system
      • Memory manager (Initially Sigma0, will eventually be replaced when more of the other components are working)
      • Filesystem server (provides a uniform filesystem interface and unified fs hierarchy, as well as FUSE API, will include integrated drivers for FAT16/32, ISO 9660, and UDF, named anaconda)
      • UI manager (takes care of keyboard input/virtual terminal output, named copperhead)
      • Bus manager (acts as a monitor/controller for driver access to PCI/USB/Other buses, named boomslang)
      • Crash detector/debug server (attempts to restart other core servers if they crash, handles debugging of core servers, will eventually also be the init process, named mongoose)
    • Additional system servers: provide other useful services, but not required to boot and run
      • Network manager (provides a uniform network interface so user programs don't have to know what type of networking the system has, named basilisk)
      • POSIX compatibility layer (Will manage most POSIX syscalls, named asp)
      • 4.4 BSD compatibility layer (Will only provide API's that are not in POSIX or native, named boa)
      • Linux compatibility layer (Will provide some otherwise Linux specific API's such as inotify, named cottonmouth)
      • CLR runtime server (Will fill the same function as Mono, named mamba)
  • Will be developed in a hardware agnostic manner, so it should run on any architecture supported by L4 Fiasco.OC
  • All drivers will run in usermode
  • Each driver will see only the hardware which it needs (for example, a driver for an AGP graphics card will only see the graphics card which it is for)
  • Ophiophagus will utilize a unified fs hierarchy; although it will utilize some slightly different conventions, most notably
    • Root's home directory is /home/root not /root
    • The system's initrd will be accessible read only in /boot/initrd
    • /opt will be a symbolic link to /usr/local
    • /srv will be a symbolic link to /var/services
    • /var/www, /var/ftp and other service specific directories under /var will be symbolic links to identically named directories in /var/services