SheevaPlug

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"

Introduzione

Questa guida illustra come installare Debian sullo SheevaPlug, primo modello. Per gli altri modelli, far riferimento alla documentazione indicata tra le fonti.

Un grazie sentito a Martin Michlmayr, sul cui lavoro si basa gran parte di questa guida.

Preparazione

Memoria SD

Se si intende effettuare l'installazione su SD, è consigliabile spianare completamente la memoria da un pc, eliminando qualsiasi partizione preesistente su di essa, ad esempio con

# gparted /dev/mmcblk0

Nonostante la tabella delle partizioni sia appena stata ripulita può succedere che i vecchi dati facciano andare in errore il bootloader al momento dell'avvio. È allora possibile azzerare veramente la tabella delle partizione con dd

# dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=10

Con questo comando si scrivono i primi 10MB della scheda con degli 0. Questo è più che abbondante per cancellare la tabella delle partizioni e l'inizio della prima partizione.

Server TFTP

Nella maggior parte dei casi non è strettamente indispensabile, ma è comodo.

Per averne uno a disposizione, da una macchina Debian è sufficiente installarlo con aptitude install tftpd-hpa. Se lasciamo invariate le impostazioni, la directory root del nostro server TFTP sarà /srv/tftp.

Prima accessione

Attualmente la macchina viene fornita con Ubuntu 9.04 preinstallato sulla memoria flash.

  1. Collegare il plug ad un router con DHCP attivato;
  2. alimentarlo;
  3. attendere qualche minuto;
  4. da un pc in rete accedere via SSH:
$ ssh root@IP_SHEEVAPLUG

nosoup4u è la password predefinita; come prima cosa è vivamente consigliabile modificarla tramite il comando passwd.

A questo punto occorre impostare correttamente l'ora sull'orologio hardware. Per far questo basta semplicemente impostare il fuso orario locale, fasare l'orologio di sistema e copiare l'ora sull'orologio hardware. Ecco come:

# dpkg-reconfigure tzdata
# date 0105215610
# hwclock -w

dove 0105215610 significa gennaio-5-21:56-2010 (ora locale).

Aggiornare U-Boot

Una volta impostata correttamente l'ora, occorre aggiornare U-Boot; sulla macchina probabilmente si troverà una vecchia versione modificata da Marvell per far funzionare U-Boot con il loro dispositivo, che però non permette l'installazione di Debian. Le versioni recenti di U-Boot includono già il lavoro fatto a suo tempo da Marvell, oltre a numerose migliorie e correzioni di bug che tornano utili al nostro scopo.

Per verificare quale versione è attualmente installata, bisogna accedere allo SheevaPlug tramite la sua interfaccia seriale disponibile sulla porta Mini-USB.

Verrà qui spiegato come farlo sfruttando un PC debianizzato. Per altri sistemi operativi, fare riferimento alla documentazione ufficiale presente sui siti citati in basso.

# aptitude install screen

Alimentare lo SheevaPlug e collegare allo SheevaPlug e al PC il cavetto Mini-USB fornito in dotazione. Da un terminale verificare che il dispositivo sia stato visto:

$ lsusb
Bus 001 Device 002: ID 9e88:9e8f  

Il kernel dovrebbe aver assegnato il dispositivo, nel caso non ci siano altri dispositivi USB attaccati al PC, al file /dev/ttyUSB0; è possibile verificarlo spulciando tra le ultime righe del file /var/log/syslog. A questo punto è possibile trasformare il monitor del nostro PC nel... monitor dello SheevaPlug:

# screen /dev/ttyUSB0 115200
  Nota
Altri programmi per terminale molto diffusi sono minicom o putty; quest'ultimo oltre a essere disponibile per molte piattaforme è molto facile da configurare, offrendo in un'unica finestra tutte le opzioni (periferica, velocità) da impostare, e potendo memorizzare con un solo clic il profilo selezionato: /dev/ttyUSB0 (tipicamente) e 115200.


Il terminale apparirà completamente vuoto, ma in realtà siamo già collegati allo SheevaPlug e sta già ricevendo tutti gli output a video provenienti da esso. Digitiamo quindi

root

seguito da <Invio> ed effettuiamo il login immettendo la password scelta precedentemente.

Riavviando l'apparecchio possiamo finalmente accedere ad U-Boot:

# reboot

Per accedere alla console di U-Boot basta premere un tasto qualsiasi entro 3 secondi dal momento in cui si presenta il conto alla rovescia (poco dopo l'avvio).

Qualche comando essenziale della console di U-Boot (il manuale completo è presente qui): help stampa a video tutti i comandi ammessi; help [comando] stampa il manuale del comando; per avviare digitare boot; reset per riavviare.

Il comando version ci fornirà la versione di U-Boot attualmente installata:

Marvell>> version 

U-Boot 1.1.4 (Mar 19 2009 - 16:06:59) Marvell version: 3.4.16

Come si può vedere, si tratta di una versione Marvell.

In questo caso, come precedentemente spiegato, occorre passare ad una versione successiva e ufficiale (almeno la 2011.12-3). Questa operazione sarebbe teoricamente piuttosto critica, nel senso che nel caso in cui l'installazione non vada a buon fine, l'apparecchio perde la sua capacità di avviarsi. Fortunatamente è possibile ripristinare la configurazione di fabbrica attraverso l'interfaccia JTAG messa a disposizione sempre sulla porta Mini-USB dello SheevaPlug.

Se si parte da una versione Marvell, occorre appuntarsi il MAC address del dispositivo col comando seguente (altrimenti verrà spianato e perso per sempre):

Marvell>> print ethaddr

Scaricare quindi i binari e, se necessario, rinominare il file in u-boot.kwb. Ora ci sono due strade possibili:

  1. sfruttare un server TFTP
  2. copiare U-Boot su una chiavetta USB e installarlo da essa.

Se si dispone di un server TFTP, basta spostarvici u-boot.kwb e dalla console di U-Boot inserire questi comandi:

setenv serverip 192.168.X.Y
setenv ipaddr 192.168.X.200
tftpboot 0x0800000 u-boot.kwb
nand erase 0x0 0x60000
nand write 0x0800000 0x0 0x60000

sostituendo ovviamente 192.168.X.Y con l'IP del server.

Altrimenti è sufficiente formattare la chiavetta come FAT, copiarci il file, inserire la chiavetta nella porta dello SheevaPlug, accedere alla console di U-Boot e digitare i seguenti comandi:

usb start
fatload usb 0:1 0x0800000 u-boot.kwb
nand erase 0x0 0x60000
nand write 0x0800000 0x0 0x60000

Riavviare:

reset

Se si partiva da una versione Marvell, occorre ora impostare nuovamente il MAC address, sostituendo l'indirizzo di esempio con quello precedentemente appuntato:

setenv ethaddr 00:50:43:01:c0:ab
saveenv
reset

Verificare che sia tutto a posto:

Marvell>> version

U-Boot 2011.12 (Mar 11 2012 - 18:59:46)

Infine per uscire da Screen occorre premere Ctrl-a seguito da k.

Installare Debian

Abbiamo la possibilità di installare il sistema operativo su diversi dispositivi:

  • scheda SD
  • chiavetta USB
  • disco esterno USB

Le chiavette USB non danno problemi, mentre U-Boot ha molto spesso difficoltà ad avviare da disco rigido esterno USB. Se si vuole installare il sistema su disco esterno, la soluzione più semplice è di lasciare la directory /boot su SD, e tutto il resto del sistema su disco esterno. In questo caso è ovviamente necessario eseguire l'installazione da rete, peraltro sempre consigliabile essendo molto semplice e comoda.

Al momento non è possibile installare Debian sulla memoria flash interna.

Far partire l'installer

Scarichiamo da uno dei mirror del debian-installer ufficiale, in questo caso per la versione in stabile, uImage e uInitrd. Se contiamo di installare Debian su SD, copiamo questi file sulla stessa chiavetta che abbiamo già usato; viceversa, se vogliamo installare Debian su un dispositivo USB, copiamo i file su una scheda SD. Come terza, sempre valida e consigliabile alternativa, mettiamoli su un server TFTP.

Inseriamo i due dispositivi (quello che contiene l'installer e quello su cui avverrà l'installazione) nello SheevaPlug; entriamo nella console di U-Boot come spiegato precedentemente e digitiamo questo:

setenv mainlineLinux yes
setenv arcNumber 2097
saveenv
reset

Lo SheevaPlug è così configurato in modo da poter eseguire il kernel usato da Debian.

Digitiamo nella solita console, se l'installer si trova su USB:

usb start
fatload usb 0:1 0x00800000 /uImage
fatload usb 0:1 0x01100000 /uInitrd

Altrimenti, se si trova su una SD formattata ext2 o ext3:

mmcinit
ext2load mmc 0:1 0x00800000 /uImage
ext2load mmc 0:1 0x01100000 /uInitrd

Infine, se si trova sul server TFTP:

setenv serverip 192.168.X.Y
setenv ipaddr 192.168.X.147
tftpboot 0x00800000 uImage
tftpboot 0x01100000 uInitrd

sostituendo ovviamente 192.168.X.Y con l'IP del server.

Ora è possibile avviare l'installer:

setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
bootm 0x00800000 0x01100000

Alla prima finestra selezionare C se si vuole localizzare la distribuzione in Italiano. Da qui in avanti l'installazione procede come di consueto: l'unica particolarità da tenere presente è la creazione obbligatoria, in fase di partizionamento, di una piccola partizione avviabile (circa 150 MB) formattata come ext2 con mount point /boot.

Configurare U-Boot

Finita l'installazione illustrata precedentemente, rimane solo da configurare U-Boot in modo che lanci in automatico la nostra Debian. Per far questo, se la directory /boot è installata su SD, bisogna inserire questi comandi nella console di U-Boot:

setenv bootargs_console console=ttyS0,115200
setenv bootcmd_mmc 'mmc init; ext2load mmc 0:1 0x00800000 /uImage; ext2load mmc 0:1 0x01100000 /uInitrd'
setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_mmc; bootm 0x00800000 0x01100000'
saveenv
run bootcmd

Se invece è installata su dispositivo USB:

setenv bootargs_console console=ttyS0,115200
setenv bootcmd_usb 'usb start; ext2load usb 0:1 0x00800000 /uImage; ext2load usb 0:1 0x01100000 /uInitrd'
setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_usb; bootm 0x00800000 0x01100000'
saveenv

Conclusioni

Abbiamo ora a disposizione una Debian in tutto e per tutto: divertitevi!

Fonti




Guida scritta da: Stemby   Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized