Giter Club home page Giter Club logo

kth-on-rpi2's Introduction

Port of KTH version of STH to Raspberry Pi 2

DISCLAIMER

STH Hypervisor is a research project and is continuously being changed and developed and may contain stability issues and security vulnerabilities at this stage. You are free to use STH Hypervisor, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

What is STH?

The SICS Thin Hypervisor (STH) software is a small portable hypervisor designed for the ARM architecture, with the main purpose to improve the security of embedded systems through the isolation properties that virtualization can provide. This is achieved by having a very thin software layer, the hypervisor, solely running in the processors privileged mode, managing and maintaining the resource allocation and access policies to the guests running on top of it. This allows the hypervisor to limit the power of the guest by para-virtualizing it to run in unprivileged mode, effectively creating isolation between the different components. With the help of the hypervisor, one can run a commodity OS kernel such as Linux and its user applications together with trusted security services in different execution environments isolated from each other.

The STH software is currently primarily used for research purposes and is dual licensed GPL/Commercial. See the accompanying license file for more details.

On what hardware does it run?

The STH hypervisor currently runs on the 32-bit ARM v5 and v7 architecture. It is highly portable, and can easily be ported to most 32-bit or 64-bit architectures as long as they have a memory management unit (MMU).

Build directory

When building the STH hypervisor, all output files will be stored together in the /core/build subdirectory. Depending on the platform, it will output sth_platform.fw.img which is a U-boot bootable image file. This can be loaded into real hardware or simulated with Qemu or OVP (Open Virtual Platforms).

Configuring

The hypervisor can be built for different platforms, and this is configured in the target file in the root source tree. Exactly one of the PLATFORM and one of the SOFTWARE needs to be defined in order to build successfully.

- # -*- Makefile -*-
- # Target configuration
- #PLATFORM=ovp_arm9
- #PLATFORM=ovp_integratorCP
- #PLATFORM=u8500_ref
- #PLATFORM=beagleboard
- #PLATFORM=beaglebone
- PLATFORM=raspberrypi2

- #SOFTWARE=minimal
- SOFTWARE = trusted linux
- #SOFTWARE = linux
- #SOFTWARE = dtest trusted	

- #Enable this if you want to compile for OVP 
- #SIMULATION_OVP = 1

For example, this target configuration builds the hypervisor for the Raspberry Pi 2 platform with the trusted application and the Linux kernel as guests. Some specific platforms can also be compiled for simulation on OVP, to do this, remove the comment from SIMULATION_OVP.

It is important to perform a Make clean

make clean

before switching target platform or software, as old lingering object files will lead to bugs and errors.

Compiling

In order to build the hypervisor, a binary of the paravirtualized kernel is needed. You can download a precompiled version from https://bitbucket.org/guancio/sth_deps. Copy zImage.bin into guests/linux/build/

In order to build the Hypervisor, execute the Makefile located at the root of the source tree after configuring the target file with the command

make

This produces the file core/build/sth_platform.fw.img that includes the hypervisor and the hosted para-virtualized linux.

When you want to compile again with a different platform or software, do not forget to

make clean

first, before you change the target file.

kth-on-rpi2's People

Contributors

didriklundberg avatar avahidi avatar guancio avatar

Watchers

Andreas Lindner avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.