Introduction

The art of simplicity is a puzzle of complexity.Douglas Horton

Design Philosophy

Platform firmware has two primary responsibilities:

  • Initializing the hardware
  • Booting an Operating System

Designing platform firmware can be monolithic combining hardware initialization and boot functionality, OR it can take a modular and staged boot flow. The choice of the design depends on system requirements.

Separating initialization and boot logic is desirable for certain device classes, for example, IoT devices, as it provides the flexibility for unique use cases. A good example is the choice of operating system used in IoT devices - it is typical to deploy OS having unique boot requirements. The OS may vary from standards based like Windows using UEFI to embedded OS or RTOS using OS specific boot protocols.

Slim Bootloader (SBL) is designed with the modular approach by providing hardware initialization, then launching a payload to boot OS.

Features

Slim Bootloader is designed to be:

  • Small
  • Fast
  • Secure
  • Extensible
  • Configurable

In addition, it provides built-in features:

  • Multiple OS Support
  • Firmware Update

Frequently Asked Questions

What is Slim Bootloader (SBL)?
Slim Bootloader is an open-source boot firmware, built from the ground up to be small, secure and optimized running on Intel x86 architecture.
What platforms are supported by SBL?
Initially, SBL supports the following Apollo Lake platform: UP2 board, Intel Leaf Hill CRBs and QEMU virtual machine. More upcoming platforms will be supported in the future.
What license does SBL use?
SBL is released under BSD 2-Clause “Simplified” License.
Who are the maintainers of SBL?
Intel maintains open source code on GitHub.
What are options to debug SBL?
SBL supports source level debugging using UDK debug tool (via UART). Depending on the board configuration, developers can also debug SBL with Intel trace hub, secure debug token (if enabled) or memory buffers.
Is Embedded Controller (EC) supported?
No. Different boards may have differenct EC or SuperIO. Developers need implement the code for the target board.
Does it support RTOS?
SBL features loading x86 ELF executables in its payload stage. We have verified loading Open Source Zephyr RTOS (See Booting Zephyr).
What tool chains are supported to compile SBL?

SBL supports Microsoft Visual Studio 2015 and GNU GCC toolchains (gcc 5 or newer). Additional tools, include Python (2.7), nasm, and IASL are required to build SBL.

The current version of BaseTools is UDK2018 from EDKII open source project.

Does SBL support verified boot and measured boot?
Yes. SBL supports both from software point of view. In order to enable hardware root-of-trust in SBL, the Intel stitching software kit is required. For measured boot, SBL supports TPM 2.0.
Does SBL support SMM?
SBL does not support SMM. If SMM is required, a new SBL payload can be created to support it.
Does SBL support Over-the-Air (OTA) firmware update?
SBL has a built-in firmware update payload that features power-fail safe mechanism. OS specific OTA support can be implemented based on the provided firmware update interface in SBL.
Does SBL support splash screen?
Yes. Custom splash screen can be enabled or disabled (for boot performance) via SBL build options.
Does SBL support legacy boot?
SBL currently does not support option ROM or CSM mode.
Do you have a porting guide for new boards?
Please visit and search Developer’s Guide section first. We plan to post step-by-step porting guides with more details.
I need help…
Subscribe to our Mailing List or search Archives first.
It doesn’t work for me…
Email us via our mailing list or direclty submit an issue on GitHub.
I want to contribute…
You are welcome to contribute our project in different ways including code, documentation or ideas. We’d be happy to review your contributions!