Translation(s): none

Juno is ARM's early development platform for armv8. It is expensive and thus not widely used outside companies that needed early armv8 hardware to get development done. It is a publicly available machine though, so documenting its wrinkles here is worthwhile.

Juno is intended as a hardware as well as software development platform and thus has way more knobs than anyone needs, and a convoluted boot procedure. This page just gives the minimum info needed to install Debian. Comprehensive documentation is available from ARM's website.

Hardware

There are three Juno hardware variants: r0, r1, r2.

r0 does not have working PCI so can only be used with a USB drive and the front Ethernet socket. PCI works on r1 and r2 - just the CPU differs. Essentially 'everything' works on that hardware. So it is important to know if you have an r0 or not when installing.

cat /proc/device-tree/model will tell you 'r0', 'r1' or 'r2'.

Status

Installing with stretch-DI-alpha8 fails because the kernel just hangs early in the boot.

Instaling with Jessie works, but by default there is no console output so you have to edit the command line, as described below.

Installation

Preparation

You need:

Refer to above 'Using Linaro's deliverables on Juno' doc if your juno has something else installed (Android, ?OpenEmbedded), or if the UEFI it has is too old to work well. These instructions were tested with the linaro 16.10 juno firmware/UEFI release, and updating is actually very easy, so is worth doing anyway if you have any dificulties.

Good documentation on updating juno firmware to install UEFI is here: https://community.arm.com/docs/DOC-10804

/!\ Note that those instructions do not get you a DTB - zero-byte files are installed. Your machine will not boot linux without a suitable DTB. Follow the instructions in https://community.arm.com/docs/DOC-11527#jive_content_id_12_Update_the_Device_Tree_files to get (juno*.dtb) and install them in your firmware image.

The recommended install is from USB stick (and is described below), but installing from CDROM or over the network should also be possible (not tested).

Juno r0/r1/r2 variations

Because of the broken PCI on Juno r0 you need to take care to use the right physical ethernet socket and type of storage.

Ethernet

Storage

On r1 and r2 you can use a SATA drive (recommended for speed, but the drive has no place to live in the box so just hangs about) or USB storage (much slower).

On r0 you need to use USB-based bulk storage. Either flash or an external drive.

Installing Stretch

Prepare your USB stick with:

wget http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/arm64/iso-cd/debian-testing-arm64-netinst.iso

use lsblk or dmesg to find out what device your USB stick is. Lets say it's /dev/sdd (ignore partitions - we are copying this to the bare device - the file format contains partitioning info. Your USB stick needs to be at least 400MB for netinst image, at least 700MB for standard image.)

sudo dd if=debian-testing-arm64-netinst.iso of=/dev/sdd bs=4M oflag=sync status=noxfer

(The sync bit means that everything is written as soon as the command returns, so you don't need to wait before yanking the stick)

If everything is just right it will find the efi partition and boot into the installer. This didn't work for me. You may, like me, end up at the UEFI prompt:

Shell >

The console should be showing a list of filesystems:

UEFI Interactive Shell v2.1
EDK II
UEFI v2.60 (EDK II, 0x00010000)
Mapping table
      FS3: Alias(s):F4:;BLK3:
          VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)
      FS1: Alias(s):F1:
          MemoryMapped(0xB,0xE0000000,0xE00EFFFF)
      FS0: Alias(s):F0:
          Fv(B73FE497-B92E-416E-8326-45AD0D270092)
      FS2: Alias(s):CD2a0a0a:;BLK1:
          PciRoot(0x1)/Pci(0x1,0x0)/USB(0x0,0x0)/USB(0x0,0x0)/CDROM(0x0)
     BLK2: Alias(s):
          VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)
     BLK0: Alias(s):
          PciRoot(0x1)/Pci(0x1,0x0)/USB(0x0,0x0)/USB(0x0,0x0)

Look for 'USB' and 'CDROM'. So in this case FS2 is probably our debian-installer USB stick.

Shell> FS2:
FS2:\> dir

If you see 'efi' then you are in the right place

FS2:\> cd efi
FS2:\efi\> cd boot
FS2:\efi\boot\> bootaa64.efi

(You have tab-completion, and can actually type efi\<TAB>\<TAB><RETURN> to run it) This will run Grub and show you the installer menu.

Select 'Install' and hit <RETURN>

The kernel should boot and drop you into the installer. If you see nothing but a couple of lines of output check that you have a DTB file available (see 'Preparation' above).

Also check the 'Ethernet' section above for correctly connecting the cable according to model.

Installing jessie

Prepare your USB stick with:

wget http://cdimage.debian.org/debian-cd/8.6.0/arm64/iso-cd/debian-8.6.0-arm64-netinst.iso

use lsblk or dmesg to find out what device your USB stick is. Lets say it's /dev/sdd (ignore partitions - we are copying this to the bare device - the file format contains partitioning info. Your USB stick needs to be at least 400MB for netinst image, at least 700MB for standard image.)

sudo dd if=debian-8.6.0-arm64-netinst.iso of=/dev/sdd bs=4M oflag=sync status=noxfer

(The sync bit means that everything is written as soon as the command returns, so you don't need to wait before yanking the stick)

If everything is just right it will find the efi partition and boot into the installer. This didn't work for me. You may, like me, end up at the UEFI prompt:

Shell >

The console should be showing a list of filesystems:

UEFI Interactive Shell v2.1
EDK II
UEFI v2.60 (EDK II, 0x00010000)
Mapping table
      FS3: Alias(s):F4:;BLK3:
          VenHw(E7223039-5836-41E1-B542-D7EC736C5E59)
      FS1: Alias(s):F1:
          MemoryMapped(0xB,0xE0000000,0xE00EFFFF)
      FS0: Alias(s):F0:
          Fv(B73FE497-B92E-416E-8326-45AD0D270092)
      FS2: Alias(s):CD2a0a0a:;BLK1:
          PciRoot(0x1)/Pci(0x1,0x0)/USB(0x0,0x0)/USB(0x0,0x0)/CDROM(0x0)
     BLK2: Alias(s):
          VenHw(02118005-9DA7-443A-92D5-781F022AEDBB)
     BLK0: Alias(s):
          PciRoot(0x1)/Pci(0x1,0x0)/USB(0x0,0x0)/USB(0x0,0x0)

Look for 'USB' and 'CDROM'. So in this case FS2 is probably our debian-installer USB stick.

Shell> FS2:
FS2:\> dir

If you see 'efi' then you are in the right place

FS2:\> cd efi
FS2:\efi\> cd boot
FS2:\efi\boot\> bootaa64.efi

(You have tab-completion, and can actually type efi\boot\<TAB><RETURN> to run it) This will run Grub and show you the installer menu.

However, you won't see console output after the first few lines unless you change the console setting:

With the 'Install' option selected hit 'e' to edit: Change the linux line from: /linux install.a64/vmlinuz --- quiet to: linux /install.a64/vmlinuz --- console=ttyAMA0,115200

Hit <ctrl>-x to boot using that option.

Select 'Install' and hit return

The kernel should boot and drop you into the installer. If you see nothing but a couple of lines of output check that you have a DTB file available (see 'Preparation' above).

Also check the 'Ethernet' section above for correctly connecting the cable according to model.

---

DebianOn is an effort to document how to install, configure and use Debian on some specific hardware. Therefore potential buyers would know if that hardware is supported and owners would know how get the best out of that hardware.

The purpose is not to duplicate the Debian Official Documentation, but to document how to install Debian on some specific hardware.

Models covered
Juno Development Board

Sub-models (r0) options :
- Video Mali

Overall Status

Core Components

[ATTACH]

Boot Standard Kernel:

[?]

LAN network card:

[?]

Detect CD/DVD:

[?]

Detect hard drives:

[?]

Extra Features

CPU Frequency Scaling

[?]

Hibernation

[?]

Sleep / Suspend

[?]

Xorg

[?]

- OpenGL

[?]

- Resize-and-Rotate(randr)

[?]

Switch to External Screen

[?]

Mouse

- Built-in (Trackpoint)

[?]

- Built-in (Touchpad)

[?]

Modem

[?]

Wireless/Wifi

[?]

Keyboard's Hotkeys

[?]

Legend :
{OK} = OK ; {X} Unsupported(No Driver) ; /!\ = Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
{i} = Configuration Required; X-( = Only works with a non-free driver and or firmware

Important Note

Configuration

Display

Audio

Mouse

Power Management

WiFi

Modem


System Summary

lspci

lsusb

lsusb -v | grep -E '\<(Bus|iProduct|bDeviceClass|bDeviceProtocol)' 2>/dev/null

USB Host controllers entries (without OHCI, UHCI, EHCI) are removed too.

Resources

Attachments

Some configuration files and sample outputs.

Credits