Darling porta il software macOS su Linux senza usare una macchina virtuale

Darling su KDE Linux

Per molti utenti Linux il problema non è scegliere la distribuzione giusta, il desktop più bello o il kernel più veloce. Il vero ostacolo può arrivare quando serve utilizzare un programma sviluppato esclusivamente per macOS. In quel momento le alternative tradizionali sono poche: utilizzare un Mac, ricorrere a una macchina virtuale oppure cercare un programma equivalente per Linux.

Darling nasce proprio per affrontare questo problema con un approccio molto particolare. Il progetto open source punta infatti a permettere l’esecuzione di software macOS direttamente su Linux, senza dover avviare una copia completa del sistema operativo Apple all’interno di VirtualBox, VMware o QEMU.

L’idea ricorda molto quella alla base di Wine. Quest’ultimo non esegue Windows all’interno di una macchina virtuale, ma fornisce alle applicazioni le interfacce necessarie per funzionare su Linux. Darling segue una filosofia simile, cercando di ricreare un ambiente compatibile con ciò che un’applicazione macOS si aspetta di trovare.

Il funzionamento è particolarmente interessante dal punto di vista tecnico. Linux utilizza il formato eseguibile ELF, mentre macOS utilizza Mach-O. Darling include quindi un proprio loader capace di gestire i binari Mach-O e di lavorare con il dynamic linker dyld utilizzato dal sistema operativo Apple.

Il progetto deve inoltre affrontare una differenza ancora più importante: Linux e macOS utilizzano kernel differenti. macOS si basa su XNU, mentre Linux utilizza naturalmente il kernel Linux. Darling implementa quindi un livello capace di gestire funzionalità legate alle system call di XNU, comprese componenti BSD e Mach, permettendo al software macOS di interagire con il sistema Linux sottostante.

Un ambiente macOS dentro Linux, ma con importanti limiti

Uno degli aspetti più curiosi di Darling è la possibilità di accedere a un ambiente che riproduce diverse convenzioni tipiche di macOS. Il progetto mette a disposizione directory come /Applications, /Users e /System, creando una struttura riconoscibile per il software progettato per il sistema operativo Apple.

È possibile inoltre avviare una shell Darling tramite il comando darling shell. Da qui alcuni strumenti possono comportarsi in maniera simile alle controparti presenti su macOS. Comandi come uname possono restituire informazioni riferite a Darwin, mentre sw_vers permette di visualizzare un’identità simile a quella di un sistema macOS.

Questo rende Darling interessante anche per chi non ha necessariamente bisogno di eseguire applicazioni grafiche. Il supporto ai programmi da riga di comando rappresenta infatti uno degli ambiti più concreti del progetto. Alcuni strumenti Unix sviluppati per macOS possono essere eseguiti all’interno dell’ambiente Darling e il progetto permette anche di utilizzare Homebrew, sebbene la compatibilità possa variare in base ai singoli pacchetti.

Darling offre inoltre strumenti per lavorare con immagini disco macOS in formato DMG. Un’immagine può essere montata attraverso hdiutil e il relativo pacchetto applicativo può essere trasferito nella directory /Applications dell’ambiente. Questa possibilità è particolarmente interessante perché le applicazioni macOS utilizzano comunemente il formato .app, strutturalmente molto diverso dai tradizionali pacchetti software Linux.

Il progetto può anche sfruttare applicazioni già presenti in un’installazione macOS accessibile sullo stesso computer, grazie alla struttura dei pacchetti applicativi del sistema Apple. Non significa però che qualsiasi programma possa essere copiato e avviato con successo: la compatibilità dipende dalle tecnologie e dalle librerie utilizzate dall’applicazione.

Il principale limite di Darling rimane infatti il supporto alle applicazioni grafiche. Il progetto è ancora in una fase sperimentale sotto questo aspetto e la documentazione segnala che molte applicazioni GUI non funzionano. Software complessi come Xcode nella sua interfaccia grafica, Logic, Final Cut Pro e applicazioni Adobe rientrano tra gli esempi che attualmente non possono essere considerati compatibili.

Questo dipende soprattutto dalla grande quantità di framework e API specifiche utilizzate dalle moderne applicazioni macOS. Un programma grafico non deve semplicemente poter avviare il proprio eseguibile: può dipendere da Cocoa, Metal, CoreAudio, WebKit e numerose altre tecnologie sviluppate da Apple.

Per questo motivo Darling non deve essere considerato come un sostituto completo di macOS. Non offre un desktop Apple completo, non mette a disposizione Finder o una schermata di accesso macOS e non trasforma GNOME, KDE Plasma o un altro ambiente Linux in un desktop Apple. L’obiettivo è molto più specifico: creare un livello di compatibilità capace di eseguire software macOS su Linux.

Anche il supporto hardware rappresenta un’area da seguire con attenzione. La documentazione di compilazione indica attualmente Linux x86-64 come piattaforma supportata, mentre il progetto e la comunità stanno lavorando anche sull’architettura ARM64. L’evoluzione di questo aspetto potrebbe diventare particolarmente importante considerando la diffusione dei processori ARM sia nel mondo Linux sia nella linea Apple Silicon.

Darling rimane quindi soprattutto un progetto da seguire per il suo valore tecnico. La possibilità di caricare binari Mach-O, riprodurre parti dell’ambiente Darwin, gestire software da terminale e tentare di fornire compatibilità con applicazioni macOS dimostra quanto sia complesso costruire un ponte tra due sistemi operativi differenti.

Per l’utente Linux che cerca oggi un sostituto immediato di un Mac, Darling non rappresenta ancora una soluzione completa. Per sviluppatori, appassionati e utenti interessati alle tecnologie di compatibilità, invece, offre un laboratorio particolarmente interessante per capire come software progettato per macOS possa essere adattato all’ambiente Linux.

Lascia un commento