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:
Serial connection to juno. Use upper of two serial ports (actual 9-pin serial!) on the back. (So normally via a USB-serial adaptor appearing as /dev/ttyUSB0. Connect at 115200: e.g. screen /dev/ttyUSB0 115200)
- UEFI installed on the Juno for it to boot Debian-installer.
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
- There are 3 sockets on the board. One is connected only to the baseboard and is of little interest to us.
- If you have an r1 or r2 machine, plug your ethernet cable into the _rear panel_ socket closest to the reset buttons (this is on the PCI bus).
- If you have an r0 machine, plug your ethernet cable into the _front panel_ socket. This does _not_ use PCI, and uses the smc911 module, which is enabled in the Jessie installer so should 'just work'.
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)
- Put the USB stick in the back of machine (where the reset buttons are). The front panel USB ports don't work (and are not fitted on all hardware).
- Power up juno. (The white button does a power cycle)
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)
- Put the USB stick in the back of machine (where the reset buttons are). The front panel USB ports don't work (and are not fitted on all hardware).
- Power up juno.
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. If you need help to get Debian running on your hardware, please have a look at our user support channels where you may find specific channels (mailing list, IRC channel) dedicated to certain types of hardware. |
Models covered
Juno Development Board
Sub-models (r0) options : - Screen size (14", 15", or 15" wide)
- Video Mali
- Wireless card
- Disk and Ram size, optical device
- Other options, like fingerprint reader, bluetooth...
Overall Status
Core Components |
||
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 ;
Unsupported(No Driver) ;
= Error (Couldn't get it working); [?] Unknown, Not Test ; [-] Not-applicable
= Configuration Required;
= Only works with a non-free driver and or firmware
Important Note
Configuration
Display
- (not covered yet)
Audio
- (not covered yet)
Mouse
- (not covered yet)
Power Management
- (not covered yet)
WiFi
- (not covered yet)
Modem
- (not covered yet)
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.
Useful Links
Credits