mini-os
mini-os copied to clipboard
Mirror of the Xen MiniOS Git from git://xenbits.xen.org/mini-os.git
Minimal OS
This shows some of the stuff that any guest OS will have to set up.
This includes:
- installing a virtual exception table
- handling virtual exceptions
- handling asynchronous events
- enabling/disabling async events
- parsing start_info struct at start-of-day
- registering virtual interrupt handlers (for timer interrupts)
- a simple page and memory allocator
- minimal libc support
- minimal Copy-on-Write support
- network, block, framebuffer support
- transparent access to FileSystem exports (see tools/fs-back)
-
to build it just type make.
-
Mini-OS can be configured in various ways by specifying a config file:
MINIOS_CONFIG=config-file make
config-file can contain various CONFIG_* items set to either "y" or "n". Their defaults can be found in Config.mk. It is possible to specify the interface version of Xen via setting
XEN_INTERFACE_VERSION=
in the config file. This defaults to 0x00030205, which is the minimal version supported. The latest available version is specified by setting
XEN_INTERFACE_VERSION=XEN_LATEST_INTERFACE_VERSION
-
By typing
make testbuild
it is possible to test builds of various configurations. This should be done always after modifying Mini-OS.
The configurations which are build tested can be found in the directory arch/*/testbuild with one file per configuration. Those configurations are being built for each sub-architecture (e.g. x86_32 and x86_64 for the x86 architecture).
Please update the current configuration files when adding a new CONFIG_ item and maybe even add a new configuration file if the new item interacts with other CONFIG_ items.
-
to build it with TCP/IP support, download LWIP 1.3.2 source code and type
make LWIPDIR=/path/to/lwip/source
-
to build it with much better libc support, see the stubdom/ directory
-
to start it do the following in domain0
xl create -c domain_config
This starts the kernel and prints out a bunch of stuff and then once every second the system time.
If you have setup a disk in the config file (e.g. disk = [ 'file:/tmp/foo,hda,r' ] ), it will loop reading it. If that disk is writable (e.g. disk = [ 'file:/tmp/foo,hda,w' ] ), it will write data patterns and re-read them.
If you have setup a network in the config file (e.g. vif = [''] ), it will print incoming packets.
If you have setup a VFB in the config file (e.g. vfb = ['type=sdl'] ), it will show a mouse with which you can draw color squares.
If you have compiled it with TCP/IP support, it will run a daytime server on TCP port 13.
ARM notes
- The IRQ numbers are currently hard-coded in gic.c and may need to be updated if future versions of Xen change them.