2018-03-05 17:15:40 +08:00
---
toc: true
2020-04-06 23:17:43 +08:00
layout: api
2020-11-26 13:09:41 +08:00
SPDX-License-Identifier: CC-BY-SA-4.0
SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
2018-03-05 17:15:40 +08:00
---
2018-02-21 08:54:32 +08:00
2018-02-22 12:19:08 +08:00
# Getting Started
2018-05-25 15:09:45 +08:00
2018-05-28 12:08:14 +08:00
This page is a quick start for working with seL4 and its ecosystem.
2018-05-25 15:09:45 +08:00
2018-05-28 12:08:14 +08:00
## Background and terminology
2018-05-25 15:09:45 +08:00
2018-05-28 12:08:14 +08:00
### Sources
Code and proofs are available on [GitHub ](https://github.com/seL4 ), under standard
2023-01-12 08:07:34 +08:00
[open-source licenses ](/processes/licenses ).
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
There are [many repositories ](/MaintainedRepositories ).
Of the most significant are:
2018-02-21 08:54:32 +08:00
2018-03-08 11:11:49 +08:00
- [l4v ](https://github.com/seL4/l4v ) the seL4 proofs
- [seL4 ](https://github.com/seL4/seL4 ) the seL4 kernel
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
### Projects
The seL4 kernel is built as part of project. Each project has a
2018-05-28 13:49:16 +08:00
README.md associated with it which provides further information.
2018-02-21 08:54:32 +08:00
2021-02-05 17:15:41 +08:00
While the kernel is normally built as part of a project it is also
possible create a [standalone build ](/Developing/Building/seL4Standalone ).
2018-05-28 12:08:14 +08:00
Projects are a collection of git repositories, with versions managed by
2018-05-25 15:09:45 +08:00
[Android's Repo tool ](http://source.android.com/source/downloading.html#installing-repo ).
2018-05-28 12:08:14 +08:00
Each project consists of an XML manifest file which specifies the source dependencies,
and directory structure of a project.
2018-05-25 15:09:45 +08:00
See the [RepoCheatsheet ](/RepoCheatsheet ) page for a quick
explanation of how we use Repo and some common commands.
2018-02-21 08:54:32 +08:00
2020-04-07 08:35:08 +08:00
A subset of available projects are described below, for a full list see the [list of released projects ](/processes/release-process#versioned-manifests ):
2018-02-21 08:54:32 +08:00
2018-03-08 11:11:49 +08:00
- [verification ](https://github.com/seL4/verification-manifest ),
2018-02-22 13:18:23 +08:00
the seL4 proofs.
2018-03-08 11:11:49 +08:00
- [seL4test ](https://github.com/seL4/sel4test-manifest ), a
2018-02-22 13:18:23 +08:00
test suite for seL4, including a Library OS layer.
2018-05-25 15:09:45 +08:00
- [seL4bench ](https://github.com/seL4/sel4bench-manifest ), a
microbenchmarking suite for seL4.
2018-03-08 11:11:49 +08:00
- [CAmkES ](https://github.com/seL4/camkes-manifest ), a
2018-02-22 13:18:23 +08:00
component architecture for embedded systems based on seL4. See the
CAmkES pages for more documentation about CAmkES.
2018-05-25 15:09:45 +08:00
- [x86 Camkes VMM ](https://github.com/seL4/camkes-vm-examples-manifest ) a
2018-02-22 13:18:23 +08:00
component-based virtual machine monitor for ia32 platforms using
Intel VT-X and VT-D extensions.
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
### Hardware and Target Platforms
2018-02-22 12:19:08 +08:00
2018-03-13 13:51:46 +08:00
Read the [Hardware ](Hardware ) pages to see a list of supported platforms,
2018-02-21 08:54:32 +08:00
and special instructions for particular hardware platforms.
2019-09-23 13:50:09 +08:00
### Verification Targets and Claims
The seL4 kernel has a number of verified properties on a selection of
configured hardware platforms. These configurations are also referred to
as *verification platforms* (e.g. ARM\_HYP). Read
[Verified Configurations ](VerifiedConfigurations ) to see which proofs are
available for which platform and how to make use of these
configurations.
**Note:** verification claims are limited to specific properties of seL4
on specifically configured platforms. These claims do not automatically
transfer to other platforms, other seL4 configurations, or custom seL4
versions. Please consult [Frequently Asked
Questions](FrequentlyAskedQuestions), as well as the [proof and
2024-10-04 10:09:29 +08:00
assumptions page](http://sel4.systems/Info/FAQ/proof.html) for a better
2019-09-23 13:50:09 +08:00
understanding of the intersection of verification and seL4.
2018-05-28 12:08:14 +08:00
### Setting up your machine
2018-02-22 12:19:08 +08:00
2018-05-22 09:46:02 +08:00
Read the [Host Dependencies ](HostDependencies ) page to find instructions on how to set up
2018-05-28 12:08:14 +08:00
your host machine.
### Build system
We use a [CMake-based build system ](/Developing/Building ) to manage dependencies.
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
## Running seL4
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
This section presents a case study, by the end of which you can run seL4test on a simulator.
2018-02-26 14:11:14 +08:00
2018-05-28 12:08:14 +08:00
### Fetching, Configuring and Building seL4test
2018-02-26 14:11:14 +08:00
2018-05-25 15:09:45 +08:00
To build a project, you need to:
2018-05-28 12:08:14 +08:00
- check out the sources using Repo,
- configure a target build using CMake,
2018-05-25 15:09:45 +08:00
- build the project using Ninja.
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
1. Use repo to check sel4test out from GitHub. Its manifest is located in the `sel4test-manifest` repository.
2021-08-13 08:49:08 +08:00
2018-05-25 15:09:45 +08:00
```sh
2018-05-28 12:08:14 +08:00
mkdir seL4test
2018-05-25 15:09:45 +08:00
cd seL4test
repo init -u https://github.com/seL4/sel4test-manifest.git
repo sync
```
2021-08-13 08:49:08 +08:00
2018-11-05 13:11:44 +08:00
2. Configure an x86\_64 build directory, with a simulation target to be run by
[Qemu ](http://www.qemu.org/ ). QEMU is a generic and open source
machine emulator and virtualizer, and can emulate different
architectures on different systems.
2021-08-13 08:49:08 +08:00
2018-05-25 15:09:45 +08:00
```sh
mkdir build-x86
cd build-x86
2018-05-30 11:41:14 +08:00
../init-build.sh -DPLATFORM=x86_64 -DSIMULATION=TRUE
2018-05-25 15:09:45 +08:00
ninja
```
2021-08-13 08:49:08 +08:00
2018-05-25 15:09:45 +08:00
The target configurations available for each project are potentially different depending on what the project supports.
[Building/Using ](/Developing/Building/Using ) describes how projects can generally be configured.
2018-05-28 12:08:14 +08:00
3. The build images are available in `build-x86/images` , and a script `build-x86/simulation`
that will run Qemu with the correct arguments to run seL4test.
2021-08-13 08:49:08 +08:00
2018-05-25 15:09:45 +08:00
```sh
./simulate
```
2021-08-13 08:49:08 +08:00
2018-05-28 12:08:14 +08:00
4. On success, you should see:
2021-08-13 08:49:08 +08:00
2018-05-28 12:08:14 +08:00
```
Test VSPACE0002 passed
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
< / testcase >
2018-02-22 12:19:08 +08:00
2018-05-28 12:08:14 +08:00
< testcase classname = "sel4test" name = "Test all tests ran" >
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
< / testcase >
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
< / testsuite >
2018-02-22 12:19:08 +08:00
2018-05-28 12:08:14 +08:00
All is well in the universe
```
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
For more information on seL4test see its [project page ](/seL4Test ).
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
## Using real hardware
2018-02-21 08:54:32 +08:00
2018-05-25 15:09:45 +08:00
See [Hardware ](/Hardware ) for supported hardware and how to set it up.
2018-02-21 08:54:32 +08:00
2018-05-25 15:09:45 +08:00
## Learn more
2018-02-22 12:19:08 +08:00
2018-05-28 12:08:14 +08:00
### seL4 Tutorials
2018-02-21 08:54:32 +08:00
2018-05-25 15:09:45 +08:00
The seL4 and CAmkES [Tutorials ](Tutorials ) are an
introduction to the design of seL4, and also to preparing to develop for
seL4, and they are also used internally to train new seL4 engineers.
You are strongly encouraged to complete the tutorials if you are new to
seL4: they will quickly bring you up to speed and ready to practically
contribute.
2018-02-22 12:19:08 +08:00
2018-05-25 15:09:45 +08:00
### Publications
2018-02-22 12:19:08 +08:00
2018-02-21 08:54:32 +08:00
You can find a long list of seL4 publications here:
2021-11-07 10:08:45 +08:00
[The seL4 project page at Trustworthy Systems ](https://trustworthy.systems/projects/seL4/ ).
2018-02-21 08:54:32 +08:00
2018-05-25 15:09:45 +08:00
### Youtube
2018-02-22 12:19:08 +08:00
2018-05-28 12:08:14 +08:00
- [seL4 is free: What does this mean for you? (2015) ](https://www.youtube.com/watch?v=lRndE7rSXiI ).
- [From L3 to seL4: What have we learned in 20 years of L4 microkernels? (2014) ](https://www.youtube.com/watch?v=RdoaFc5-1Rk ).
2018-02-21 08:54:32 +08:00
2018-05-28 12:08:14 +08:00
## Get Help
### Mailing lists
2020-05-08 17:00:45 +08:00
If you have ideas or questions, please use the developer mailing list:
2022-03-23 05:58:21 +08:00
- [seL4 Devel ](https://lists.sel4.systems/postorius/lists/devel.sel4.systems/ ).
2018-05-28 12:08:14 +08:00
2020-05-08 17:00:45 +08:00
There is also a low-bandwidth list for general announcements:
2022-03-23 05:58:21 +08:00
- [seL4 Announce ](https://lists.sel4.systems/postorius/lists/announce.sel4.systems/ ).