Clonezilla e dd possono fallire nei vostri backup: ma ho la soluzione!

Uso abitualmente Clonezilla per i backup dei miei PC sia a casa che al lavoro e non ho mai avuto grossi problemi (o meglio, quando li ho avuti, di solito li ho sempre capiti e risolti con qualche configurazione adhoc).

In questi giorni ero alle prese con un osso duro invece. Un vecchio PC del 2011 che non ne voleva sapere di farsi backuppare.

La cosa particolare è che nè nei in backup nè nei restore veniva mostrato nessun errore: il risultato era però un sistema restorato (debian 10 su ext4) con file corrotti e inutilizzabili.

Ne ho provate di ogni:

  • ho utilizzato diverse versioni di clonezilla per verificare che non fosse una regression; (sono arrivato fino a versioni del 2011)
  • ho utilizzato varie architetture di iso di clonezilla (amd64, i686-pae e i686);
  • ho provato direttamente “dd”

Ed è proprio questa ultima prova ad avermi indirizzato al problema reale: come è possibile che neanche dd possa funzionare?

Abitualmente lanciavo questa riga di bash per avviare il backup con dd:

dd if=/dev/sda1 status=progress bs=2M | gzip -c > /home/partimage/image.gz 

Notate la parte in grassetto? Non è stata messa a caso. Cercando in giro per stackoverflow a caccia di problemi su dd, mi sono imbattuto in questo thread che mi ha aperto un mondo.

E in effetti, lanciando il backup in questo modo:

dd if=/dev/sda1 status=progress | gzip -c > /home/partimage/image.gz 

Il tutto funziona perfettamente, ovviamente facendo il restore in questo modo:

gunzip -c /home/partimage/image.gz | dd of=/dev/sda1 status=progress 

Ora rimane solo un problema: clonezilla non supporta la possibilità di cambiare il parametro bs passato a dd, e qui ho chiesto allo sviluppatore di abilitare un opzione in merito. Vediamo come andrà a finire.

Windows CE è morto? Lunga vita a Linux e Wine

(lo stile di scrittura di questo post è volutamente leggero, ma l’argomento è dannatamente serio!)

Ormai sono 18 anni che lavoro come firmwarista in ambito industriale e mi è capitato di vedere di tutto sugli schermi delle povere HMI: sistemi operativi proprietari, Windows 95, 98, XP e anche lo SCOMODISSIMO Windows CE!

Purtroppo, ma che dico, PER FORTUNA, Windows CE è stato finalmente decretato morto dalla Microsoft.

Questo decesso programmato ha portato molte aziende sull’orlo di crisi tecniche.

E ora come sostituiamo Windows CE?

La scelta banale potrebbe essere quella di portare tutto il software sulle moderne versioni di Windows. Peccato però che ci si dimentica spesso di una parolina, o forse di due: REAL-TIME.

Infatti, Windows CE, aveva tanti difetti ma una cosa su tutte faceva abbastanza bene: eseguire codice in tempo reale!

Purtroppo Windows 10 & Co. non gradiscono molto la parte realtime. Si, so quello che state per dire: ma ci sono le estensioni realtime per windows!

Ok, ma le avete provate? Queste estensioni sono dannatamente pesanti e si portano dietro un ulteriore zavorra: UN COSTO DI LICENZA SUPERIORE A QUELLO DI WINDOWS STESSO!

Quindi, vi starete chiedendo, che cosa suggerisce il fenomenale Roberto Viola?

Semplice: LINUX!

O meglio, Linux + Wine + Xenomai!

Nel dettaglio, Xenomai si occuperà della gestione realtime, mentre Wine si occuperà della parte grafica della HMI che sicuramente non vorrete riscrivere!

Signori, in pochi giorni, se non ore, avrete migrato il vostro applicativo da Windows CE a Linux senza più costi di licenza e sopratutto su un kernel al passo con i tempi!

Avete avuto anche voi situazioni simili?

Dai che forse il 2020 sarà l’anno di linux…almeno per quello che riguarda l’ambito industriale!

Raspberry: modificare la luminosità di uno schermo via HDMI (e non solo!)

Per lavoro stavo cercando come poter modificare la luminosità e più in generale tutti i parametri di uno schermo collegato via HDMI al raspberry.

Ho trovato il tool ddcutil ( https://www.ddcutil.com/raspberry/ ) che funziona da dio.

Prima di tutto bisogna modificare il file /boot/config.txt aggiungendo questa linea

dtparam=i2c2_iknowwhatimdoing

riavviate

e provate ad avviare il comando ddcutil getvcp
Dovreste trovare la lista di tutti i parametri supportati dal vostro schermo.

Nel mio caso, per esempio, per modificare la luminosità mi è bastato inviare il comando

sudo ddcutil setvcp 10 100

dove 100 è il valore in percentuale della luminosità del display.

Qui trovate anche il pacchetto ddcutil compilato per ARM64.