You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jan Beulich 9f09744aa3 gnttab: drop GNTMAP_can_fail 1 month ago
arch mini-os: Add suspend stubs for ARM 1 year ago
console mini-os: console.c: Rename static variable from buf to __print_buf 1 year ago
include gnttab: drop GNTMAP_can_fail 1 month ago
lib mini-os: Avoid segfaults in tc{g,s}etattr 1 year ago
scripts Add travis.yml and travis-build script 5 years ago
xenbus mini-os: move test functions under CONFIG_TEST 1 month ago
.gitignore mini-os: support "make config" for out-of-tree users 5 years ago
.travis.yml Add travis.yml and travis-build script 5 years ago
CODING_STYLE mini-os: add a coding style file 3 years ago
COPYING minios: Update mini-os license to support GPL features 9 years ago mini-os: make config handling more generic 1 month ago
Makefile mini-os: don't hard-wire xen internal paths 1 year ago
README mini-os: update README to reflect recent changes 5 years ago stubdom: sparse application's BSS by linking it separately first, put 13 years ago
balloon.c mini-os: support newer xen interface 5 years ago
blkfront.c mini-os: fix several memory leaks related to xenbus 1 year ago
daytime.c mini-os: remove using start_info in architecture independent code 5 years ago
domain_config MiniOS: no-stack-protector added to the cflags if needed, 14 years ago
events.c mini-os: allow 4096 event channels for 64-bit mini-os 1 year ago
fbfront.c mini-os: fix several memory leaks related to xenbus 1 year ago
gntmap.c mini-os: tidied up code 7 years ago
gnttab.c Save/Restore Support: Add suspend/restore support for Grant Tables. 3 years ago
hypervisor.c Save/Restore Support: Add unmap_shared_info 3 years ago
kernel.c mini-os: Use a single start_info_ptr variable 1 year ago
lock.c mini-os: don't include lib.h from mm.h 7 years ago
lwip-arch.c Include string.h before console.h 4 years ago
lwip-net.c mini-os: netfront: Handle init failure when no vifs are provided 10 months ago
main.c Save/Restore Support: Add fini_shutdown call to app exit flow. 3 years ago mini-os: support "make config" for out-of-tree users 5 years ago
mm.c mini-os: get physical memory map 5 years ago
netfront.c mini-os: netfront: fix initialization without ip address in xenstore 1 month ago
pcifront.c mini-os: fix several memory leaks related to xenbus 1 year ago
sched.c mini-os: remove unused functions from sched.c 5 years ago
shutdown.c mini-os: Add suspend stubs for ARM 1 year ago
test.c mini-os: netfront: retrieve netmask and gateway via extra function 1 year ago
tpm_tis.c Correct printf formatting for tpm_tis message. 6 years ago
tpmback.c mini-os: replace lib/printf.c with a version not under GPL 5 years ago
tpmfront.c mini-os: don't include lib.h from mm.h 7 years ago


 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
It is possible to specify the interface version of Xen via setting


in the config file. This defaults to 0x00030205, which is the minimal
version supported. The latest available version is specified by setting


- 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.