Sito di riferimento http://hardkernel.com
Nella sezione download si scelga la directory corrispondente al proprio modello di ODROID
In questa guida viene usata una delle distribuzioni “unofficial” denominata “Minimal Debian jessie”
Di seguito il link per scaricare una copia dell'originale –> Minimal Debian jessie“
I file di tipo ”.xz” sono file compressi. per decomprimerli si può usare 7Zip per Windows oppure unxz per Linux
Una volta scaricato il file compresso decomprimere con il seguente comando:
unxz Debian-Jessie-1.0-20160131-C1.img.xz
Ora dobbiamo trasferire l'immagine decompressa su una schedina microSD
dopo aver individuato l'unità di memoria microSD (ad es. /dev/sdb) eseguire il seguente comando
dd if=Debian-Jessie-1.0-20160131-C1.img of=/dev/sdb
In questo modo ci troveremo sulla nostra scheda di memoria due partizioni: BOOT e rootfs
Prima di estrarre la nostra schedina e accendere il nostro Odroid, dobbiamo aprire il file boot.ini nella prima partizione “BOOT” e controllare alcuni parametri se corrispondo al materiale cha bbiamo a disposizione. Ad esempio nel mio caso ho a disposizione un monitor che supporta la risoluzione fullHD 1080 e porta di ingresso VGA. Considerato che l'uscita dell'Odroid è HDMI ho a disposizione anche un cavo adattatore HDMI-VGA.
Prima di proseguire considerate il fatto che ho modificato questo file boot.ini traducendolo in italiano per una migliore comprensione.
Pertanto se guardiamo il contenuto del file nella prima sezione possiamo notare che tutte le righe sono commentate tranne la 720p. Ma noi possiamo commentarla e decommentare quella corrispondente a 1080p.
Inoltre dobbiamo specificare nella seconda sezione, il tipo di connessione che non sarà quindi HDMI come quella di default ma VGA.
modificare
# HDMI DVI Mode Configuration setenv vout_mode "hdmi" # setenv vout_mode "dvi" # setenv vout_mode "vga"
con
# HDMI DVI Mode Configuration # setenv vout_mode "hdmi" # setenv vout_mode "dvi" setenv vout_mode "vga"
Ora si può smontare la schedina dal PC e inserirla nell'odroid per il primo avvio
Il sistema parte e tra le operazioni di avvio c'è quella di espansione della seconda partizione “rootfs” che andrà ad occupare interamente lo spazio non ancora occupato della microSD.
Se tutto procede senza interruzioni dopo circa 2 minuti vi troverete a video la consolle per il login: root password odroid
Se invece il sistema si blocca probabilmente c'è un problema di memoria della scheda microSD ovvero non tutte le schedine sono uguali e possono avere un sistema di gestione differente. Pertanto si proverà a risolvere con la seguente procedura:
Smontare la schedina dall'odroid e rimontarla su pc ed editare il file boot.ini modificando la seguente sezione
da
# Configurazione per le UHS Card # Togliere il commento alla riga sotto per DISABILITARE il supporto alle MicroSD UHS-1 # Questo può interrompere il boot per alcuni modelli di marca di schede. setenv disableuhs "disableuhs"
a
# Configurazione per le UHS Card # Togliere il commento alla riga sotto per DISABILITARE il supporto alle MicroSD UHS-1 # Questo può interrompere il boot per alcuni modelli di marca di schede. # setenv disableuhs "disableuhs"
Se anche questa procedura fallisce dobbiamo rismontare nuovamente la micro e rimontarla su un pc che abbia a disposizione “GParted”.
Dovremo effettuare manualmente l'espansione della seconda partizione. (per la procedura si veda guida a parte).
Successivamente dobbiamo modificare nuovamente il file boot.ini nella sezione “Argomenti di boot” modificando il parametro relativo la posizione del dispositivo in cui si troverà la directory root
da
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
a
setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
A questo punto il sistema deve partire.
Nel caso in cui si voglia realizzare un server (questo è il mio caso) non c'è bisogno del video quindi di seguito i passi per disattivare l'uscita HDMI e recuperare quindi un po' di RAM che non guasta mai.
Modificare come di seguito il file boot.ini nell'apposita sezione:
# Disabilita l'uscita HDMI # 0 = disabled # 1 = enabled setenv hdmioutput "0"
Se abbiamo avviato il sistema senza video dobbiamo necessariamente collegarci tramite ssh al nostro odroid.
Quindi solo se abbiamo nella nostra rete un DHCP possiamo scansionarla con nmap (ad esempio) per cercare tra gli altri il nostro odroid.
Ci colleghiamo nel seguente modo:
ssh root@192.168.1.110
L' IP suggerito è indicativo… voi ne avrete sicuramente un'altro.
Confermate alla richiesta di accettazione della chiave ECDSA
e dopo aver digitato la password “odroid” sarete a consolle.
Se avete effettuato l'avvio a video sarete già dentro pronti per modificare l'impostazione della tastiera
La prima cosa da fare è:
apt-get update
Installiamo i seguenti pacchetti:
apt-get install keyboard-configuration console-data console-setup
Al termine dell'installazione parte automaticamente la procedura per la selezione del layout e noi sceglieremo la quarta opzione che ci permette di scegliere tra tutte le opzioni disponibili ovvero la “italian standard standard”
Prima di proseguire verifichiamo la data e l'ora che siano giuste e corrispondenti al nostro fuso orario e per l'Italia se l'orario è solare o legale.
date Sat May 21 10:19:56 UTC 2016
Nel mio caso (sono le ore 12:19) il sistema risulta indietro di 2 ore. Infatti il sistema essendo collegato a internet si è sincronizzato sulle informazioni base ovvero Fuso orario di Greenwich, ma noi siamo in Italia +1 e con l'ora legale +1 in totale avanti di 2 ore. Pertanto aggiustiamo l'ora installando il seguente pacchetto:
apt-get install tzdata
poi
dpkg-reconfigure tzdata
e seguendo la procedura guidata selezioniamo la città preferita. E se ridigitiamo il comando date avremo l'ora e la data aggiornate:
date Sat May 21 12:23:40 CEST 2016
Sia che abbiamo deciso di effettuare l'avvio in modalità “server” o che abbiamo scelto la modalità video, procediamo di seguito per il settaggio dell'indirizzo ip da dinamico a statico:
Editiamo il file interfaces
vi /etc/network/interfaces
l'originale
# interfaces(5) file used by ifup(8) and ifdown(8) # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d allow-hotplug eth0 iface eth0 inet dhcp
va modificato come di seguito:
source-directory /etc/network/interfaces.d auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.110 netmask 255.255.255.0 gateway 192.168.1.1 dns-servers 8.8.8.8
Specifichiamo che è necessario togliere la dicitura ”allow-hotplug eth0“ e sostituirla con ” auto eth0 “ perchè se avessimo impostato l'ip statico nella riga successiva esso avrebbe comunque acquisito anche l'ip dinamico e ci saremmo trovati due IP.
Ora abbiamo un sistema odroid basato su Debian base.
Digitiamo il seguente comando e verifichiamo le informazioni base del sistema LINUX.
uname -a Linux odroid-jessie 3.10.80 #17 SMP PREEMPT Sat Oct 31 12:44:33 CET 2015 armv7l GNU/Linux
Riavviamo odroid e accertiamoci che sia attivo l'ip da noi assegnato e prima di fare l'upgrade dei pacchetti trasferiamo il contenuto della seconda partizione, cioè la ”/“ ovvero la “rootfs” vista all'inizio, su un disco USB esterno.
Si sa che le microSD hanno una vita limitata, di conseguenza può essere molto utile lavorare con un hdd esterno, vediamo come fare.
Ipotizziamo l'uso di un hdd esterno USB (da 2,5 o 3,5 non importa, l'importante è che il collegamento sia USB). Una volta connesso possiamo eseguire
dmesg
per identificare il device
[ 9032.990136] usb 1-1.1: new high-speed USB device number 4 using dwc_otg [ 9033.091814] usb-storage 1-1.1:1.0: USB Mass Storage device detected [ 9033.092871] usb-storage 1-1.1:1.0: Quirks match for vid 05e3 pid 0702: 520 [ 9033.099924] scsi0 : usb-storage 1-1.1:1.0 [ 9034.101936] scsi 0:0:0:0: Direct-Access Hitachi HTS541212H9AT00 0811 PQ: 0 ANSI: 0 [ 9034.106060] sd 0:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/111 GiB) [ 9034.114457] sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled [ 9034.119576] sd 0:0:0:0: [sda] Cache data unavailable [ 9034.123785] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 9034.132239] sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled [ 9034.137123] sd 0:0:0:0: [sda] Cache data unavailable [ 9034.141495] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 9034.533118] sda: sda1 sda2 sda3 [ 9034.537402] sd 0:0:0:0: [sda] Test WP failed, assume Write Enabled [ 9034.539062] sd 0:0:0:0: [sda] Cache data unavailable [ 9034.545507] sd 0:0:0:0: [sda] Assuming drive cache: write through [ 9034.549671] sd 0:0:0:0: [sda] Attached SCSI disk
Il disco esterno è quindi /dev/sda che contiene 3 partizioni in questo caso sda1 sda2 sda3. Se abbiamo bisogno di rivedere il partizionamento per adattarlo al nostro bisogno usiamo fdisk
Ipotiziammo di avere un'unica partizione sulla quale vorremo installare il nostro raspbian. Dobbiamo innanzitutto formattarla:
mke2fs -t ext4 -L rootfs /dev/sdxx
Ora la montiamo
mount /dev/sdxx /mnt
Ma prima di iniziare la copia dobbiamo installare “rsync” quindi
apt-get install rsync
Ora copiamo tutto su hdd
rsync -axv / /mnt
Una volta terminat la copia apriamo il file
vi /boot/boot.ini
e se vi ricordate eravamo già intervenuto nella modifica della sezione “Argomenti di boot” modificando il parametro relativo la posizione del dispositivo in cui si troverà la directory root
modificheremo quindi da
setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
oppure
setenv bootargs "root=/dev/mmcblk0p2 rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
a
setenv bootargs "root=/dev/sdaxxx rootwait ro ${condev} no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec} ${enabledac}"
ho notato che non c'è bisogno di modificare il file /etc/fstab in quanto è presente nella riga di montaggio della partizione root l'opzione errors=remount-ro che in caso di errore sul codice UUID va automaticamente a montare quanto indicato tra gli argomenti di boot del file boot.ini
altrimenti se si vuole essere più coerenti e lineari modificare anche il file /etc/fstab e sostituire
UUID=e139ce78-9841-40fe-8823-96a304a09859 / ext4 defaults,noatime 0 1
CON
/dev/sdaxxx / ext4 defaults,noatime 0 1
Possiamo riavviare e una volta riaperta la shell verificare di usare realmente l'hdd esterno digitando:
df
e l'output mostrerà se effettivamente la partizione / radice è stata montata dal dispositivo /dev/sdaxxx
Ce ne accorgeremo anche dal fatto che il led dell'hard disk subito dopo il riavvio inizierà a lampeggiare segno che sta lavorando.
Ora se vogliamo mantenere un sistema aggiornato e possibilmente sicuro, dobbiamo effettuare l'upgrade dei pacchetti della distribuzione lanciando un bel:
apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: linux-headers-armhf-odroid-c1 linux-image-armhf-odroid-c1 The following packages will be upgraded: apt apt-utils base-files cpio deb-multimedia-keyring dpkg gnupg gpgv initramfs-tools isc-dhcp-client isc-dhcp-common libapt-inst1.5 libapt-pkg4.12 libc-bin libc6 libdns-export100 libgcrypt20 libglib2.0-0 libgssapi-krb5-2 libhogweed2 libidn11 libirs-export91 libisc-export95 libisccfg-export90 libk5crypto3 libkrb5-3 libkrb5support0 libnettle4 libpam-modules libpam-modules-bin libpam-runtime libpam0g libpcre3 libssh2-1 libssl1.0.0 libsystemd0 libtasn1-6 libudev1 linux-headers-3.10.80 linux-image-3.10.80 locales login multiarch-support openssh-client openssh-server openssh-sftp-server passwd perl-base rsyslog systemd systemd-sysv udev 52 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. Need to get 48.9 MB of archives. After this operation, 2,444 kB disk space will be freed.
e confermando con “Y”
Mentre lo lasciamo lavorare sarebbe bello poter perdere qualche minuto per capire come funzionano gli aggiornamenti e i repository di debian, ma non essendo ancora sufficientemente preparato per spiegarveli, vi rimando alla documentazione ufficiale qui –> http://guide.debianizzati.org/index.php/I_repository_ed_il_loro_utilizzo