Raspberry OS – Come caricare una pagina web al boot

Raspberry OS boot

Le ultime versioni di Raspberry OS hanno reso l’esecuzione automatica al boot di un’applicazione, specie se grafica, più impegnativa.

“Squadra (o macchina) che vince non si cambia”. Questo adagio, diffuso in ambito sportivo, risulta quanto mai attuale anche nel mondo IT. Purtroppo non sempre è possibile garantire la compatibilità verso il basso, e l’automatismo li aggiornamenti ha portato molti sviluppatori a trascurare questa regola basilare.

Raspberry OS non fa eccezione. Le nuove versioni del sistema, ottimizzate per il PI 5 o 500, sono state profondamente manipolate per consentire ottimizzazioni di sistema. Dal momento che tali upgrade mi hanno provocato oltre tre ore di mal di capo per cercare di capire cosa non andasse, ho pensato di condividere con voi le mie traversie, onde evitare che altri utenti possano trovarsi in difficoltà.

Il problema

Mi è stato chiesto di creare un sistema basato su Raspberry OS che al boot procedesse al caricamento automatico di una pagina web, eseguendone il refresh ogni tot minuti.

Un progetto semplicissimo, che utilizza il lancio del browser in kiosk mode. Qualcosa del genere:

Ma quale è stato il mio stupore quando noto che il sistema non ha un file rc.local predefinito nella directory /etc…

“Niente, di grave”, mi dico, “creiamolo da zero.” Touch rc.local, inseriamo il comando da eseguire, chmod +x, reboot… e NULLA.

Provo ad aggiungere qualche linea di echo per il logging, e noto che il file viene effettivamente eseguito, ma il comando non sortisce l’effetto  desiderato.

Girando per Internet scopro che il nuovo Raspberry OS tenderà ad abbandonare la procedura di start attraverso rc.local, in favore di altre procedure più complesse, tipicamente la creaione e lo start di servizi da /etc/systemd/system. Ma anche in questo caso sono sortye difficoltà: il servizio è descritto in  maniera sintsatticamente corretta, viene correttamente abilitato (enable) e lanciato (start), maquando viene richiesto uno status, viene riportato un messaggio di errore legato alla configurazione del server X-Windows.

Malefici aggiornamenti

Le modifiche di Raspberry OS rispetto alle versioni precedenti sono sostanzialmente due, strettamente correlate:

  1. Modifiche alla procedura di boot
  2. Modifiche al server grafico Weyland

Come abbiamo visto, l’uso di rc.local per lanciare una pagina web non sortisce effetto alcuno. Ho quindi provato a creare un service apposito, abilitarlo e farlo eseguire in automatico, ma con lo stersso risultato finale: nulla. Ho anche pensato di usare un cronjob, ma conscio dei diversi problemi di compatibilità di Raspberry OS con altre distribuzioni (tipo Ubuntu) riguardo a cron, ho cercato qualcos’altro.

Come anticipato, dopo 40 anni di onesto lavoro, X-Window server di Linux è stato abbandonato in favore di un sistema più leggero e performante, la tecnologia Weyland.

La tecnologia Weyland

Wayland offre molti vantaggi rispetto a X, in particolare in termini di prestazioni. In X, due applicazioni distinte contribuiscono a disegnare una finestra:

  • il server di visualizzazione crea finestre sullo schermo e fornisce alle applicazioni uno spazio in cui disegnare il loro contenuto;
  • il gestore delle finestre posiziona le finestre l’una rispetto all’altra e le decora con barre del titolo e cornici.

Wayland combina queste due funzioni in un’unica applicazione chiamata compositore. Le applicazioni in esecuzione su un sistema Wayland devono comunicare con un solo elemento, invece di due, per visualizzare una finestra. Come si può immaginare, questo è un modo molto più efficiente per disegnare le finestre delle applicazioni.

Wayland offre anche un vantaggio in termini di sicurezza. In X, tutte le applicazioni comunicavano avanti e indietro con il server di visualizzazione; di conseguenza, qualsiasi applicazione poteva osservare qualsiasi altra applicazione. Wayland isola le applicazioni a livello di compositore, quindi le applicazioni non possono osservarsi a vicenda.

Il sistema è backward compatible, e può (anzi, dovrebbe) essere aggiornato sui modelli PI 3 e 4. Non risultano rallentamenti sui vecchi modelli con la nuova piattaforma.

La soluzione

Smanettando per cercare informazioni sulla nuova tecnologia Weyland, mi imbatto in un articolo che sembra fare al caso mio:

Per avviare automaticamente un browser al boot di Raspberry OS, si può creare un file avviatore nella cartella ~/.config/autostart. Per Chrome, ad esempio, il comando da inserire è chromium-browser.

Metodo tramite file avviatore:

  1. Crea il file: Crea un nuovo file nella cartella ~/.config/autostart. Il nome del file dovrebbe terminare con .desktop (es. firefox.desktop).
  2. Aggiungi il contenuto: Inserisci il seguente contenuto nel file, sostituendo <percorso_del_browser> con il percorso effettivo dell’eseguibile del browser, se necessario:

Se necessario, rendi eseguibile il file con il comando chmod +x ~/.config/autostart/firefox.desktop.

Dopo aver seguito uno di questi metodi, il browser scelto verrà avviato automaticamente in modalità fullscreen kiosk all’avvio di Ubuntu.

A questo punto, se stai visualizzando una pagina i  cui contenuti potrebbero varfiare nel tempo, potrai caricare (se occorre) una estensione per chromium (o per il browser scelto) che esegua il reload automatico della pagina. Io ho utilizzato Autorefresh.

In questo articolo abbiamo visto come lanciare una pagina webal boot di Raspberry OS dotato della nuova tecnologia Weyland. Fateci sapere sel’arrticolo vi è stato utile.

 

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

 

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.