NewOS... modified

NewOS is an alternative, modular operating system kernel that has got its appeal most notably from its clear design with a high portability in mind and its clean source code. It was primarily written by Travis Geiselbrecht, a former employee of now defunct Be Inc., a software company, which was responsible for the development of BeOS, a visionary operating system of its time. I started development on NewOS back in 2001 when Be Inc. was dissolved and a group of enthusiastic BeOS users and developers came together to start development of an open-source version of the operating system, dubbed OpenBeOS (now known as Haiku OS). They selected NewOS as the basis for their own operating system, and though I initially joined them and helped them out for a while I eventually preferred contributing to the development of the NewOS kernel.

While development on NewOS is now largely on hold I still enjoy hacking on it and implementing new ideas when time permits (which is getting scarce). Many of my contributions are not submitted to the public code repository, so here is a list of the most prominent changes over the official code base:

  • a proof-of-concept very fast TCP-based client-server window manager with some very refined algorithms (shame on the X window system for being so slow)
  • ...with a few simple GUI programs including terminal, lines, fireworkx, kumppa, and... Doom!
  • centralized kernel object handling
  • ...with a highly efficient, micro-granular kernel object locking and referencing concept with minimal lock contention (thereby fixing a huge number of race conditions in the original NewOS code)
  • a new network memory managment algorithm (cbuf code) that is more than 800% faster than the original code
  • ...including an asynchronous network timer implemention, further speeding up the network module considerably
  • a reworked and stable TCP implementation with New Reno congestion control
  • kernel slab allocator with page coloring
  • reworked thread/process code with support for job control and process forking
  • reworked TTY implementation
  • ...with minimal lock contention (much much faster than original code) and considerably improved VT100 support
  • improved timer code
  • vastly improved POSIX support
  • C++ exception support
  • a VESA VBE 3.0 video card driver that even resolves the most frequent vendor specific VBE 3.0 flaws and plain errors
  • a NE2000 and compatible ISA and PCI network card driver
  • the PCI module re-written
  • support for outgoing ICMP messages and the ping utility
  • port of various GNU utilities including bash, less, and grep (the latter two for testing, basically)

Update 26 Jan., 2011: I have donated the sources of my VESA VBE 3.0 driver to the Haiku folks upon request. For background information on the VESA VBE 3.0 driver, follow this link.

Latest version updated on 20 Jan., 2016.

Testing

The image I have made available for download below can be conveniently tested within an emulator like QEMU. Once you have downloaded and extracted the image, follow these two steps:

  • install one of the precompiled QEMU Windows binaries, install QEMU using your Linux packagement, or compile it from the sources
  • invoke QEMU via "qemu -L . -hda newos-notion.img -k en-us -net nic,model=ne2k_pci -net user -localtime"

You will get some simple instructions on how to access your network once you boot into NewOS.

Outside network access from your host to the NewOS guest system is possible using port forwarding or via tun/tap devices. In QEMU, port forwarding is enabled using the '-redir' parameter (e.g., "-redir tcp::23" to allow incoming telnet connections over the local host port specified). tun/tap devices are readily available on Linux; on Windows, a tap adapter may be installed as explained in this tutorial. You must then activate Internet Connection Sharing in your Windows network connection settings, and you MUST set your TAP device's address to 192.168.0.1.

If you are adventurous and out for testing on bare hardware make sure you have

  • an Intel x86 or compatible computer (Pentium or above) with anything to boot from (floppy, CD, USB stick or hard disk)
  • a VESA VBE 2.0 compliant video card (pretty much anyone is) or optionally a VBE 3.0 compliant video card
  • some utility for writing raw images to disk (e.g., Linux 'dd' tool or Rawrite+ for Windows) or for writing ISO images to CD or USB stick

The raw image provided in the download can be converted into an ISO image using the 'mkisofs' Linux/Unix utility. Copy 'newos-notion.img' into an empty 'temp' directory and invoke "mkisofs -o newos-notion.iso -b newos-notion.img ./temp", then format your CD or USB stick with the ISO image.

Download

And here it is: newos-2016-01-20-notion.img.zip

I'm always happy to get feedback: notion[at]notion.muelln-kommune.net