Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Arm Research
    • DesignStart
    • Education Hub
    • Graphics and Gaming
    • High Performance Computing
    • Innovation
    • Multimedia
    • Open Source Software and Platforms
    • Physical
    • Processors
    • Security
    • System
    • Software Tools
    • TrustZone for Armv8-M
    • 中文社区
  • Blog
    • Announcements
    • Artificial Intelligence
    • Automotive
    • Healthcare
    • HPC
    • Infrastructure
    • Innovation
    • Internet of Things
    • Machine Learning
    • Mobile
    • Smart Homes
    • Wearables
  • Forums
    • All developer forums
    • IP Product forums
    • Tool & Software forums
  • Support
    • Open a support case
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Open Source Software and Platforms
  • Developer Community
  • Tools and Software
  • Open Source Software and Platforms
  • Jump...
  • Cancel
Open Source Software and Platforms
Wiki Install Debian on Juno
  • Android blog
  • Forums
  • Help
  • Jump...
  • Cancel
  • New
  • About this wiki
  • Supported platforms
  • Obtaining support
  • +Arm Reference Platforms deliverables
  • -A-class platforms
    • -Juno
      • Run the Arm Platforms deliverables on Juno
      • Juno board revisions
      • +Troubleshooting your Juno
      • Bare metal development on Juno
      • Change which CPUs are released from reset on Juno
      • Install Debian on Juno
      • Energy monitoring on Juno
      • Ethernet on Juno
      • PCIe on Juno
      • Trusted Applications on Juno
      • Build Android from source for Juno
      • Build OpenEmbedded from source for Juno
      • Documentation error: Mali OpenGL in OpenEmbedded on Juno
    • +FVPs
    • +System Guidance for Infrastructure (SGI)
    • +System Guidance for Mobile (SGM)
    • Corstone-700
    • Corstone-500
    • Cortex-A5 DesignStart
    • +Neoverse N1 SDP
    • Neoverse Reference Designs
    • +Legacy platforms
    • Total Compute
  • +M-class platforms
  • +FPGA prototyping boards
  • +Open source software

Install Debian on Juno

This document outlines how to install Debian 9.4 Stretch on the Juno board. This was tested with

  • Juno r2 hardware
  • UEFI firmware from the 18.01 Community release
  • The Debian 9.4 netboot installer
  • Samsung SSD drive
  • nNVidia NVS300Graphics card and GNOME desktop (optional)

This should give you a working 'Distro' on Juno. However, note this is not an Arm platforms software deliverable and there's no official entitlement to support.

Prerequisite steps

1. Install the latest prebuilt EDK-II UEFI configuration on your Juno board by following the instructions here.

Note: No device tree files are provided (0 bytes size) with the UEFI build, however these are available in the installer's initrd.

2. Download the Debian netboot installer from here. In this example we use Debian Stretch:

wget http://debian.mirror.uk.sargasso.net/debian/dists/stretch/main/installer-arm64/current/images/netboot/mini.iso

Installing to a SATA drive (Juno r1 onwards)

Juno r1 onwards supports PCIe allowing for installation of Debian to a SATA drive. There are a number of ways to do this, but we've assumed the use of:

  • A USB stick - to burn the Debian installer image to
  • A SATA drive connected to the Juno's SATA0 port - to install Debian to
  • Use the Juno's rear Gigabit Ethernet port.

Note: The SATA drive should ideally be empty / freshly formatted to avoid any boot option confusion in UEFI.

Burn the downloaded installer to a USB stick, for example using `dd'.

sudo dd if=./mini.iso of=/dev/sdX bs=64M

Insert the USB stick into the Juno and power cycle the board; Grub should be launched automatically. If not drop to the EDK2 shell and launch it manually:

FS2:\efi\boot\bootaa64.efi

You should see the installer menu

Hit 'e' to edit the Linux command line and add the following terms, before pressing F10 to start the install. This avoids an issue with the install hanging when configuring Grub.

nr_cpus=1 maxcpus=1 nosmp=1


We aren't documenting or supporting the use of the Debian installer here, but the process is reasonably clear. The installer will prompt you to specify the network interface and target installation disk.

At the final stage of installation the installer will modify the boot record. When power cycling the Juno board, Grub will be launched automatically as before, but now the SATA drive will be recognised as a bootable device so Debian will be automatically booted too.

In order to ensure our installed Kernel has access to all available CPUs, we need to remove the kernel command line arguments inserted for the workaround above.

Halt the boot process in grub and remove the nr_cpus=1 maxcpus=1 nosmp=1 terms from the linux cmd line. You can confirm the change has been successful using:

cat /proc/cpuinfo


Installing to a USB drive

It's also possible to follow the steps above using a USB drive. This may be useful for those using Juno r0 (which does not support PCIe as required for a SATA drive), or for those who don't have a SATA drive available. If you're using juno r0 you will need to use the front 10/100 Ethernet port

Troubleshooting

If you need to reset your UEFI boot configuration (for example because your board is booting from the wrong drive or misbehaving in some other way) you can erase the associated area of NOR flash.

To do this:

$ touch /media/JUNO/SOFTWARE/blank.img
$ sync

Note: Replacing `/media/JUNO/' with the mount point of the Juno's MMC card.

Alternatively you can wipe everything from NOR flash, though you'll also need to reinstall the EDK2 UEFI deliverables afterwards:

Cmd> flash
Flash> eraseall
Flash> quit
  • Share
  • History
  • More
  • Cancel
Related
Recommended