Build Environment

SBL build is supported on both Windows and Linux environments

Building on Linux

Supported environment: Ubuntu Linux 18.04 LTS

Install the following software:

  • GCC 7.3 or above
  • Python 3.6 or above
  • NASM 2.12.02 or above
  • IASL 20160422
  • OpenSSL
  • Git

Build Tools Download - Ubuntu

Install required packages on Ubuntu:

$ sudo apt-get install -y build-essential iasl python uuid-dev nasm openssl gcc-multilib qemu git

Build using Dockers (Optional)

You can also consider Dockers containers to build SBL. See Miscellaneous: Dockers for more details.

Building on Windows

Supported environment: Microsoft Visual Studio 2015 or Microsoft Visual Studio 2017 Community

Install the exact versions (if specified) of the following tools to the designated directories:

  • Python 3.6 - C:\Python36
  • NASM 2.12.02 - C:\Nasm
  • IASL 20160422 - C:\ASL
  • OpenSSL - C:\openssl
  • Git (ex. GitBash)

SBL Keys Generation

Generate SBL keys and this is pre-requiste before SBL build:

Generate SBLKeys:

python $(SBL_ROOT)\BootloaderCorePkg\Tools\ -k $SBL_KEY_DIR

Set of private and public keys would be generated for specified key sizes:


Replace OS Test Public keys generated OS1_TestKey_Pub_RSA2048.pem/OS1_TestKey_Pub_RSA3072.pem keys with respective public keys used in signing OS Image

Build Tools Download - Windows

Python 3.6.x 64 bit version.


Add Python to the PATH

Python version 3.6.6 is the tested version.

IASL 20160422-64

unzip then copy files to C:\asl

Require: Install to C:\Asl

Nasm 2.12.02

Require: Install to C:\Nasm

Openssl (latest)

Download latest win64 version from

Require: Install to C:\Openssl


Set environment variable OPENSSL_PATH to openssl directory where openssl.exe is present. For example: set OPENSSL_PATH=C:\Openssl\bin

Git on Windows

Install Git or add its executable path in your PATH environment if already exists.

Here is GitBash as an example.

Download GitBash from

Below are RECOMMENDED options. For others, it’s okay to use default selected option.

Make sure “Git LFS (Large File Support)” is selected.

Make sure "Git LFS (Large File Support)" is selected

Make sure “Git from the command line…” is selected.

Make sure "Git from the command line..." is selected

Make sure “Checkout as-is, commit as-is” is selected.

Make sure "Checkout as-is, commit as-is" is selected