Seoul is a x86 Virtual Machine Monitor including device models and instruction emulator. It is a standalone version of the Vancouver VMM that is included in NUL and was developed mainly by Bernhard Kauer. The combination of NOVA and Vancouver (later Seoul) is described in the following paper by Udo Steinberg and Bernhard Kauer:
NOVA: A Microhypervisor-Based Secure Virtualization Architecture
NUL and the Vancouver project is discontinued. Even so Seoul has beend developed originally solely to run with the NOVA hypervisor, nowadays it is also available for seL4 and Fiasco.OC on Genode.
This fork of Seoul is an adjusted version specifically tailored to run with the Genode operating system framework and Sculpt OS. Ready to use Seoul packets for Sculpt OS are available via alex-ab’s index. Note: the other bindings for NUL and NRE of this repository are not maintained nor runnable.
Seoul gets maintained and extended mainly by me on a casual base - as time permits. This repository is referenced as external port via Genode GOA SDK in genode-world and for developer purposes via my chest repository.
Beside keeping it runnable, the noteworthy extensions are the 64 bit guest support added in 2023 and the support of Virtio models for GPU(2D), audio and input in 2021-2022. From time to time I publish on genodians.org updates.
To use it, you first need to obtain a clone of Genode:
! git clone https://codeberg.org/genodelabs/genode.git genode
Please follow the instruction of the Genode OS framework to get ready.
Now, clone the genode-chest.git repository to genode/repos/chest:
! git clone https://github.com/alex-ab/genode-chest.git genode/repos/chest
For enabling the repository, adjust the build-directory configuration etc/build.conf by adding the following line to the ‘REPOSITORIES’ definitions.
! REPOSITORIES += $(GENODE_DIR)/repos/chest
Within the genode directory, create an build directory for x86, e.g.
! tool/create_builddir x86_64
Get the external Seoul port, which is this repository:
! tool/ports/prepare_port seoul
In repos/chest/run you will find various seoul*.run scenarios, e.g. an example invocation is
! make -C build/x86_64 KERNEL=nova run/seoul-auto
For questions please consult github issue tracker of this repository.