Creare collegamenti o shortcut sul desktop di Ubuntu 18.04

Spesso quando installiamo un nuovo software su Ubuntu 18.04 non viene creata in automatico una icona sul desktop o anche detta shortcut.
Per crearla possiamo utilizzare un software ad-hoc oppure procedere manualmente alla creazione.
Crearla manualmente è molto semplice e ci permette di capire bene cosa ci sta dietro ad un semplice collegamento.

Creiamo la shortcut per Eclipse

Apriamo il terminale e creiamo un nuovo file sul nostro desktop chiamato Eclipse.desktop:

gedit /home/luca/Scrivania/Eclipse.desktop

In questo file dobbiamo scrivere tutta una serie di informazioni riguardo alla shortcut che vogliamo creare, con una sintassi molto simile a quella di uno script bash.

Ecco un esempio:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/home/luca/eclipse/cpp-photon/eclipse/eclipse
Name=Eclipse
Comment=Eclipse IDE
Icon=/home/luca/eclipse/cpp-photon/eclipse/icon.xpm

Questo file può essere riadattato a tutti i software che noi vogliamo, semplicemente cambiando i parametri Exec, Name, Comment e Icon.

  • Exec -> indica il file eseguibile che il nostro shortcut dovrà avviare
  • Name -> diventerà il nome del collegamento, sostituendo quello del file originale
  • Comment -> non è indispensabile, indica un semplice commento da visualizzare
  • Icon -> qui indicheremo il file icona da associare al shrtcut, in modo da renderlo più riconoscibile

Ora dobbiamo consentire l’esecuzione del file, a terminale diamo il comando:

chmod +x /home/luca/Scrivania/Eclipse.desktop

Sul nostro desktop troviamo il file appena creato con una strana icona, e dal nome Eclipse.desktop, eseguiamolo come prima volta e riceveremo un messaggio di questo tipo:

clicchiamo su “dai fiducia e lancia” e vedremo oltre al nostro software partire anche la nostra icona prendere il nome e l’immagine desiderata.

ESP8266, Sviluppiamo firmware con Eclipse

Eclipse è un ambiente di sviluppo multi-piattaforma e multi-linguaggio molto diffuso. Viene utilizzato principalmente per programmare in Java e C/C++, ma con plugin aggiuntivi possiamo espandere le sue potenzialità a molti altri linguaggi.
Essendo multi-piattaforma funziona sia su Linux che su Windows, a 32 e 64 bit.

Eclipse necessita di Java (JRE) per funzionare, quindi prima di procedere è fondamentale installarlo.

Download

Scarichiamo la versione di Eclipse che ci interessa a questo link io utilizzo la versione a 64 bit.
Ora estraiamo il contenuto nella nostra cartella:

tar -zxf eclipse-inst-linux64.tar.gz

Installazione

Entriamo nella cartella appena estratta ed eseguiamo il file eclipse-inst

cd eclipse-installer
./eclipse-inst

ci troveremo di fronte ad una finestra che mostra le varie possibilità:
Eclipse setup
Noi sceglieremo “Eclipse IDE for C/C++ Developer” e poi “install” alla schermata successiva.
Ora il programma di installazione scaricherà dalla rete i file necessari, terminata questa fase abbiamo il nostro IDE pronto da eseguire.

Primo progetto per l’ESP8266

Questa è la schermata che ci troviamo davanti una volta avviato:
Eclipse
partendo dall’esempio creato nel precedente articolo andiamo a creare il progetto con Eclipse.
Andiamo su “File”, “New” e poi “Makefile Project with existing code”, con il bottone “Browse…” andiamo a recuperare la cartella dell’esempio “project_template”, ora clicchiamo su “Finish”.
In alto a sinistra troveremo il nostro nuovo progetto importato, tuttavia ora non è utilizzabile, dobbiamo dire ad Eclipse come fare a compilarlo.
Clicchiamo con il destro sul progetto e poi su “properties”, andiamo su “C/C++ Build” e dentro ad “Environment” settiamo le variabili IDF_PATH e quella della toolchain, come nella foto sotto.
La variabile IDF_PATH è richiesta dal sistema di compilazione dei progetti e indica dove di trova la directory del Software Development Kit, mentre per permettere di utilizzare il compilatore dobbiamo aggiungere al path di sistema il suo percorso.
Eclipse project properties
da notare anche il flag sotto impostato su “Replace native environment with specified one”, clicchiamo su Apply.
Impostiamo la cartella dei file include in “C/C++ General”, “Paths and Symbols” come indicato sotto.
Eclipse paths
Ora possiamo cliccare su “Apply and close” e finalmente provare a compilare il nostro esempio, andando su Project, prima facciamo un “Clean” e poi “Build Project”, dovremmo vedere sulla console di Eclipse dopo pochi istanti una scritta blu simile a quella sotto.
Build succesfully

Se vogliamo rendere le operazioni di clean/build e la scrittura sul chip molo più comoda e rapida possiamo impostare delle “Build Target” automatiche, che eseguono per noi dei comandi specifici, semplicemente con un click
In alto a destra troviamo il tab “Build”, selezioniamolo e con il destro sul progetto clicchiamo “New”, dobbiamo creare i 3 comandi come illustrato nelle finestre sotto.
null

Setup ESP8266 SDK RTOS con Linux ubuntu 18.04

Avrete sicuramente sentito parlare dell’ESP8266, negli ultimi anni questo chip sta spopolando fra appassionati di elettronica e progettisti del settore.
Si tratta di un chip low-cost prodotto dalla cinese Espressif Systems, integra al suo interno un potente microcontrollore e funzionalità WiFi con lo stack TCP-IP completo.
In commercio possiamo trovare tante board, in diversi formati che montano questo chip, ma in sostanza il cuore non cambia.
Personalmente ho acquistato la board nodeMCU v2 come questa e sono rimasto sorpreso dalle sue potenzialità:
nodeMCU v2 board
Integra già il convertitore USB seriale e la potete comodamente alimentare da USB, a differenza di altre dove è necessario fare adattatori vari o, ancora peggio, dove non avete a disposizione tutte le uscite.

Caratteristiche tecniche

  • Processore: microprocessore RISC L106 a 32 bit, basato su Tensilica Xtensa Diamond a 80 o 160 MHz
  • 64 KiB di RAM per le istruzioni, 96 KiB di RAM dati
  • Flash SPI esterna: da 512 KiB a 16 MB (la nodeMCU v2 ha 4MB di FLASH )
  • IEEE 802.11 b/g/n Wi-Fi
  • 16 pin GPIO
  • 1 SPI
  • 1 I²C
  • 1 Interfacce I²S con DMA (pin condivisi con GPIO)
  • 2 UART (1 con TX e RX dedicati, l’altra solo TX condiviso con GPIO)
  • 1 10-bit ADC ad approssimazioni successive

Scelta dell’ambiente di sviluppo

Il modulo nodeMCU viene spedito con già il firmware di default caricato, vi consente di programmare l’ESP8266 scrivendo sostanzialmente degli script in linguaggio Lua.
Personalmente non utilizzo questo metodo in quanto preferisco scrivere il codice direttamente in C, è sicuramente un metodo più professionale e performante.
Per scrivere il nostro software in linguaggio C abbiamo 2 strade:

  • IDE di Arduino
  • SDK Espressif + IDE Eclipse

Ho provato entrambi, l’IDE di Arduino è molto semplice da installare e utilizzare, ci sono una miriade di librerie già pronte all’uso e tanti tutorial in rete. come contro non abbiamo a disposizione il correttore di sintassi e i collegamenti automatici alle funzioni.
Se vogliamo a disposizione un vero e proprio ambienti di sviluppo con tutte le comodità che ne derivano io consiglio di usare Eclipse.

Setup SDK e toolchain

Per scrivere il firmware di un modulo ESP8266 la casa madre ci mette a disposizione 2 alternative:

  • SDK basato su FreeRTOS
  • SDK senza RTOS

Come si può intuire, il primo SDK è basato sul sistema operativo FreeRTOS, utilizzando questa tipologia avremmo a disposizione le funzionalità di un sistema operativo embedded vero e proprio: Task, semafori, mutex etc…
La seconda tipologia non è basata su nessun sistema operativo, è più leggera da eseguire e genera solitamente codice più compatto.
Teoricamente potremmo scrivere lo stesso firmware sia con che senza sistema operativo, ma in modo diverso.
Io utilizzo SDK RTOS, come prima cosa creiamo una cartella dove scaricheremo il Software Development Kit, apriamo un terminale nella nostra home directory e digitiamo

mkdir ESP8266
cd ESP8266
mkdir SDK
cd SDK
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git

Poi dobbiamo scaricare anche la toolchain necessaria alla compilazione:

wget https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz
tar -xzf xtensa-lx106-elf-linux64-1.22.0-88-gde0bdc1-4.8.5.tar.gz

Ora abbiamo a disposizione tutto quello che ci serve per procedere alla compilazione di un progetto di esempio.

Compilazione di esempio

Copiamo un progetto di esempio nella cartella ESP8266, che useremo come cartella base per i nostri progetti:

cd ..
cp -r SDK/ESP8266_RTOS_SDK/examples/get-started/project_template .

A questo punto dobbiamo esportare nelle variabili di ambiente la variabile IDF_PATH, che rappresenta la cartella dell’SDK e aggiungere alla variabile PATH il percorso della toolchain in modo da poter utilizzare il compilatore.

export IDF_PATH=/home/luca/ESP8266/SDK/ESP8266_RTOS_SDK/
export PATH=$PATH:/home/luca/ESP8266/SDK/xtensa-lx106-elf/bin/
make menuconfig

Dopo avere eseguito il comando make menuconfig se tutto è andato a buon fine ci troveremo una finestra come questa:
finestra menuconfig
In questo menu dobbiamo settare la porta seriale utilizzata per comunicare con il nostro ESP8266 entrando nel menu “Serial flasher config” alla prima voce.
Per il resto se non sapete cosa state facendo non toccate nulla.
Ora eseguiamo il comando make e attendiamo la fine della compilazione, ci vogliono pochi istanti; se tutto è andato a buon fine e non otteniamo errori siamo pronti a scrivere il firmware sull’ESP8266, per farlo utilizziamo il comando:

make flash

Questo firmware in particolare non fa nulla di che, serve come base di partenza, ma ora potete sbizzarrirvi e provare gli altri esempi o scrivere il vostro codice.

Creare chiavetta USB bootable avviabile

Quando dobbiamo installare un sistema operativo partendo da zero possiamo seguire diverse strade:

  • Creare un CD/DVD bootable
  • Creare una chiave usb bootable
  • Utilizzare il boot tramite PXE (metodo poco utilizzato)

La soluzione più comoda è sicuramente la creazione di una chiavetta usb bootable partendo dal file iso.
Possiamo trovare facilmente in rete immagini iso sia di Linux che di Windows.

  • Per linux basta andare sul sito della distribuzione che ci interessa, io consiglio Ubuntu (link)
  • Microsoft invece mette a disposizione per Windows 10, Media Creation Tool, un comodo software per il download dell’iso

Ovviamente per quanto riguarda Windows la copia che installeremo andrà attivata con una chiave di licenza acquistabile a parte.

Ora che abbiamo il file iso, non possiamo copiarlo semplicemente sulla pen-drive ma dobbiamo farlo tramite un software ad-hoc.
In rete se ne trovano tanti, ma io trovo molto comodo usare Rufus (download) è leggerissimo e non necessita di setup.

La dimensione minima della chiave usb deve essere almeno 4GB meglio se da 8GB

Dopo averlo avviato saremo di fronte a una finestra come questa
Schermata iniziale Rufus
In dispositivo/unità si vede già che ha rilevato una pen drive da 8GB.
Clicchiamo ora su seleziona e andiamo a prendere il file iso che ci interessa.
Come potete vedere il software capisce in automatico se deve creare una chiavetta bootable con partizione MBR o GPT.
In opzioni di formattazione consiglio di lasciare tutti i parametri invariati.
Ora clicchiamo su AVVIA e confermiamo la message box dove ci avverte che stiamo per cancellare tutti i dati dalla nostra pen drive.
La durata della procedura varia in base alla velocità della vostra chiavetta
e ai dati da scrivere ma ci possono volere anche 15 minuti.
Al termine avrete una chiave usb bootable a disposizione, pronta per il setup del vostro nuovo sistema operativo.

Ubuntu 18.04 spostare la Home su un nuovo hard disk

Può capitare di rimanere a corto di spazio e di volere aggiungere un hard disk, oppure di installare il sistema operativo su un nuovo SSD e di volere mantenere invece la cartella Home sul vecchio hard disk.

Questa operazione è permessa in fase di installazione di Ubuntu, in alternativa se avete già tutto installato dovete seguire questi semplici passaggi.

I vantaggi di avere la cartella home separata sono diversi:

  • Possibilità di reinstallare il sistema operativo senza perdere dati utente
  • Proteggere meglio i dati dell’utente
  • In caso si utilizzi un HDD a stato solido per il sistema operativo possiamo mettere tutto il resto su un HDD meccanico con capacità superiore
ATTENZIONE!!! Prima di ogni operazione raccomando un backup di tutti i dati.

Prima di iniziare a seguire la guida do per scontato che abbiate già un hard disk formattato con la partizione che preferite (ext4 o brtfs) su cui spostare la cartella home di dimensioni maggiori alla attuale cartella home.

Iniziamo montando il nuovo disco rigido con il comando

sudo mkdir /media/home
sudo mount /dev/sdxx /media/home

Dobbiamo sostituire a sdxx il nome della nostra partizione.

Copiamo l’attuale cartella home in quella appena creata in modo da averne una copia esatta sul nuovo disco (questa operazione potrebbe richiedere un po di tempo)

sudo cp -priv /home/[nome utente] /media/home

Mettete al posto di [nome utente] il vostro nome utente

A questo punto buona parte del lavoro è fatto. Dobbiamo dire a Ubuntu di utilizzare la nuova cartella home e per farlo dobbiamo andarlo a scrivere nel file /etc/fstab.
Il file fstab è molto importante per linux e una modifica errata ne impedirebbe l’avvio quindi per prima cosa facciamo una copia di backup.

sudo cp /etc/fstab /etc/fstab.backup

Cerchiamo l’UUID della nostra partizione

sudo blkid /dev/sdxx

Dobbiamo sostituire a sdxx il nome della nostra partizione che contiene la nuova home
Il codice che ci interessa è quello che appare dopo UUID=”xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”, copiamo questo valore.
Apriamo con i privilegi di amministratore il file /etc/fstab

sudo gedit /etc/fstab

il file che si aprirà sara molto simile a questo:

andiamo in fondo al file e aggiungiamo questa riga

UUID=[xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx] /home [tipo ile system] defaults 0 2

dove al posto di [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx] mettiamo l’UUID della nostra partizione che abbiamo recuperato prima e al posto di [tipo ile system] mettiamo il tipo di file system con cui la abbiamo formattata, di solito ext4 o brtfs.

Qui sotto uno screenshot del file fstab come deve venire

Cosi facendo diciamo a Ubuntu di montare la partizione con l’UUID indicato nel percorso /home e abbiamo raggiunto il nostro scopo.
Dobbiamo salvare e riavviare.

Nel caso in cui Ubuntu non riparta con conseguente messaggio di errore avremo la possibilità di ripristinare il file fstab precedentemente salvato digitando da shell il comando

cp -f /etc/fstab.backup /etc/fstab

D’ora in poi tutto ciò che farete nella directory home sara effettuato nella nuova partizione allocata nel disco rigido aggiunto, ma rimane una ultima cosa da fare: per essere precisi dobbiamo cancellare il contenuto della vecchia cartella home contenuta nel nostro primo disco rigido.
Questa operazione non è necessaria ma diventa importante nel caso in cui dovessimo recuperare un po di spazio per l’installazione di nuovi programmi.
Per potere cancellare la vecchia home è necessario fare partire il pc con un disco bootable di Ubuntu ed avviarlo in modalità live.