SheevaPlug

Versione del 29 ott 2010 alle 11:23 di Stemby (discussione | contributi) (disco esterno)
Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
ERRORE: utilizzare "unstable_2024" come parametro al posto di " Sid "! Vedi qui.

Introduzione

Questa guida illustra come installare Debian sullo SheevaPlug.

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

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).

Installare Squeeze su SD

Aggiornare U-Boot

Una volta impostata correttamente l'ora, occorre probabilmente aggiornare U-Boot che, per poter avviare il sistema da SD deve essere almeno alla versione Marvell 3.4.19. Le versioni successive sembra che abbiano alcuni problemi, quindi installeremo proprio questa versione.

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 effettuare il boot 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

A noi interessa la versione Marvell (l'ultimo numero).

In questo caso, come precedentemente spiegato, per installare Debian su SD occorre passare ad una versione successiva. 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.

Scaricare quindi i binari e rinominare il file in uboot.bin. Ora ci sono due strade possibili:

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

Non avendo a disposizione un server TFTP, seguo la seconda opzione. È 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 uboot.bin
nand erase 0x0 0xa0000
nand write 0x0800000 0x0 0xa0000
reset

Verificare che sia tutto a posto. Infine per uscire da Screen occorre premere Ctrl-a seguito da k.

Far partire l'installer

Inserire una memoria SD nello slot dello SheevaPlug. È consigliabile spianarla completamente 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 boot loader 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.

Sulla stessa chiavetta che abbiamo già usato (in realtà si potrebbero adoperare anche altri tipi di dispositivo, usando comandi diversi) copiamo i file presi da uno dei mirror del debian-installer ufficiale, in questo caso la versione in testing, uImage e uInitrd; inseriamo la chiavetta nello SheevaPlug, entriamo nella console di U-Boot come spiegato precedentemente e digitiamo questo:

setenv mainlineLinux yes
setenv arcNumber 2097
saveenv
reset

Il dispositivo è così configurato in modo da poter eseguire il kernel usato da Debian; ora è possibile avviare l'installer, digitando nella solita console:

usb start
fatload usb 0:1 0x0800000 /uInitrd
fatload usb 0:1 0x400000 /uImage
setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
bootm 0x400000 0x0800000

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 (circa 150 MB) bootabile formattata come ext2 con mount point /boot.

Configurare U-Boot

Come ultima cosa rimane solo da configurare U-Boot in modo che lanci in automatico la nostra Debian installata su SD. Per far questo bisogna inserire questi comandi nella console di U-Boot:

setenv bootargs_console console=ttyS0,115200
setenv bootcmd_mmc 'mmcinit; ext2load mmc 0 0x0800000 /uInitrd; ext2load mmc 0 0x400000 /uImage'
setenv bootcmd 'setenv bootargs $(bootargs_console); run bootcmd_mmc; bootm 0x400000 0x0800000'
saveenv
run bootcmd

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

Disco esterno USB

Lo SheevaPlug è dotato di una porta USB 2.0 standard. Ad essa si può attaccare ovviamente un disco rigido esterno, in modo tale da avere a disposizione uno spazio adeguato per un server, per quanto domestico.

Nel caso in cui lo si voglia usare come un vero e proprio disco rigido, lo si vorrà probabilmente montare in automatico durante l'avvio del sistema operativo. Una volta attaccato il dispositivo (ipotizzando che sia già partizionato e formattato adeguatamente), si trovi dunque l'UUID della partizione che vogliamo montare:

$ ls -l /dev/disk/by-uuid/

Ipotizzando che sia 03b0419d-ec34-4ad9-942f-7e2365e2a8f4, che il filesystem sia ext4 e che vogliamo utilizzare il disco rigido per raccogliere unicamente il contenuto della directory /var, aggiungeremo a /etc/fstab una riga analoga a:

UUID=03b0419d-ec34-4ad9-942f-7e2365e2a8f4   /var     ext4    defaults  0       2

Il lavoro sarebbe a questo punto già concluso, se non fosse che lo ShevaPlug ha il terribile "difetto" di... effettuare il boot in tempi strabiliantemente brevi! È talmente veloce che il disco esterno non fa in tempo ad avviarsi e a farsi riconoscere dal sistema.

Ecco quindi un semplice modo per far perdere 10 secondi.

Inseriamo in /etc/init.d/ il seguente script, che chiamiameremo wait4usbdisks:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          wait4usbdisks
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-stop:
# Default-Start:     S
# Default-Stop:
# X-Interactive:     true
# X-Start-Before: checkfs
# Short-Description: Delays boot to ensure USB disks are connected.
### END INIT INFO
echo "Taking a 10 second nap for USB devices to initialize!"
sleep 10
echo "Done napping!"

Diamo ad esso i permessi di esecuzione con

# chmod +x /etc/init.d/wait4usbdisks

Installiamo rcconf con un canonico

# aptitude install rcconf

Avviamolo con

# rcconf

e selezioniamo il nostro script aggiungendo l'asterisco tramite un tocco di barra spaziatrice.

Proviamo a riavviare: dovrebbe andare tutto bene.

Fonti



Stemby