Sailfish OS è un sistema operativo mobile con kernel Linux, sviluppato da Jolla, una azienda finlandese che progetta, produce e rivende anche telefoni cellulari. Jolla fu fondata dagli sviluppatori di MeeGo nel 2011, quando il progetto fu abbandonato dalla casa madre Nokia.
L’obiettivo di Jolla è quello di creare un’alternativa indipendente e focalizzata sulla privacy ai giganti come Android e iOS, integrando un’interfaccia utente innovativa e basata sulle gesture.
Parte del codice non è open source (es. l’interfaccia utente e il supporto alle app Android), ma è sotto copyright Jolla.
Oltre alle sue applicazioni native, Sailfish può eseguire anche diverse applicazioni Android.
Sailfish OS è ufficialmente supportato solo su pochi dispositivi, come lo Jolla Phone o lo Jolla C2, ma la community ha creato diversi porting per altri device, come il Motorola Edge 30 Neo, ma con alcune limitazioni.
Architettura
Livello hardware
Il livello più basso dell’architettura è rappresentato dall’hardware del dispositivo.
Kernel Linux
Il livello immediatamente superiore è rappresentato dal kernel. Sailfish OS adotta un kernel Linux, ma non necessariamente il kernel Linux standard (o mainline). La ragione di tale scelta risiede nel fatto che i produttori di chipset, come Qualcomm, forniscono insieme ai chip un pacchetto software che include un kernel Linux modificato per garantire piena compatibilità con l’hardware, insieme ai driver e ai moduli binari proprietari.
libhybris
Il livello successivo è costituito da uno strato di adattamento hardware. Il problema di fondo è che i dispositivi mobili non vengono generalmente commercializzati con driver Linux: i driver disponibili sono compilati per l’ambiente Android. La soluzione adottata consiste nell’impiego di una libreria open source denominata libhybris, oggi ampiamente utilizzata da diverse distribuzioni Linux mobile, come Ubuntu Touch.
libhybris funge da traduttore o ponte tra l’ambiente C di Linux e quello di Android, consentendo a Sailfish OS di comunicare con i driver hardware Android forniti dai produttori di chipset.
In generale, Android viene modificato e sono rimossi tutti i processi che non sono necessari quando si esegue una normale distribuzione Linux. Il sistema Android così ridotto viene quindi avviato come container LXC, allo scopo di poter utilizzare i driver hardware di Android.
Il vantaggio di questo approccio è che “funziona tutto”, qualsiasi periferica, poiché vengono riutilizzati i driver Android, senza alcun lavoro di reverse engineering. Il prezzo, però, si paga su due fronti: da un lato l’overhead introdotto dal layer di compatibilità; dall’altro la dipendenza dal kernel fornito dal vendor, spesso vecchio, difficilmente aggiornabile e sostanzialmente insostituibile. Quando il vendor interrompe il supporto, anche il dispositivo smette di beneficiare degli aggiornamenti di sicurezza e delle nuove versioni del kernel.
Altre distribuzioni mobile, come nura (ex postmarketOS), seguono invece la strada opposta: portare il supporto hardware direttamente nel kernel Linux mainline e costruire sopra di esso uno stack interamente basato su Alpine Linux.
La differenza di filosofia è radicale: è l’hardware a dover essere portato, componente dopo componente, nell’ecosistema Linux. È un lavoro molto più oneroso, da affrontare dispositivo per dispositivo.
Middleware
Il livello successivo appartiene propriamente all’ambito Linux. Sono presenti servizi di uso comune in Linux, quali PulseAudio e GStreamer, impiegati per l’elaborazione dei flussi audio, ad esempio in occasione della ricezione di una chiamata. La gestione dei servizi è affidata a systemd, mentre la comunicazione tra i servizi avviene tramite D-Bus. Il formato di packaging adottato da Sailfish OS è RPM, riconducibile all’ambito Fedora e Red Hat.
Il compositor Lipstick
Salendo ulteriormente nello stack, si incontra il livello deputato al rendering sullo schermo. Sailfish OS adotta un compositor proprietario denominato Lipstick. Il compositor non può essere sostituito: in sua assenza, nessun componente della UI di Sailfish OS risulta funzionante. Non è dunque possibile, ad esempio, impiegare KDE Plasma o altri ambienti.
AppSupport
Un ulteriore elemento architetturale (opzionale) di rilievo è Android Window Bridge, componente non open source, che consente l’esecuzione di applicazioni Android. Android viene eseguito come ambiente separato all’interno di un container LXC, riutilizzando il kernel, i driver hardware, senza ricorrere a un’emulazione completa. In particolare, SurfaceFlinger, il componente che in Android invia i buffer video al compositor, li indirizza direttamente a Lipstick, il quale provvede al compositing delle applicazioni Android oltre che di quelle native. Questa soluzione consente, ad esempio, la visualizzazione delle applicazioni Android in formato minimizzato secondo il modello di gestione delle finestre di Sailfish, determinando un livello di integrazione sensibilmente superiore rispetto a una semplice esecuzione in ambiente separato.
Framework applicativo
Il livello successivo è costituito dall’application framework, basato interamente su Qt e QML. QML è un linguaggio dichiarativo per la costruzione di interfacce utente.
Le applicazioni Android vengono eseguite nel proprio spazio separato, il Bionic user space, e non condividono direttamente i processi con le applicazioni di Sailfish OS. Nell’ambito di questo livello è presente anche Gecko, il motore di rendering di Mozilla, necessario per la visualizzazione dei contenuti web. La versione adottata è notevolmente datata e non risulta essere stata aggiornata: tale aspetto costituisce un punto di debolezza dell’architettura, considerata l’essenzialità del supporto ai contenuti web in un sistema operativo moderno.
Con Sailfish OS 5.2 il motore Gecko è stato finalmente aggiornato in modo sostanziale, passando da ESR91 a ESR115. Si tratta comunque di una versione parecchio indietro rispetto alle versioni Firefox moderne.
Confinamento delle applicazioni e permessi
Prima di esaminare il livello dell’interfaccia utente, è necessario considerare il confinamento delle applicazioni e la gestione dei permessi. Tali funzionalità sono gestite tramite Sailjail, fork di Firejail, che definisce una struttura di permessi per l’applicazione in esecuzione, stabilendo quali operazioni essa possa compiere, a quali servizi e a quali dati possa accedere. Il modello di permessi adottato è analogo a quello di Android di alcuni anni fa, di tipo “tutto o nulla”: all’avvio dell’applicazione, l’utente concede tutti i permessi oppure nessuno. Android ha successivamente introdotto permessi maggiormente granulari, che possono essere concessi in modo selettivo e contestuale.
Per quanto concerne il versante Android, l’esecuzione all’interno di container LXC garantisce un livello di isolamento che impedisce alle applicazioni Android di accedere all’intero sistema.
Interfaccia utente e livello applicativo
Silica costituisce l’intero framework e il livello di interfaccia utente dei dispositivi Sailfish OS. Si tratta di un framework peculiare, che conserva numerose impostazioni concettuali risalenti all’epoca di Nokia e fortemente orientato all’interazione gestuale; non essendo open source, costituisce un ulteriore componente proprietaria del sistema. Le applicazioni Android, pur beneficiando dell’integrazione nella gestione delle finestre, mantengono l’aspetto nativo, con un livello di coerenza con l’ambiente Sailfish necessariamente limitato.
Installazione sul Motorola Edge 30 Neo
Il Motorola Edge 30 Neo è un eccellente dispositivo, con caratteristiche moderne come:
- Display AMOLED a 120 Hz
- 8 GB di RAM
- Supporto alle reti 5G
- Supporto Dual SIM
- Una buona batteria da 4.020 mAh
Abilitare la modalità sviluppatore
- Aprire
Impostazioni > About Phone > Build Number - Cliccare 7 volte il campo
Build Number
- Accedere a
Impostazioni > Opzioni sviluppatore - Attivare
OEM UnlockeUSB Debugging
Installazione adb e fastboot
Sulla propria distro Debian (o derivate), eseguire: sudo apt install adb fastboot.
- Collegare il dispositivo al PC via USB
- Eseguire il comando
adb devices, per assicurarsi che il device sia correttamente riconosciuto
adb devices
List of devices attached
ZY22G5F5NJ unauthorized
- Riavviare in fastboot-mode:
adb reboot bootloader
Sbloccare il bootloader
Per sbloccare il bootloader del Motorola Edge 30 Neo:
- Eseguire il comando
fastboot oem get_unlock_data - Il comando restituirà una stringa di caratteri: questo è l’ID del dispositivo
(bootloader) 0A40040192024205#4C4D3556313230
(bootloader) 30373731363031303332323239#BD00
(bootloader) 8A672BA4746C2CE02328A2AC0C39F95
(bootloader) 1A3E5#1F53280002000000000000000
(bootloader) 0000000
- Unire le 5 righe in un’unica stringa senza spazi e senza “bootloader” o “INFO”
- Copiare la stringa ottenuta e incollarla nel campo “Make Sure Your Device Is Unlockable per verificare che il dispositivo possa essere sbloccato
- La
UNIQUE_KEYviene inviata via email - Una volta ricevuta, eseguire il comando per sbloccare il bootloader
fastboot oem unlock UNIQUE_KEY
- Se il comando viene eseguito correttamente, il dispositivo mostrerà una conferma di sblocco
- Al termine, riavviare il telefono col comando
fastboot reboot - Da
Impostazioni > Opzioni sviluppatore, verificare bootloader sia effettivamente sbloccato - Riattivare il Debug USB
Installazione Sailfish OS 5
Di seguito, viene riportata la procedura del team Verdandi.
- Assicurarsi di aver scaricato tutti i file necessari
boot.img
dtbo.img
lineage-22.2-20251005-nightly-miami-signed.zip
logo.bin
sailfishos-miami-release-5.0.0.77-STABLE1.zip
vendor_boot.img
- Collegare il dispositivo al PC via USB
- Eseguire il comando
adb devices, per assicurarsi che il device sia correttamente riconosciuto
adb devices
List of devices attached
ZY22G5F5NJ unauthorized
- Riavviare in fastboot-mode:
adb reboot bootloader - Da qui, eseguire:
fastboot set_active b
fastboot reboot-bootloader
fastboot flash dtbo dtbo.img
fastboot flash vendor_boot vendor_boot.img
fastboot flash boot boot.img
fastboot reboot-recovery
- Dalla recovery di
LineageOS, selezionareFactory Reset > Format data / factory reset - Tornare al menu principale
- Selezionare
Apply update > Apply from ADBper avviare il sideload - Sul computer, eseguire
adb -d sideload /path/to/lineageos.zip
- Al termine, premere
Yesper riavviare in recovery - Verificare che in alto nella schermata di recovery sia indicato
slot a - Flashare
Sailfish OStramite adb sideload:
adb -d sideload /path/to/sailfishos-rootfs.zip
- Tornare in modalità fastboot e flashare il logo personalizzato:
fastboot flash logo /path/to/logo.bin
- Infine riavviare col comando
fastboot reboot
Da pochi giorni é uscita la versione 5.1.0.11, che porta diversi miglioramenti, introducendo finalmente un browser moderno e la possibilità di installare le applicazioni piú recenti.
Questa la schermata home, con anche le app in esecuzione.
Le impostazioni.
Il drawer delle applicazioni.
I permessi richiesti da una applicazione non possono essere concessi granularmente: si concede tutto o nulla.
Aggiornamenti OTA
Utilizzare l’opzione Sailfish OS Updates nelle impostazioni per aggiornare il sistema.
Oppure, da terminale eseguire i seguenti comandi in sequenza:
devel-su ssu re 5.1.0.11
devel-su zypper clean -a
devel-su zypper ref -f
version --dup
reboot
Store
Purtroppo, il principale limite di Sailfish OS è la disponibilità ridotta di applicazioni native, che rimangono tuttora poco numerose.
Il sistema mette a disposizione tre repository principali per il download delle applicazioni:
- lo store ufficiale di Jolla, caratterizzato da un catalogo piuttosto limitato e poco aggiornato. Richiede un account
- Chum, gestito dalla community
- openrepos.net, anch’esso mantenuto dalla community
Fortunatamente, la ROM per Motorola include già Storeman, il client mobile per OpenRepos, e ChumGUI, il client dedicato al repository Chum.
L’installazione dei pacchetti disponibili su Storeman richiede due passaggi. Innanzitutto, è necessario abilitare il repository dell’utente. Questo equivale a dichiarare attendibile l’account dello sviluppatore in questione. Solo dopo aver abilitato il repository è possibile installare le applicazioni dello sviluppatore. In pratica, è sufficiente aprire la pagina dell’applicazione che si desidera installare, scorrere verso il basso e selezionare Enable repository, attendere alcuni secondi, quindi scorrere nuovamente verso il basso e selezionare Install.
Per maggiori informazioni, leggere l’articolo My Sailfish OS Journey: I have my Jolla Phone, what now?
Per utilizzare altre sorgenti di applicazioni, è necessario abilitare l’installazione di software non attendibile nelle impostazioni.
Il sito SailfishOS App Compatibility fornisce un elenco delle applicazioni Android compatibili con Sailfish OS, indicando per ciascuna la corrispondente alternativa nativa. Quando non è disponibile un’alternativa, il sito specifica il grado di compatibilità.
La ROM installata sul Motorola non supporta Waydroid; di conseguenza, non è stato possibile eseguire applicazioni Android. Sui dispositivi ufficiali Jolla, questa funzionalità è fornita da AppSupport, un componente integrato nel sistema operativo. Sono configurati automaticamente Aurora Store, F-Droid e microG. Le applicazioni Android possono essere installate in modo simile a quanto avviene su Android, con la principale differenza che, al posto del Play Store, viene utilizzato Aurora. È sufficiente avviare Aurora, completare la procedura di configurazione e concedere le autorizzazioni richieste. Per accedere allo store è possibile utilizzare l’account anonimo.
App utili
Di seguito alcuni consigli:
- My Sailfish OS Journey: Apps for my daily needs
- kuri: per tracciare l’attività sportiva
- pure-maps
- harbour-tooter: un client per Mastodon
- Whisperfish - Signal
- Sailtrix: client per Matrix
- Yottagram: client Telegram
- BitSailor: client per Bitwarden
- SailWarden
- Peertube Sail
- SailPipe: client per YouTube
- SailReel: client per YouTube
- Syncthing
- Barcode
- Foilauth:OTP Authenticator
- Immich
- Advanced Camera
- FUTO Keyboard (with Swipe and Offline Voice Input), con supporto per lo swipe e la predizione del testo
- Atlantic Browser e sailfish-browser-next153: due buoni browser con adblock integrato e supporto alle estensioni di Firefox
- Harpoon: molte app per Sailfish OS sono pubblicate dai loro sviluppatori su GitHub, Codeberg e simili, al di fuori del Jolla Store. Harpoon avvisa quando è disponibile una nuova versione e la installa, come obtainium su Android
- WhatsUp
Recensione Jolla C2 e Jolla Phone 2026
Per farsi un’idea del OS, coi suoi limiti e i pregi, tornano utili la seguenti review: