I tre port ARM
Nel tempo l'architettura ARM si è evoluta e i moderni processori ARM
forniscono funzionalità che non erano presenti nei modelli precedenti.
&debian; fornisce tre port su ARM per fornire il miglior supporto per
una gamma molto ampia di macchine:
&debian;/armel è adatto ai processori ARM più vecchi che non dispongono
di una FPU (floating point unit).
&debian;/armhf funziona solo sui processori ARM più recenti conformi
all'architettura ARMv7 e con l'unità di calcolo in virgola mobile
VFPv3. Fa un ampio uso delle funzioni e dei miglioramenti delle
prestazioni disponibili su questi modelli.
&debian;/arm64 funziona sui processori ARM a 64-bit conformi almeno
all'architettura ARMv8.
Tecnicamente, tutte le CPU ARM attualmente disponibili possono
funzionare sia in modalità big-endian che in modalità little-endian,
in pratica la maggior parte dei sistemi attualmente disponibili
utilizzano la modalità little-endian. &debian;/arm64, &debian;/armhf
e &debian;/armel supportano solo sistemi little-endian.
Variazioni nelle CPU ARM e difficoltà di supporto
I sistemi ARM sono molto più eterogenei rispetto a quelli
dell'architettura dei PC basati su i386/amd64, quindi il supporto può
essere più complicato.
L'architettura ARM è principalmente usata per i SoC
(system-on-chip
). I SoC sono progettati da diverse
aziende e usano una gran varietà di componenti hardware anche per le
funzionalità di base necessarie all'avvio del sistema. Con il passare
del tempo le interfacce del firmware sono state via via standardizzate
ma sui sistemi più vecchi le intefacce firmware per l'avvio potrebbero
creare parecchi grattacapi perché il kernel Linux deve prendersi in
carico molti problemi di basso livello e di tutti quegli aspetti
specifici del sistema che nel mondo dei PC sarebbero gestiti dal BIOS
della scheda madre.
Agli albori il supporto per ARM nel kernel Linux proprio per la grande
varietà di hardware richiedeva di avere un kernel specifico per ciascun
sistema ARM ma ciò è in contrasto con il kernel
uno-va-bene-per-tutti
per i sistemi PC. Infatti tale
approccio non è scalabile su un gran numero di dispositivi e quindi
iniziò il lavoro che ha portato alla realizzazione di un unico kernel
ARM che può funzionare su molti sistemi ARM. Adesso i sistemi ARM
più recenti dispongono di un kernel realizzato con l'approccio
multipiattaforma ma per molti dei sistemi più vecchi è ancora necessario
utilizzare un kernel specifico. Per questo motivo la distribuzione
&debian; standard può essere installata solo su un numero ristretto di
vecchi sistemi ARM più vecchi oltre che sui sistemi più recenti
supportati con il kernel ARM multipiattaforma (chiamati
armmp
) in &debian;/armhf.
L'architettura ARM è principalmente usata per i SoC
(system-on-chip
). I SoC sono progettati da diverse
aziende e usano una gran varietà di componenti hardware anche per le
funzionalità di base necessarie all'avvio del sistema. Nelle vecchie
versioni dell'architettura ARM era possibile vedere differenze enormi
tra un SoC e l'altro ma con ARMv8 (arm64) è molto più standardizzato
e quindi è più facile da supportare per il kernel Linux.
Tipicamente le versioni server dell'hardware ARMv8 utilizzano gli
standard UEFI (Unified Extensible Firmware Interface) e ACPI (Advanced
Configuration Power Interface). Questi forniscono due modi comuni e
indipendenti dal dispositivo per avviare il sistema e configurare
l'hardware del computer. Inoltre sono anche in comune con il mondo dei
PC x86.
Piattaforme supportate da Debian/arm64
L'hardware Arm64/AArch64/ARMv8 è diventato disponibile quando il ciclo
di sviluppo di &debian; &releasename-cap; era molto avanti e quindi
non c'è stato tempo a disposizione per inserire il supporto per di
queste piattaforme nel kernel di questo rilascio, che è il requisito
fondamentale per usare il &d-i; su qualsiasi piattaforma. È confermato
che le seguenti piattaforme sono supportate in questo rilascio
&debian;/arm64. Esiste un unico kernel che supporta tutte le piattaforme
elencate.
Applied Micro (APM) Mustang/X-Gene
L'APM Mustang è stato il primo sistema ARMv8 gestibile con Linux a
essere disponibile. Usa il SoC X-gene, il quale da allora è stato
usato anche su altre macchine. È una CPU con 8 core, scheda ethernet,
USB e seriale. Nel fattore di forma comune assomiglia a un pc desktop
ma in futuro sono attesi altri formati. La maggior parte dell'hardware
è supportato dal kernel, ma in questo momento nel kernel di
&releasename-cap; manca il supporto per USB.
ARM Juno Development Platform
Juno è una scheda di sviluppo con una CPU (2xA57, 4xA53) ARMv8-A 800Mhz
con 6 core, grafica Mali (T624), 8GB DDR3 RAM, Ethernet, USB e seriale.
È progettata per la realiazzione e test di sistema di potenza e quindi
non è né piccola né economica ma è una delle prime schede disponibili.
Tutto l'hardware a bordo è supportato nel kernel e in &releasename-cap;.
Quando si utilizza &d-i; su sistemi non-UEFI, potrebbe essere
necessario rendere il sistema avviabile al termine dell'installazione,
eseguendo i comandi necessari da una shell avviata all'interno del
&d-i;. flash-kernel sa come impostare l'avvio di un sistema X-Gene
con U-Boot.
Altre piattaforme
Il supporto multipiattaforma nel kernel Linux arm64 permette di usare
il &d-i; anche sui sistemi non esplicitamente elencati in precedenza,
l'importante e che il kernel del &d-i; supporti i componenti del sistema
e che sia disponibile un file con il device-tree. In questo caso
l'installatore è in grado di fornire un'installazione funzionante e, se
viene usato UEFI, è in grado di rendere il sistema avviabile. Se non è
usato UEFI probabilmente sono necessarie altre configurazioni da fare
manualmente per rendere il sistema avviabile.
Piattaforme supportate da Debian/armhf
I seguenti sistemi funzionano con &debian;/armhf usando il kernel
multipiattaforma (armmp):
Freescale MX53 Quick Start Board (MX53 LOCO Board)
La IMX53QSB è una scheda di sviluppo basata sul SoC i.MX53.
Versatile Express
Versatile Express è una serie di schede per la prototipazione che
consistono in una scheda madre che può essere equipaggiata con varie
CPU su scheda figlia.
Alcune schede di sviluppo e sistemi embedded basati su Allwinner sunXi
Parecchie schede per sviluppo e sistemi embedded basati sui SoC Allwinner
A10 (nome in codice dell'architettura sun4i
), A10s/A13
(nome in codice dell'architettura sun5i
), A20 (nome in
codice dell'architettura sun7i
), A31/A31s (nome in codice
dell'architettura sun6i
) e A23/A33 (parte della famiglia
sun8i
) sono supportate dal kernel armmp.
Attualmente l'installazione è pienamente supportata (compresa la
preparazione della scheda SD con l'installatore) sui seguenti sistemi
basati sul sunXi:
Cubietech Cubieboard 1 + 2 / Cubietruck
LeMaker Banana Pi e Banana Pro
LinkSprite pcDuino e pcDuino3
Olimex A10-Olinuxino-LIME / A20-Olinuxino-LIME /
A20-Olinuxino-LIME2 / A20-Olinuxino Micro / A20-SOM-EVB
Xunlong OrangePi Plus
Il supporto per i dispositivi Allwinner basati su sunXi è limitato ai
driver e alle informazioni del device-tree presenti nel kernel Linux.
I kernel specifici preparati dai produttori (come i kernel Allwinner
SDK) e il kernel linux-sunxi.org 3.4 derivato da android non sono
supportati da &debian;.
Sui SoC Allwinner A10, A10s/A13, A20, A23/A33 e A31/A31s il kernel Linux
supporta la console seriale, ethernet, SATA, USB e MMC/SD; il livello di
supporto per il display locale (HDMI/VGA/LCD) e per l'audio variano da
sistema a sistema. La maggior parte dei sistemi non dispone di driver
nativi per la parte grafica e utilizza l'infrastruttura
simplefb
per la quale il bootloader inizializza il
display e il kernel semplicemente utilizza il framebuffer già
inizializzato. Solitamente ciò funziona ragionevolmente bene, tuttavia
in alcuni casi comporta alcune limitazioni (non è possibile cambiare
la risoluzione del display al volo e non è possibile gestire il
risparmio energetico).
Sui sistemi sunXi esistono due tipologie di memorie flash da utilizzare
come memorie di massa: memoria flash NAND e eMMC. La maggior parte
delle schede basate su sunXi più vecchie utilizzano flash NAND, il
supporto non è presente nel kernel e di conseguenza nemmeno in Debian.
I sistemi più recenti usano flash eMMC al posto di quelle NAND. Un chip
flash eMMC appare come una scheda SD veloce, non removibile ed è
supportato esattamente come una normale scheda SD.
L'installatore può funzionare in modo basilare anche su sistemi sunXi
non elencati in precedenza, tuttavia su tali sistemi non sono stati
fatti test perché il progetto &debian; non dispone di questo tipo di
hardware. Per tali sistemi nobo sono state preparate nessuna immagine
con l'installatore per schede SD. Le schede di sviluppo con supporto
limitato comprendono:
Olimex A10s-Olinuxino Micro / A13-Olinuxino /
A13-Olinuxino Micro
Sinovoip BPI-M2 (A31s-based)
Xunlong Orange Pi (A20-based) / Orange Pi Mini (A20-based)
In aggiunta ai SoC e dispositivi elencati in precedenza l'installatore
dispone di un supporto limitato per il SoC Allwinner H3 e per alcune
schede basate su esso. Il lavoro per inserire il supporto per H3 nel
kernel è in corso al momento in cui Debian 9 è stata congelata per il
rilascio, quindi sui sistemi H3 l'installatore gestisce solo la console
seriale, MMC/SD e il controller USB. Non esistono ancora driver per la
porta ethernet a bordo e l'unico modo per collegare l'H3 a una rete è
attraverso un adattatore USB ethernet o tramite un dongle USB wifi. I
sistemi basati su H3 per i quali è disponibile questo limitatissimo
supporto sono:
FriendlyARM NanoPi NEO
Xunlong Orange Pi Lite / Orange Pi One / Orange Pi PC /
Orange Pi PC Plus / Orange Pi Plus / Orange Pi Plus 2E /
Orange Pi 2
NVIDIA Jetson TK1
La NVIDIA Jetson TK1 è una scheda per sviluppo basata sul chip Tegra
K1 (conosciuto anche come Tegra 124). Il Tegra 124 dispone di una CPU
ARM con quattro core a 32 bit Cortex-A15 e una GPU Kepler (GK20A)
con 192 CUDA core. Potrebbero funzionare anche altri sistemi basati su
Tegra 124.
Seagate Personal Cloud e Seagate NAS
I dispositivi Seagate Personal Cloud e Seagate NAS sono basati sulla
piattaforma Marvell Armada 370. Debian funzona su Personal Cloud
(SRN21C), Personal Cloud 2-Bay (SRN22C), Seagate NAS 2-Bay (SRPD20)
e Seagate NAS 4-Bay (SRPD40).
SolidRun Cubox-i2eX / Cubox-i4Pro
La serie Cubox-i è un insieme di piccoli sistemi a forma di cubo basati
su SoC Freescale della famiglia i.MX6. Il supporto per le serie Cubox-i
è limitato ai driver e alle informazioni del device-tree presenti nel
kernel Linux; il kernel Freescale 3.0 per Cubox-i non è supportato da
&debian;. I driver disponibili comprendono console, ethernet, USB,
MMC/SD-card e il video tramite HDMI (console e X11). Oltre a tutto ciò
è supportata anche la porta eSATA presente su Cubox-i4Pro.
Wandboard Quad
Wandboard Quad è una scheda per lo sviluppo basata sul Soc Freescale
i.MX6 Quad. Il supporto per tale scheda è limitato ai driver e alle
informazioni sul device-tree presenti nel kernel Linux; i kernel
delle serie 3.0 e 3.10 disponibili da wandboard.org specifici per la
scheda non sono supportati da &debian;. Il kernel Linux contiene i
driver per la console seriale, il video tramite HDMI (console e X11),
ethernet, USB, MMC/SD e SATA. Il supporto per i dispositivi audio
montati sulla scheda (analogico, S/PDIF, HDMI-Audio) e per il modulo
WLAN/Bluetooth non è disponibile in &debian; 8.
Solitamente il supporto ARM multipiattaforma del kernel Linux permette
di usare il &d-i; anche su sistemi armhf non esplicitamente elencati in
precedenza, a condizione che il kernel usato dal &d-i; abbia il supporto
per i componenti del sistema e che sia disponibile un file con il
device-tree. In questo caso l'installatore può solitamente fornire
un'installazione funzionante ma potrebbe essere in grado di impostare
l'avvio automatico del sistema. Per questa operazione, in molti casi,
sono necessari informazioni specifiche sul dispositivo.
Quando si usa &d-i; su questi sistemi potrebbe essere necessario,
al termine dell'installazione, rendere il sistema avviabile
manualmente, per esempio, eseguendo gli opportuni comandi dalla
shell disponibile all'interno del &d-i;.
Piattaforme non più supportate da Debian/armhf
EfikaMX
La piattaforma EfikaMX (Genesi Efika Smartbook e Genesi EfikaMX nettop) era
supportata in &debian; 7 grazie a un kernel specifico per questa piattaforma,
da &debian; 8 in poi non è più supportata. Il codice usato in precedenza per
creare il kernel specifico per la piattaforma è stato rimosso dal kernel Linux
nel 2012 e quindi non è possibile creare nuove versioni.
L'uso del kernel multipiattaforma armmp sulla piattaforma EfikaMX potrebbe
richiedere il device-tree di supporto ma attualmente non è disponibile.
Piattaforme supportate da Debian/armel
Le seguenti piattaforme sono supportate da &debian;/armel; richiedono
dei kernel specifici per ciascuna piattaforma.
Kirkwood
Kirkwood è un sistema su un chip (SoC) della Marvell che integra una
CPU ARM, Ethernet, SATA, USB e altre funzionalità in un unico chip.
Attualmente sono supportati i seguenti dispositivi basati su Kirkwood:
Plug computer (SheevaPlug,
GuruPluge, DreamPlug e Seagate FreeAgent DockStar)
QNAP Turbo Station
(tutti i modelli TS-11x/TS-12x, HS-210, TS-21x/TS-22x e TS-41x/TS-42x)
I NAS LaCie (Network Space v2, Network Space Max v2, Internet
Space v2, d2 Network v2, 2Big Network v2 e 5Big Network v2)
OpenRD (OpenRD-Base, OpenRD-Client e OpenRD-Ultimate)
Orion5x
Orion è un sistema su un chip (SoC) della Marvell che
integra una CPU ARM, Ethernet, SATA, USB e altre funzionalità in un
unico chip. Sul mercato ci sono molti dispositivi NAS (Network Attached
Storage) basati sul chip Orion. Attualmente sono supportati questi
dispositivi basati sul chip Orion:
Buffalo Kurobox,
HP mv2120 e
QNAP TS-109, TS-209, TS-409,
TS-409U e varianti.
Versatile
La piattaforma Versatile è emulata da QEMU e quindi è un buon modo per
fare delle prove e per usare &debian; su ARM anche se non si dispone
di un vero hardware.
Piattaforme e dispositivi non più supportati da Debian/armel
IXP4xx
Il supporto per la piattaforma IXP4xx è stato rimosso da &debian; 9.
Il dispositivo Linksys NSLU2 è basato su IXP4xx e quindi non è più
supportato.
Orion5x
Il supporto per i dispositivi D-Link DNS-323 e Conceptronic CH3SNAS
è stato rimosso dalla piattaforma Orion5x da &debian; 9. La memoria
flash di questi dispositivi è troppo piccola per il kernel Linux. Altri
dispositivi Orion, come Buffalo Kurobox e HP mv2120, sono ancora
supportati.