Skip to content

ringgaard/sanos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sanos Operating System Kernel
-----------------------------

Sanos is an OS kernel for use in PC based server appliances. The kernel
was developed as part of an experiment on investigating the feasibility
of running java server applications without a traditional operating 
system only using a simple kernel.

Sanos is open source under a BSD style license. Please see the COPYING
file for details. Sanos can be downloaded from www.jbox.dk.


  -- Michael Ringgaard (http://www.jbox.dk)

Features
--------

 - Minimalistic no nonsense application server operating system kernel.
 - Open Source (BSD style license).
 - Runs on standard PC hardware.
 - Simple installation.
 - 32-bit protected mode.
 - Interrupt driven.
 - Multitasking.
 - Single address space.
 - Kernel protection.
 - Virtual memory.
 - PE dynamically loadable modules (standard EXE/DLL format).
 - Both kernel and user modules.
 - Low memory footprint (less than 512 KB RAM)
 - Lightweight
 - Embedding support with PC104 and Flash devices
 - Self configuring (PCI, PnP & DHCP support)
 - TCP/IP networking stack with BSD socket interface
 - SMB file system support
 - Very efficient multithreading
 - Written in C (98%) and x86 assembler (2%)
 - Development using Microsoft Visual C.
 - Remote source level debugging support (windbg)


Supported hardware
------------------

 - Standard PC architecture
 - Minimum 2MB RAM (Maximum 4GB RAM)
 - Intel IA-32 and compatible processors (486 and Pentium)
 - IDE disks (PIO and UDMA mode)
 - IDE cdrom (PIO mode)
 - Floppy disks (3½" 1.44MB)
 - Keyboard (US and DK)
 - Text mode video
 - Serial ports (8250, 16450, 16550 and 16550A)
 - Supported network interface cards:
    - 3Com 3C905
    - Intel EtherExpress Pro/100 (i82557/558/559 based boards)
    - RealTek 8139 and compatible
    - SiS 900 and compatible
    - Digital "Tulip" Ethernet card (DEC 21*4*-based chips)
    - AMD PCNET32 and compatible
    - Novell NE2000 (DP8390) and compatible

Installing sanos
----------------

In order to install sanos you first need to make a boot disk. Either 
download the sanos-bin-x.x.x.zip file from www.jbox.dk or build the
source code from sanos-src.x.x.x.zip. Unzip the files into a directory
(e.g. c:\sanos) and go to the build directory and execute the mkbootdisk
batch script:

  c:\sanos> mkbootdisk

This makes a sanos.flp file in the img directory. This file can be
written to a blank floppy disk using the mkfloppy utility found in 
the tools directory:

  c:\sanos> win\tools\mkfloppy a: win\img\sanos.flp

Boot your computer using the disk. Remember to set Floppy Disk as your
first boot device in your BIOS setup.

The default installation is set up to use DHCP to obtain TCP/IP settings
from a DHCP server. If you do not have a DHCP server on your network you
can either boot without network or manually configure network.

To boot without network remove the following section from os.ini before
building the bootdisk:

  [netif]
  eth0

To configure your network manually change the [netif] section to something
like:

  [netif]
  eth0:ip=192.168.123.5,gw=192.168.123.1,mask=255.255.255.0

Booting sanos from floppy will not install any files on your harddisk. 

  *************************************************************
  * WARNING: Running the setup program will destroy all files *
  * on the first partition of the primary disk.               *
  * DO NOT DO THIS UNLESS YOU KNOW WHAT YOU ARE DOING !!!     *
  *************************************************************

If you want to install sanos on the harddisk type:

  \$ setup

at the shell prompt after sanos has started. This will install sanos on the first 
partition of the primary harddisk. After the setup program completes remove the
floppy and boot the computer. Now sanos will boot from the harddisk.


Contributions to sanos
----------------------

The sanos kernel is written by Michael Ringgaard

The pcnet32 driver is written by Søren Gjesse

The heap allocator is a port of dlmalloc by Doug Lea

The TCP/IP network stack is a port of lwIP by Adam Dunkels

The DHCP module is a port of the lwIP DHCP module by Leon Woestenberg

The DNS resolver is a port of ISC BIND lwres

The kernel timer implementation is a port of Finn Arne Gangstads kernel timer implementation

The tulip, rtl8139, eepro100, and sis900, and tulip network drivers are ported from Linux (Donald Becker)

The win32 exception handling has been ported from WINE (Turchanov Sergey, Alexandre Julliard, and Jon Griffiths)

The math assembler routines have been ported from Al Maromaty's free C Runtime Library

The random device driver has been ported from Linux (Theodore Ts'o)

The inflate decompression routines has been ported from zlib (Jean-loup Gailly and Mark Adler)

The FTP daemon is derived from Troll FTP server (Arnt Gulbrandsen)

The regex library has been ported from Henry Spencer's regex libray

The C compiler has been ported from Tiny C (Fabrice Bellard)

The assembler has been ported from NASM (Julian Hall et al.)

Bug fixes and uk key binding by Thierry Supplisson

The shell parser has been derived from software contributed to Berkeley by Kenneth Almquist