PetaLinux is brand name used by Xilinx, it is based on Yocto and pretty decent mainstream kernel, what Petalinux adds is the HSI (Hardware Software Interface from Vivado) and special tools for boot image creation.

Online version of this manual and other related documents can be found at

Table of Content



Getting Linux working on Zynq is very simple, following steps are required

  1. Vivado/SDK/PetaLinux 2016.2 installed (important do not mix versions!)
  2. Create Vivado Project, configure PS, Export HDF
  3. Ceate new PetaLinux project
  4. Import HDF into project
  5. petalinux-build
  6. copy boot.bin and image.ub to SD Card (only 2 files no more)

This is generic how-to, everything is setup for your by the Vivado->PetaLinux flow. Note, the boot.bin generated by PetaLinux may not always work, in such case it is recommended to make the boot.bin with SDK-GUI or command line tools manually.

There is no need to install anything else, or to fetch anything from any github repos, etc.


PetaLinux Installation


Creating a Project from Vivado Project

Some reference designs contains a preconfigured PetaLinux project as template. This can be used instead of creating a new project described on step two.

  1. PetaLinux Working Environment (see UG1144)
  2. Create a New Project (see UG1144):
  3. Import Hardware Configuration (see UG1144):
  4. (optional) Configure your PetaLinux:
  5. Build System Image (see UG1144):
  6. Take u-boot.elf and image.ub from "<plnx-proj-root>/images/linux" and make BOOT.BIN.  It is recommended to create the FSBL with SDK/HSI tools.

Petalinux Configuration

Most settings can be changed with menu-config ($ petalinux-config).

There are 3 more files that user can edit, they are

system-top.dtsDevice tree changes are to be applied here<petalinux-project>/subsystems/linux/configs/device-tree
platform-top.hU-boot changes are to be applied here<petalinux-project>/subsystems/linux/configs/u-boot
fsbl_hooks.cFSBL changes are to be applied hereSDK/HSI FSBL-Template

There should be no reason to modify any other files by editing them (most of them are generated and would be overwritten).


  1. PetaLinux Tools Documentation - Reference Guide (UG1144)
  2. PetaLinux Tools Documentation - PetaLinux Command Line Reference (UG1157)