Per le sue dimensioni e per il limitato consumo, il Raspberry si presta volentieri a lavori che non richiedono l'interazione con l'utente tramite lo schermo.
In tal caso potrebbe essere necessario trovare il modo di avviare un programma in automatico all'accensione del Raspberry, in modo che non sia necessario un intervento dall'esterno per eseguire un determinato compito.
Ipotizziamo di trasformare il Raspberry in un semplice allarme per la casa, e di posizionare un relè collegato ad una ricevente radio che attiva/disattiva l'alimentazione sul Raspberry: premendo il telecomando andremo ad eccitare il relè che quindi permetterà alla corrente di alimentarlo... conseguentemente il Raspberry avvierà la procedura di boot, il sistema ed infine il programma che pilota la sirena (più o meno complesso), che magari ci avvisa via mail dell'intrusione da tal porta piuttosto che dalla finestra.
In questo caso vogliamo ovviamente dire al sistema di avviare ad ogni accensione il programma dell'allarme... non abbiamo tempo nè voglia di stare ad avviare manualmente il programma prima di uscire di casa.
A seconda dei casi, il programma potrà essere avviato senza server X o solo in modalità grafica, quindi avremo due differenti procedure.
Avviare un programma dopo il server X:
La gran parte dei programmi che utilizziamo hanno un interfaccia grafica... e come tali, richiedono che il sistema abbia già avviato in precedenza un gestore grafico che sia in grado di supportarli.
Si sta parlando dell'X Window system, disponibile per tutti i sistemi Linux.
Alla luce di questo diventa chiaro come sia indispensabile rispettare una sequenza di avvio affinchè tutto funzioni a dovere: ogni programma (con interfaccia grafica) in esecuzione all'avvio dovrà aspettare che il server X sia pronto, e quindi avviarsi dopo di lui.
Per avviare un programma solo dopo l'avvio dell'X server dovremo procedere in questo modo:
Visto che si sta parlando di modalità grafica, apriamo un terminale.
Creiamo la cartella "autostart" dando il seguente comando:
mkdir ~/.config/autostart
...e all'interno della cartella autostart creiamo un file vuoto:
touch ~/.config/autostart/nomeprogramma.desktop
Chiaramente al posto di "nomeprogramma" potremo mettere qualsiasi nome ci aiuti a riconoscere il file, l'importante è che abbia l'estensione .desktop.
Ora dovremo modificare il file fornendogli le informazioni del programma che ci interessa avviare:
sudo leafpad ~/.config/autostart/
In questo modo si aprirà l'editor di testo predefinito all'interno di Raspbian.
Compiliamo il contenuto del file come segue:
[Desktop Entry]
Name=nomeprogramma
Exec=comando
Type=application
"nomeprogramma" e "comando" saranno le uniche informazioni che dovrete modificare.
Dovrete a questo punto identificare quale comando permette l'avvio da terminale del programma che vi interessa, e inserirlo sotto la voce Exec=, in sostituzione al testo "comando".
Salvate, chiudete l'editor ed il gioco è fatto.
Ad ogni accensione il programma verrà avviato come richiesto.
Avviare un programma che non richiede il server X:
In questo caso andremo a richiedere al sistema di avviare un programma prima della richiesta di login da linea di comando. Il server X sarà quindi disattivato o addirittura assente.
Da linea di comando richiediamo tramite l'editor "nano" la modifica del file rc.local (se non presente verrà creato):
sudo nano /etc/rc.local
Appena prima della linea "exit" inseriamo il programma che vogliamo eseguire. In alternativa è possibile anche richiedere l'esecuzione di uno script python inserendo nel file di testo il comando
python /posizione/dello/script.py
Fatto questo sarà sufficiente salvare, confermare ed uscire.
Al riavvio lo script/programma verrà eseguito.
TIP: Ricordate che entrambi le procedure sono valide su Raspberry come su qualsiasi altra macchina Linux.
Per le sue dimensioni e per il limitato consumo, il Raspberry si presta volentieri a lavori che non richiedono l'interazione con l'utente tramite lo schermo.
In tal caso potrebbe essere necessario trovare il modo di avviare un programma in automatico all'accensione del Raspberry, in modo che non sia necessario un intervento dall'esterno per eseguire un determinato compito.
Ipotizziamo di trasformare il Raspberry in un semplice allarme per la casa, e di posizionare un relè collegato ad una ricevente radio che attiva/disattiva l'alimentazione sul Raspberry: premendo il telecomando andremo ad eccitare il relè che quindi permetterà alla corrente di alimentarlo... conseguentemente il Raspberry avvierà la procedura di boot, il sistema ed infine il programma che pilota la sirena (più o meno complesso), che magari ci avvisa via mail dell'intrusione da tal porta piuttosto che dalla finestra.
In questo caso vogliamo ovviamente dire al sistema di avviare ad ogni accensione il programma dell'allarme... non abbiamo tempo nè voglia di stare ad avviare manualmente il programma prima di uscire di casa.
A seconda dei casi, il programma potrà essere avviato senza server X o solo in modalità grafica, quindi avremo due differenti procedure.
La gran parte dei programmi che utilizziamo hanno un interfaccia grafica... e come tali, richiedono che il sistema abbia già avviato in precedenza un gestore grafico che sia in grado di supportarli.
Si sta parlando dell'X Window system, disponibile per tutti i sistemi Linux.
Alla luce di questo diventa chiaro come sia indispensabile rispettare una sequenza di avvio affinchè tutto funzioni a dovere: ogni programma (con interfaccia grafica) in esecuzione all'avvio dovrà aspettare che il server X sia pronto, e quindi avviarsi dopo di lui.
Per avviare un programma solo dopo l'avvio dell'X server dovremo procedere in questo modo:
Visto che si sta parlando di modalità grafica, apriamo un terminale.
Creiamo la cartella "autostart" dando il seguente comando:
...e all'interno della cartella autostart creiamo un file vuoto:
Chiaramente al posto di "nomeprogramma" potremo mettere qualsiasi nome ci aiuti a riconoscere il file, l'importante è che abbia l'estensione .desktop.
Ora dovremo modificare il file fornendogli le informazioni del programma che ci interessa avviare:
In questo modo si aprirà l'editor di testo predefinito all'interno di Raspbian.
Compiliamo il contenuto del file come segue:
"nomeprogramma" e "comando" saranno le uniche informazioni che dovrete modificare.
Dovrete a questo punto identificare quale comando permette l'avvio da terminale del programma che vi interessa, e inserirlo sotto la voce Exec=, in sostituzione al testo "comando".
Salvate, chiudete l'editor ed il gioco è fatto.
Ad ogni accensione il programma verrà avviato come richiesto.
In questo caso andremo a richiedere al sistema di avviare un programma prima della richiesta di login da linea di comando. Il server X sarà quindi disattivato o addirittura assente.
Da linea di comando richiediamo tramite l'editor "nano" la modifica del file rc.local (se non presente verrà creato):
Appena prima della linea "exit" inseriamo il programma che vogliamo eseguire. In alternativa è possibile anche richiedere l'esecuzione di uno script python inserendo nel file di testo il comando
Fatto questo sarà sufficiente salvare, confermare ed uscire.
Al riavvio lo script/programma verrà eseguito.