In questa guida, andremo alla scoperta di come eseguire le applicazioni x64 (AMD64) su un Raspberry Pi (o qualsiasi altra board con processore ARM) utilizzando il software box64.

Box64 è un software di emulazione dello spazio utente che consente di eseguire applicazioni GNU/Linux x86_64 su un dispositivo ARM64 come i modelli più recenti di Raspberry Pi (dal 3 in poi).

In sintesi, questo software funziona prendendo un’istruzione x64 e convertendolo in un set equivalente di istruzioni ARM64. Box64 fa alcune ottimizzazioni aggiuntive ricompilando dinamicamente il codice x64 in qualcosa che funzionerà meglio su un dispositivo ARM64. Questo software è sviluppato principalmente dallo stesso sviluppatore dietro l’eccellente emulatore x86 chiamato Box86. Se ti piace usare questo emulatore, assicurati di prendere in considerazione la possibilità di donare a ptitSeb per supportare il suo lavoro.

Si prega di notare che per eseguire Box64, sarà necessario utilizzare un sistema operativo a 64 bit come il Raspberry Pi OS 64-bit o Ubuntu Server.

Se si utilizza un sistema operativo a 32 bit, è possibile utilizzare invece Box86, che vi permetterà di eseguire applicazioni x86 sul vostro Raspberry Pi.

Requisiti

  • Raspberry PI 4 e successivi.
  • Scheda SD da almeno 8 GB
  • Connettività internet ethernet/wireless

Preparazione all’installazione di box64

Prima di poter iniziare a eseguire applicazioni x64 sul nostro Raspberry Pi, avremo prima bisogno di prepararlo per compilare il software su cui ci affideremo.

Ci sono un paio di pacchetti che avremo bisogno di installare sul sistema operativo prima di procedere.

1. Si prega di notare che è necessario eseguire un sistema operativo a 64 bit per utilizzare Box64 sul vostro Pi.

Questo software non ti permetterà di eseguire software a 64 bit su un sistema a 32 bit. È puramente per l’esecuzione di software x64 su un sistema ARM64.

2. Assicuriamoci di aver installato gli ultimi aggiornamenti disponibili per il nostro sistema operativo.

Se si esegue Raspberry Pi OS, è possibile eseguire i seguenti due comandi per aggiornarlo:

sudo apt update && sudo apt upgrade -y

3. Una volta che il sistema operativo avrà finito di aggiornarsi, possiamo installare tutti i pacchetti di cui abbiamo bisogno per compilare box64. Digitiamo quindi:

sudo apt install git build-essential cmake -y

In questo caso, dobbiamo installare il pacchetto git in modo da poter clonare il repository da GitHub.

Il pacchetto build-essential contiene un set di software per lo sviluppo tra cui il compilatore stesso, che ci servirà proprio per poter compilare e installare box64 sul nostro Raspberry Pi.

Infine, dobbiamo installare il pacchetto cmake. Questo strumento è richiesto per poter compilare l’emulatore x64 sul Raspberry Pi.

3. Ora che abbiamo i pacchetti necessari installati, recuperiamo il codice sorgente di box64, tramite il seguente comando (versione più recente, potenzialmente unstable):

git clone https://github.com/ptitSeb/box64.git

Se volessimo invece utilizzare una versione più stabile, possiamo controllare l’ultima versione del codice considerato “stable” da qui: Clicca QUI.
E quindi recuperarla con il comando (sostituite a v0.2.6 con l’ultima versione disponibile):

git clone --branch v0.2.6 https://github.com/ptitSeb/box64.git

Compilazione dell’emulatore x64 sul Raspberry Pi

Ora che abbiamo preparato il Raspberry Pi per compilare box64, possiamo andare avanti.

1. Iniziamo spostandoci nella directory in cui abbiamo clonato il codice box64, eseguendo il seguente comando:

cd ~/box64

2. Creiamo la directory aggiuntiva “build” in cui il compilatore memorizzerà le build (il risultato della compilazione, il software finale) di box64 e spostiamoci al suo interno:

mkdir build && cd build

3. All’interno di questa directory, possiamo preparare la compilazione dell’emulatore box64 sul nostro Raspberry Pi, grazie all’uso di cmake che abbiamo installato in precedenza.

Questo comando differisce leggermente in base al modello di Raspberry PI (Raspberry Pi 3, 4 o 5).

Comando per Raspberry Pi 5 (16k Page Size)

Se si utilizza un Raspberry Pi 5 senza Box86 installato, questo è il comando da impartire. Differisce leggermente a causa del fatto che Pi OS utilizza la Page Size a 16K per impostazione predefinita sul Pi 5.

Se si utilizza Box86 è necessario seguire le istruzioni per il Raspberry Pi 4. Box86 non funziona con una dimensione di pagina 16K.

cmake .. -DRPI5ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

Comando per Raspberry Pi 4 o Raspberry Pi 5 (4k Page Size)

Il comando qui sotto genererà la configurazione per compilare Box64 per il tuo Raspberry Pi 4. Questo comando funzionerà anche per un Pi 5 che non utilizza una dimensione di pagina a 16k.

cmake .. -DRPI4ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

Comando per Raspberry Pi 3

Infine, se si utilizza il Raspberry Pi 3, si consiglia di utilizzare il seguente comando per configurare Box64 per il dispositivo.

cmake .. -DRPI4ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

4. CMake genererà quindi il makefile per compilare il software box64 sul nostro Raspberry Pi.

Possiamo usare questo file per compilare l’emulatore x64 sul nostro Raspberry Pi utilizzando il seguente comando:

make -j $(nproc)

Usiamo l’argomento -j per dire al compilatore di utilizzare più processori per compilare il software.

Usando $(nproc)Inseriamo automaticamente il numero di core che il nostro processore ha nel comando.

5. Una volta che il compilatore finisce l’esecuzione, se non ci saranno stati errori, possiamo installare l’emulatore box64 sul nostro Raspberry Pi, tramite:

sudo make install

6. Infine, dobbiamo riavviare il serviziosystemd-binfmt. Il riavvio del servizio dopo l’installazione di box64 consente di permettere al sistema operativo di essere a conoscenza di ulteriori formati binari che adesso sono supportati.

sudo systemctl restart systemd-binfmt

Se si verificasse un errore durante l’esecuzione di questo comando, provare a riavviare il Raspberry Pi, con:

sudo reboot

Eseguire un’applicazione utilizzando box64 su Raspberry Pi

A questo punto, potremo scaricare una qualsiasi applicazione compilata per Linux x64, sul nostro Raspberry Pi. Per verificare che stiamo usando box64, ci basterà visualizzare un messaggio simile al seguente:

Box64 with Dynarec v0.2.6 e42001b built on Apr 21 2024 19:17:26

Subito dopo aver lanciato l’applicazione interessata.

Box64, ovviamente, non è impeccabile, e ci sarà sempre un rallentamento introdotto dal processo di emulazione, conseguentemente non è garantito che funzioni bene al 100% dei casi, in ogni caso il progetto è in continuo sviluppo, quindi casomai ci fossero problemi è possibile segnalarli su GitHub e/o attendere l’uscita di una nuova versione.

È tutto, adesso potremmo riprovare a lanciare l’applicazione x64 che ci interessava eseguire sul nostro dispositivo ARM64. 🙂