All Projects → dzavalishin → Phantomuserland

dzavalishin / Phantomuserland

Licence: lgpl-3.0
Phantom: Persistent Operating System

Programming Languages

c
50402 projects - #5 most used programming language
bytecode
52 projects

Projects that are alternatives of or similar to Phantomuserland

Aura Operating System
AuraOS, the Franco-English Operating System developed in C# using Cosmos!
Stars: ✭ 111 (-73.06%)
Mutual labels:  kernel, operating-system, virtual-machine
wiser
🐎 Extremely minimal vmm for linux written in C. Hopefully someday will spin linux-vm for you.
Stars: ✭ 249 (-39.56%)
Mutual labels:  kernel, virtual-machine, operating-system
nautilus
Nautilus Aerokernel
Stars: ✭ 30 (-92.72%)
Mutual labels:  kernel, virtual-machine, operating-system
oneiric
A small kernel + OS based on how dreams work
Stars: ✭ 11 (-97.33%)
Mutual labels:  kernel, operating-system
ByteOS
A simple hobby operating system for the x86-64 architecture, written in C.
Stars: ✭ 47 (-88.59%)
Mutual labels:  kernel, operating-system
phoenix-rtos-kernel
Phoenix-RTOS microkernel repository
Stars: ✭ 77 (-81.31%)
Mutual labels:  kernel, operating-system
MandelbrotOS
A community driven OS by the youth
Stars: ✭ 172 (-58.25%)
Mutual labels:  kernel, operating-system
Tock
A secure embedded operating system for microcontrollers
Stars: ✭ 3,258 (+690.78%)
Mutual labels:  kernel, operating-system
LudOS
A toy monolithic kernel written in C++
Stars: ✭ 38 (-90.78%)
Mutual labels:  kernel, operating-system
Lemonos
The Lemon Operating System https://lemonos.org
Stars: ✭ 260 (-36.89%)
Mutual labels:  kernel, operating-system
Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+1037.62%)
Mutual labels:  kernel, operating-system
rxinu
Rust implementation of Xinu educational operating system
Stars: ✭ 26 (-93.69%)
Mutual labels:  kernel, operating-system
RocketOS
RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational purposes primarily, but it still is a serious project. It is currently in its infancy.
Stars: ✭ 23 (-94.42%)
Mutual labels:  kernel, operating-system
meetup
Cat System Workshop is a regular meet-up focusing on “system software”. We would like to gather all developers to share their experience regarding system software and learn from each other, making system software more perfect and complete!
Stars: ✭ 52 (-87.38%)
Mutual labels:  kernel, operating-system
GENADEV OS
An AArch64 hobbyist OS for the Raspberry Pi 3 B+
Stars: ✭ 14 (-96.6%)
Mutual labels:  kernel, operating-system
fpos
Free Pascal Operating System (FPOS) is a operating system consists of a minimal kernel built on FreePascal. It contains a Scheme implementation of a hard drive (ATA) driver, keyboard (PS2), serial (8250 UART), FAT32 filesystem and a small real time clock manager. The project was built to experiment with developement of operating system using a h…
Stars: ✭ 36 (-91.26%)
Mutual labels:  kernel, operating-system
Rust Os Comparison
A comparison of operating systems written in Rust
Stars: ✭ 292 (-29.13%)
Mutual labels:  kernel, operating-system
Rust Raspberrypi Os Tutorials
📚 Learn to write an embedded OS in Rust 🦀
Stars: ✭ 7,275 (+1665.78%)
Mutual labels:  kernel, operating-system
Qword
Operating system for x86_64 based around a "keep it simple and make it work" philosophy.
Stars: ✭ 367 (-10.92%)
Mutual labels:  kernel, operating-system
nightingale
A small operating system where I experiment and learn osdev.
Stars: ✭ 86 (-79.13%)
Mutual labels:  kernel, operating-system

Welcome to Phantom OS

Phantom OS is a persistent operating system. Its primary goal is to provide environment for programs that does survive OS reboot. Such an environment greatly simplifies software development and makes it possible to write programs that, for example, do not need filesystem.

Nevertheless, Phantom supports filesystems and all of the modern OS features.

For the details please refer to the Phantom OS Programmer's guide.

For the questions and discussion please visit chat or Google Group.

What Phantom OS is

Basically, most of code we (the original team) upload is very straighforward and, sometimes, dumb. That, to some extent, is on purpose. We want to have a working system first and polish it next. Besides, not all the concepts and design desicions are final, so it is of no use to finalize all the implementation desisions now as well.

Code is known to compile successfully with cygwin/linux gcc 4.3.4. Only ia32 target is most complete and stable, arm port is in active development but very instable, mips port is just started - compiles and can breath for a second :), amd64 port is incomplete and does not compile at all.

How to take part

Current state

See ChangeLog, look at ScreenShots, and here is the last one:

More screenshots: https://github.com/dzavalishin/phantomuserland/wiki/ScreenShots

Dox

Documentation Status

Web Documentation and PDF, and there's a lot of info in WIKI

Build

Set '''PHANTOM_HOME''' environment variable to the path to Phantom repository root directory, "make all" there.

In Windows you will need Cygwin to do that. http://www.cygwin.com Select, at least: gcc4, subversion, binutils, make, gdb (see etc/cygwin_get.cmd)

See also TOOLCHAIN

Run

Run phantom.cmd/phantom.sh in /run

See doc/RUNNING for more details

Debug

Run QEMU (see above) and then - gdb in /oldtree/kernel/phantom

Kernel console is logged to /run/serial0.log

Kernel is able to send logging info to syslogd by UDP. Currently syslogd address is hardcoded in net_misc.c.

Directories

  • oldtree/kernel/phantom - kernel
  • phantom - libs and unix userland (user/apps)
  • plib/sys/src - native phantom userland code
  • run - QEMU run/test environment
  • tools/plc - phantom language compiler / java bytecode translator

Go on and take part

Kernel and compiler

Creating an unusual operating system is a very interesting thing to do. There are challenges on each and every step. Just to start with:

  • Persistent memory garbage collector. Suppose we're in a 64 bit world and persistent memory size is some 20 Tb. Current GC is incomplete.
  • If we touch memory too much snapshot engine will spend a lot of IO to store difference. Fast and good allocator can reduce IO load. There is one, but it could be better.
  • There's need for a fast alpha-blending image transfer (bitblt) code.
  • Unix subsystem is very limited. No signal delivery, for example. It waits for one who will implement missing parts.
  • It is theoretically possible to implement a persistent Unix environment. Quite challenging.
  • Drivers - current set is minimal, AHCI driver is not complete, USB needs optimization, some more must be ported or written.
  • It would be interesting to add Python frontend to Phantom compiler. Are you a Python fan? Can help?
  • Phantom bytecode supports classes, inheritance, but does not support interfaces. It is not really trivial to implement interfaces in an efficient way.
  • Even simple JIT engine will help a lot.
  • TCP stack is not ideal and needs someone to lend a hand.

Porting Phantom

Ports to ARM and MIPS were started, but long time no progress. I look for one who can help with that.

Bringing it to 64 bit Intel/AMD is actual task too.

Current kernel is basically SMP ready, but SMP support is not finished completely.

Userland

There's need to implement demo applications for Phantom - even simple ones will help.

More serious task is to bring in some simple HTML renderer and get basic browser working.

Build and CI

  • There is a need for a good CI setup which can run system in a specific configurations and following special scenarios.
  • Bytecode engine needs to be tested with random garbage execution.
  • It is a good idea to keep set of tools that for sure build correct OS kernel. cc/binutils/qemu, etc.
  • Need setup to build ISO image of system to run on different machines and emulators.
  • There is real need to do CI on a real hadrware. Need corresponding scripts.

If you feel interested to take part in a project, please leave me a note. An issue on a GitHub is ideal communications channel.

Issues to start with

Badges

Codacy Badge

Build Status

Code coverage

Communications

Easiest way is to Write e-mail to Dmitry Zavalishin

Or leave a message in Google group

Or leave an issue in tracker

Here is an Phantom Web Site, but since you're here you better look at Wiki.


Best regards, Dmitry Zavalishin, [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].