This document outlines how to install Debian 9.4 Stretch on the Juno board. This was tested with
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.
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
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:
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'.
`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
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
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.
`/media/JUNO/'
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