You are here: Documentation » Compiling Linux


This page presents instructions on how to build the following Linux items:
  • U-Boot
  • Linux Kernel
  • Linux Root Filesystem

GSRD tagging information

For all the tags that is released with GSRD, please refer to the page GSRD tagging information

Host Setup for Angstrom

The Altera Linux Angstrom distribution were tested to build correctly with Ubuntu 14.04. It may also work with other distributions. For a list of distributions against which Angstrom distribution was tested see Altera Linux Angstrom distribution is officially built and tested using Ubuntu 14.04.

This section presents the packages that need to be installed on the host PC to allow the Angstrom distribution to be built. Since each machine may have been installed in a different way, the packages listed here are not an exhaustive list. Add packages as necessary if you encounter issues.

Ubuntu 14.04

These are the required packages that need to be installed:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install phablet-tools sed wget cvs subversion git-core coreutils unzip texi2html  texinfo libsdl1.2-dev docbook-utils gawk python-pysqlite2 diffstat help2man  make gcc build-essential g++ desktop-file-utils chrpath libgl1-mesa-dev  libglu1-mesa-dev mercurial autoconf automake groff libtool xterm lib32z1

If the host machine runs the 64bit version of the OS, then the following additional packages need to be installed:
$ sudo apt-get install ia32-libs lib32stdc++6

On Ubuntu 14.04 you will also need to make /bin/sh point to bash instead of dash. You can accomplish this by running:
sudo dpkg-reconfigure dash

and selecting "No". (Alternatively, you can run:
sudo ln -sf bash /bin/sh

however this is not recommended, as it may get undone by Ubuntu software updates.)

Build U-Boot, Kernel and Rootfs Using Angstrom 2015.12 distribution

The U-Boot, Kernel and Rootfs can be built using the Angstrom recipes that are provided as a Git tree.

This section presents how to clone the Yocto Project git tree and also how to build using it.

Note that only the Yocto Project build system and the recipes are cloned, all the dependencies are downloaded from Internet during the build process.

The commands for cloning the Yocto Project git trees and building Yocto Project are:
$ cd ~
$ mkdir angstrom-build
$ cd angstrom-build
$ wget
$ wget
$ chmod 777 repo
$ export PATH=$PATH:~/angstrom-build
$ repo init -u git:// -b angstrom-v2015.12-yocto2.0
$ mkdir -p .repo/local_manifests
$ mv altera.xml .repo/local_manifests/
$ repo sync
$ MACHINE=arria10 . ./setup-environment # Replace machine name (eg. MACHINE=cyclone5) with the target family, options are: cyclone5, arria5, arria10
$ sed -i '/meta-altera/a \ \ ${TOPDIR}\/sources\/meta-altera-refdes \\' conf/bblayers.conf # This is to add the meta-altera-refdes layer to conf/bblayers.conf
$ sed -i '/meta-atmel/d' conf/bblayers.conf # This is currently unavailable in  angstrom-v2015.12-yocto2.0
$ export KERNEL_PROVIDER=linux-altera-ltsi
$ export KERNEL_TAG=refs/tags/ACDS17.1_REL_GSRD_PR # Check above for newer release tags and replace it with the version you are building with
$ export UBOOT_TAG=refs/tags/ACDS17.1_REL_GSRD_PR # Check above for newer release tags and replace it with the version you are building with
$ export KBRANCH=socfpga-4.1.33-ltsi # Check above for release branch to use
# Please add virtual/bootloader if you need the bootloader to be built as well (for Cyclone V and Arria V)
# To build the image with PCIe applications, replace xvfb-console-image with pcie-console-image
# To build a small image for NAND/QSPI boot, replace xvfb-console-image with console-image-minimal
# To build a image without X Frame Buffer and frame buffer tools support replace xvfb-console-image with gsrd-console-image (support for older releases)
$ bitbake xvfb-console-image 

Note: Releases older than 17.0 should be using gsrd-console-image as there is no support for X frame buffer applications

Note: If your computer connects to the Internet using a proxy, you may need to use this command to tell the Git utility about the proxy:
$ git config --global http.proxy <proxy_name>

Note: You may compile the standard Angstrom filesystem instead of the GSRD, by replacing bitbake xvfb-console-image with bitbake console-image in the above commands.

The first time you build the Yocto Source Package it may take up to several hours depending on your host machine.

Once finished, all images should be generated in ~/angstrom-build/deploy/glibc/images/<family_name>/. Some of the most important files created are:
File Description
u-boot-* U-Boot ELF file
u-boot-*.bin U-Boot binary file
u-boot-*.img U-Boot image
vmlinux Kernel ELF file
zImage Compressed kernel image
xvfb-console-image-*.cpio GSRD Root Filesystem in cpio archive format
xvfb-console-image-*.ext3 GSRD Root Filesystem as ext3 image
xvfb-console-image-*.tar.gz GSRD Root Filesystem in tar gzip archive format
xvfb-console-image-*.jffs2 GSRD Root Filesystem in jffs2 format
console-image-*.cpio Standard Angstrom Root Filesystem in cpio archive format
console-image-*.ext3 Standard Angstrom Root Filesystem as ext3 image
console-image-*.tar.gz Standard Angstrom Root Filesystem in tar gzip archive format
console-image-*.jffs2 GSRD Root Filesystem in jffs2 format
The above files are actually links to the actual build resulted files. Some build files have a timestamp attached to its name and each time it it rebuilt, Yocto updates the link to point to the latest file.

Targetting Arria V / Cyclone V

In order to build the target against Arria V or Cyclone V, just replace arria10 with arria5 or cyclone5 in the above commands. You will need to have the bootloader built from Angstrom as well, so you will need to add "virtual/bootloader" (without the quotes) to the bitbake command.

Building Kernel and U-Boot Separately From Git Trees

U-boot and Linux kernel can also be built directly from the git trees at This section presents instructions for cloning the git trees and building U-boot, Linux kernel and Yocto.

Component Git address Tag
Linux linux-socfpga.git ACDS17.0_REL_GSRD_PR
Linux linux-socfpga.git ACDS17.1_REL_GSRD_PR
U-Boot (CV/AV) u-boot-socfpga.git ACDS17.0_REL_GSRD_PR
U-Boot (CV/AV) u-boot-socfpga.git ACDS17.1_REL_GSRD_PR

Build Toolchain

In case the U-boot or Linux kernel git trees are directly used, the build toolchain has to be manually downloaded. This section contains the instructions on how to download and setup the toolchain for this case.

Note that the build toolchain is provided with the Poky Yocto recipes. So when the Yocto Project git tree is used, the recipes will download the build chain automatically.

The steps necessary to download and setup the build toolchain are:
$ cd ~
$ wget
$ tar xjf gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux.tar.bz2
$ export CROSS_COMPILE=~/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-

Building U-Boot

This section presents instructions on how to clone the U-boot git tree and compile U-boot. It assumes that you have manually downloaded the build toolchain.
$ cd ~
$ git clone
$ cd u-boot-socfpga
$ git checkout -b test_branch TAG # Please refer build tag from reference page
$ export CROSS_COMPILE=~/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-
$ make mrproper
$ make socfpga_cyclone5_config # Replace with socfpga_arria10_config or socfpga_arria5_config if you are building for different target platform
$ make

  • replace test_branch with the name of the branch you want to use locally.
  • replace make socfpga_cyclone5_config with make socfpga_arria5_config to compile the Arria V version, and make socfpga_arria10_config to compile Arria 10 bootloader
Some of the files that are created:

File Description
u-boot U-boot ELF file
u-boot.bin U-boot binary file
u-boot.img U-boot image file

Building Linux Kernel

This section presents instructions on how to clone the Linux kernel git tree and compile the Linux kernel. It assumes that you have manually downloaded the build toolchain.
$ cd ~
$ git clone
$ cd linux-socfpga
$ git checkout -b test_branch TAG # Refer to the tag in the above 
$ export CROSS_COMPILE=~/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-
$ export ARCH=arm 
$ make socfpga_defconfig
$ make zImage

You can also compile the dtb for the kernel by following the above instruction and change the make target (last line) to the DTB target, for example, for Arria 10

$ make socfpga_arria10_socdk_sdmmc.dtb

You can find all the supported dts from {linux-socfpga}/arch/arm/boot/dts/

Note: replace test_branchwith the name of the branch you want to use locally.

Some of the files that are created:
File Description
vmlinux Linux Kernel ELF file
arch/arm/boot/zImage Linux Kernel image

Give us your feedback

© 1999-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors. Privacy.