Projects & Papers  »  Operating System Programming Site views:



  Content

NewOS... modified

Occassionally I enjoy doing some work on new operating systems. The one that I have most worked on is NewOS, a modular kernel primarily written by former Be-employee Travis Geiselbrecht. It has got its appeal most notably from its clear design with high portability in mind and its cleanly written source code.

Though development on NewOS is now more or less on a hold I still continue hacking on it once in a while. Here is a list of the most important and visible changes:

  • a proof-of-concept graphical user interface (GUI) with some very refined algorithms
  • ...with two simple GUI programs (terminal and lines)
  • a completley new network memory managment algorithm (cbuf code) that is more than 800% faster than the original code
  • 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
  • support for outgoing ICMP messages and the ping utility
  • the PCI module re-written
  • improved timer code
  • vastly improved POSIX support
  • port of the bash shell

Testing on hardware

I have made an image available for download which you can either test on real hardware or within an emulator.

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

  • a Pentium or compatible computer with a 3.5" floppy drive
  • a VESA VBE 2.0 or VBE 3.0 compliant video card for the GUI
  • an empty 1.44 MB floppy disk
  • some utility for writing raw images to floppy disks (e.g. Rawrite+)

Put an empty floppy disk into your floppy disk drive, invoke rawrite and enter image file name and floppy drive letter to write the image upon it (our use any other utility to write raw images). Then restart your computer to boot from floppy.

Testing within an emulator

A likely more elegant (and less risky ;-)) way is to test the image within an emulator like QEMU. For this, all you need is to

  • download QEMU (there's a link to a Windows version, too)
  • invoke QEMU via "qemu -L . -fda newos-notion.img -net nic,model=ne2k_pci"

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

If you run NewOS within QEMU and want to be able to access it from outside (ping, telnet), you must use a TAP adapter. Add "-net tap,ifname=OpenVPN" to the QEMU command line (replace OpenVPN with whatever name your TAP device was given).

If you don't have a TAP adapter installed, you're probably under Windows. There's a nice tutorial that explains how to install one. Once you've done that, you might want to activate Internet Connection Sharing in your normal connection's settings. For this to work you MUST set your TAP device's address to 192.168.0.1.

Download

And here it is: newos-2007-07-22-notion.img.zip

I'm always happy to get feedback: mnoist[at]cosy.sbg.ac.at


Copyright 2002-2007, Michael Noisternig