Introduction to Graphene¶
What is Graphene Library OS?¶
Graphene is a lightweight guest OS, designed to run a single Linux application with minimal host requirements. Graphene can run applications in an isolated environment with benefits comparable to running a complete OS in a virtual machine – including guest customization, ease of porting to different host OSes, and process migration.
Graphene supports running Linux applications using the Intel SGX (Software Guard Extensions) technology (we call this version Graphene-SGX). With Intel SGX, applications are secured in hardware-encrypted memory regions (called SGX enclaves). SGX protects code and data in the enclave against privileged software attacks and against physical attacks on the hardware off the CPU package (e.g., cold-boot attacks on RAM). Graphene is able to run unmodified applications inside SGX enclaves, without the toll of manually porting the application to the SGX environment.
What Hosts Does Graphene Currently Run On?¶
Graphene was developed to encapsulate all host-specific code in one layer, called the Platform Adaptation Layer, or PAL. Thus, if there is a PAL for a given host, the library OS and applications will “just work”.
Porting Graphene to a new host only requires porting PAL, by implementing the PAL Host ABI using OS features of the host. To date, we ported Graphene to FreeBSD (this port is not maintained anymore) and Linux (the latter also with Intel SGX support). Support for more hosts is expected in the future.
How to Build and Run Graphene?¶
See Quick Start for instructions how to quickly build and run Graphene. For full build instructions, see How to build Graphene?. To deploy Graphene in the cloud, see How to deploy Graphene in the cloud?.
How to Contact the Maintainers?¶
For bug reports, post an issue on our GitHub repository: https://github.com/oscarlab/graphene/issues.
Table of Contents¶
- Quick Start
- How to build Graphene?
- How to deploy Graphene in the cloud?
- Graphene Manifest Syntax
- Supported System Calls in Graphene
- Running Sample Applications
- Introduction to SGX
- How to write documentation
- Porting Graphene PAL to Other hosts
- PAL Host ABI
- What is Graphene’s PAL Host ABI
- PAL as Loader
- Data Types and Variables
- Pal APIs