giovedì 31 dicembre 2015

Linux in ChormeOS con Crouton

Dopo aver installato ChromeOS su Samsung N150 (ed averne notato i limiti) ho provato ad usare crouton, un metodo per mettere in esecuzione Linux su ChromeOS dentro un chjail

Dato che non si tratta di un vero hardware Chromebook non e' stato necessario entrare in modalita' Developer

Linux in esecuzione su ChromeOS

Per installare crouton si procede scaricando lo script al seguente indirizzo https://goo.gl/fd3zc
Si digita da dentro il browser CTRL+ALT+T che apre una crosh shell. Si digita quindi

shell

e si lancia lo script

sudo sh ~/Downloads/crouton -t xfce -t core -t cli-extra
(la password e' password su ChromiumOs)

in questo modo viene lanciata l'installazione che dura oltre mezz'ora e che installa una Ubuntu Precise Pangoline con XFCE come desktop. Al termine dell'installazione vengono richiesti username e password dell'utente Ubuntu

sudo sh ~/Downloads/crouton -t xfce -t core or -t cli-extra

al termine ho provato a lanciare X con il comando
sudo startxfce4
ma ho ricevuto l'errore di No Screen Found. Questo e' un problema che si riscontra anche sui veri Chromebook. Su Internet ci sono molte soluzioni proposte ma nessuna ha funzionato
Ho quindi digitato
sudo startcli
e mi sono ritrovato nella shell di Ubuntu

Per spostarsi da Linux a ChromeOS si dovrebbe usare la combinazione ctrl+alt+shift+function+f1/f2 ma per me la combinazione non ha funzionato (cui veri Chromebook ci sono due tasti speciali che svolgono questa funzione)

Per montare il solo chroot si puo' digitare
sudo enter-chroot

Debris Flow con OpenPIV

Ogni tanto mi ricordo di aver una laurea (ops..un dottorato) in geologia e cerco di applicare qualche idea piu' strettamente informatica al campo geologico.

Un amico vulcanologo (Sebastien Valade) mi ha mostrato un sistema per calcolare il campo di velocita' di un flusso di lava semplicemente da una immagine ottica di una comune telecamera.Mi si e' accesa una lampadina che la stessa cosa poteva essere applicata anche alle frane ed in particolare ai debris flow

La teoria che sta dietro all'interpretazione delle immagini rientra nella categoria del Particle Image Velocimetry (qui la pagina wikipedia) . In estrema sintesi vengono ricercate le porzioni omologhe di due fotogrammi vicini nel tempo per calcolare il campo del vettore spostamento..detto cosi' e' banale ma la pratica e' decisamente differente

Per prova ho preso da Youtube una decina di fotogrammi di questo filmato che ritrare un debris flow in Cancia il 25 luglio 2015


Debris flow Cancia (Italy) 23/07/2015

I fotogrammi sono stati presi scaricando il video in formato mp4 da Youtube mediante una estensione di Firefox e poi avanzando fotogramma per fotogramma (tasto E)  e salvando il frame (Shif+S) con VLC 

I frame sono distanziati di due secondi 

Ho provato ad elaborare i frame per coppie successive (1-2, 2-3,3-4) con il primo esempio di tutorial in Python di OpenPIV

oppure usando un programma in Matlab (decisamente piu' complesso e completo) chiamato PIVLab


Non e' stata fatta alcuna calibrazione sul valore vero della velocita', si tratta solo di una prova di fattibilita' e, specialmente nel secondo caso, sembra funzionare

So long and thanks for all the fish

Grazie per aver contribuito a creare la "palestra" in cui ho imparato un po' di informatica

Ian Murdock (1973-2015), fondatore di Debian

mercoledì 30 dicembre 2015

OpenPIV su Ubuntu 15.10

OpenPIV e' un sistema di analisi di immagini che permette di calcolare il campo di velocita' di un sistema di particelle




per l'installazione su Ubuntu 15.10 si devono risolvere prima alcune dipendenze

apt-get install python-progressbar
apt-get install python-pip
apt-get install python-scipy
apt-get install python-numpy
apt-get install cython
pip install scikit-image (altrimenti apt-get install python-skimage)

dopo cio' si scarica il sorgente da GitHub  e si lancia l'installazione con il classico

python setup.py install

al momento di lanciare il primo esempio (tutorial-part1.py) sono incorso in un errore in fase di importazione del modulo filters di skimage. La soluzione e' piuttosto semplice: il modulo skimage ha modificato il nome del sottomodulo filters in filter (senza la s finale)


/usr/local/lib/python2.7/dist-packages/OpenPIV-0.20.1-py2.7-linux-x86_64.egg/openpiv/preprocess.py
/usr/local/lib/python2.7/dist-packages/OpenPIV-0.20.1-py2.7-linux-x86_64.egg/openpiv/tools.py

basta andare a modificare i file sotto indicati e modificare togliendo la s finale alla riga dell'import
from skimage.filter import....

e tutto inizia a funzionare

martedì 29 dicembre 2015

Progess bar su dd

Un aspetto noioso del comando dd e' quello di non avere una modalita' verbose e quando si copia una immagine (da 8 Gb per esempio) non si sa mai se il comando sia procedendo o si e' bloccato qualcosa

Una semplice soluzione e' installare pv (non e' presente di default su Debian ed Ubuntu) che permette di creare una progress bar sulla shell. L'uso del comando e' il seguente dove immagine.img e' il file che si deve copiare e /dev/sdb il dispositivo su cui copiarlo (in questo caso una chiavetta USB sul mio sistema)

pv -tpreb immagine.img | dd of=/dev/sdb bs=64M

ChromeOS/ChromiumOS su Samsung N150

Era un po' di tempo che volevo provare ChromeOS ma non conosco nessuno che abbia un ChromeBook e non ho voglia di spendere tra 200-300 euro per un portatile sottodimensionato


Ho quindi tirato fuori dal cassetto il mio vecchio Samsung N150  (un ultraportatile del 2010 piuttosto plasticoso) per installare ChromiumOS, la versione compilata partendo dai sorgenti e che puo' essere scaricata da questo link

Al primo tentativo ho scaricato la piu' recente daily build ma all'avvio del sistema da USB non erano funzionanti ne' il trackpad (poco male) ne' la wifi (molto male). Leggendo nel sito ho scoperto che le build daily e weekly hanno inclusi i driver solo per un limitato numero di dispositivi. Per questo motivo ho scaricato la special build del 31 Ottobre ed il sistema ha iniziato a funzionare (e' necessaria chiave USB da almeno 8 Gb)

Una volta effettuato il login con le credenziali di Google si puo' iniziare con l'installazione su disco fisso entrando nella shell di amministrazione con la combinazione CTRL+ALT+F2

L'username di default e' chronos mentre la password di default e' default. Si cambia mediante
chromeos-setdevpasswd

A questo punto ci si puo' elevare con sudo su (si vede che cambia il prompt della shell)
Come indicato dalle istruzioni a video si deve disabilitare powerd in fase di installazione con
initctl stop powerd

Per copiare l'immagine si deve usare il comando
chromeos-install --dest /dev/sda (attenzione al doppio segno meno)

durante questo fase (piuttosto lunga) mi sono stati generati numerosi errori gpt header is invalid ma cio' non ha impedito il termine dell'operazione (sembra che sia qualcosa relativo alla mancanza della partizione di backup, che e' presente sui veri ChromeBook, ma non posso confermare)

Oltre alcune applicazioni nativi si possono utilizzare applicazioni desktop normali medianti servizi come rollApp che rendono disponibili programmi open come Gimp, OpenOffice, Inkscape)



Il file manager si apre con la combinazione Alt+Shift+M e si possono montare anche chiavette USB

Vantaggi

  • Con mia grande sorpresa mi sono trovato lo spazio Google Drive di 211 Gb. Questo spazio e' disponibile e visibile da ChromeOS ma e' differente da quello di Google Drive (che mi mostra sempre un valore disponibile di 17 Gb). Stando a quanto scritto da Google lo spazio disco dovrebbe essere gratuito per due anni


Svantaggi

  • E' necessario utilizzare il sistema su una macchina recente e ben dotata di RAM. Sul Samsung N150 il sistema e' piuttosto lento
  • Non credo che mi abituero' mai ad avere i dati sul cloud
  • Utilizzando un disco a piatti rotanti e non un SSD, il sistema e' piuttosto lento a partire annullando la comodita' di avere un desktop subito pronto (tanto per dire Windows 10 e Ubuntu 15.10 su SSD sono molto piu' veloci al boot rispetto a ChromeOS su disco fisso classico)
  • Le applicazioni non sono molto interessanti. Se devo usare RollApp per usare Gimp preferisco averlo direttamente installato sulla macchina
  • Non ci sono compilatori disponibili
  • Non esiste di fatto un disco locale. Il disco fisso viene visto come cartella Downloads ma c'e' il problema che viene trattato come una grande cache, il sistema operativo puo' cancellare in qualunque momento e senza preavviso i file se ne ha necessita' 
  • Nel mio sistema non risulta disponibile la connessione via cavo di rete

lunedì 28 dicembre 2015

Compilazione OpenCV3 su Ubuntu

OpenCV3 ha introdotto molte novita' nella libreria OpenCV e vale la pena installare la nuova versione...peccato che le principali distribuzioni non abbiano disponibili i pacchetti precompilati per cui bisogna partire dal codice sorgente

Il primo tentativo che ho effettuato e' stato su Centos 7 ma la cosa era un po' troppo complicata per le troppe dipendenze dalle librerie ed ho preferito ripiegare su una Ubunti 15.10 per cui e' stato reso disponibile il seguente script che promette la compilazione senza troppo sforzo

-----------------------------------------------
version="$(wget -q -O - http://sourceforge.net/projects/opencvlibrary/files/opencv-unix | egrep -m1 -o '\"[0-9](\.[0-9]+)+' | cut -c2-)"
echo "Installing OpenCV" $version
mkdir OpenCV
cd OpenCV
echo "Removing any pre-installed ffmpeg and x264"
sudo apt-get -qq remove ffmpeg x264 libx264-dev
echo "Installing Dependenices"
sudo apt-get -qq install libopencv-dev build-essential checkinstall cmake pkg-config yasm libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg cmake qt5-default checkinstall
echo "Downloading OpenCV" $version
wget -O OpenCV-$version.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/$version/opencv-"$version".zip/download
echo "Installing OpenCV" $version
unzip OpenCV-$version.zip
cd opencv-$version
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j2
sudo checkinstall
sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
echo "OpenCV" $version "ready to be used"
-----------------------------------------------
(attenzione lo script originale e' stato modificato perche' la libreria libxine-dev e' stata sostituita da libxine2-dev

Peccato che, nonostante sia esplicitamente richiesto negli switch di cmake, il supporto di Python non venga compilato per la mancanza di alcune dipendenza delle librerie

Per ottenere PyOpenCV e' necessario aggiungere i seguenti pacchetti (in realta' sono anche piu' del necessario ma cosi' si aggiunge anche il supporto ai formati video)

apt-get install libpython3.4-dev
apt-get install python3-numpy
apt-get install libgphoto2-dev
apt-get install doxygen
apt-get install python-vtk libvtk5-dev

in questo modo saranno eseguibili anche gli esempi nella directory samples/python

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...