Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

iSH: shell Linux su iOS

iSH porta la shell Linux sui dispositivi iOS.
iSH: shell Linux su iOS
iSH porta la shell Linux sui dispositivi iOS.
Link copiato negli appunti

Con l'enorme diffusione dei device Android e delle board ARM low cost, diversi utenti sono ormai abituati ad avere sempre con se una shell Linux funzionante. Cosi come un coltellino svizzero, il terminale del Pinguino è da sempre uno degli alleati principali di programmatori e sistemisti. Inoltre, con l'introduzione di WSL in Windows 10 la shell Linux è ora presente in gran parte dei PC sparsi per il mondo.

Tuttavia esistono numerosi device che non dispongono di un sistema di shell Linux "nativo", come ad esempio i dispositivi animati da iOS che per precise scelte di Apple non vengono distribuiti con tali funzionalità per gli utenti standard.

Tuttavia la community open source ha già pronta una valida alternativa: iSH. Questo progetto permette di ottenere un Linux shell environment in locale sul proprio device iOS, il tutto tramite un usermode x86 emulator. Non si tratta dunque di una forma d'implementazione diretta di una shell Linux su iOS, ma appunto di un ambiente emulato. Gli sviluppatori hanno deciso di rilasciare tutto il codice sotto licenza GPLv3 ed è possibile accedere ad esso tramite Github.

Il progetto è ancora in fase di beta testing e i membri del team di sviluppo sono aperti a nuovi contributi. L'obbiettivo è distribuire iSH principalmente tramite l'App Store di Apple, ma i beta tester possono realizzare anche un pacchetto su MacOS o su Linux. Per la compilazione servono:

  • Python3;
  • Ninja;
  • Yarn (solo se si sta eseguendo la build per iOS);
  • Meson (pip install meson);
  • Clang ed LLC (brew install llvm / sudo apt install clang lld).

iSH si basa sull'Alpine Linux filesystem, in buona sostanza si tratta del file system Linux incapsulato in un container. Gli sviluppatori usano una tarball minirootfs per architettura i386 disponibile direttamente dal sito ufficiale della distribuzione, fork di Arch Linux, e tramite il loro script Python (fakefsify.py) configurano il container in modo che si possa interfacciare con la shell Linux.

Per creare il build environment è necessario prima di tutto avviare meson, il build system vero e proprio, successivamente è possibile eseguire ninja nella directory build creata da meson, un altro build system che si occupa di velocizzare il processo di compilazione. Infine, per avviare la compilazione vera e propria basta aprire Xcode, o il proprio IDE, selezionare il progetto e cliccare su "run".

Il progetto include anche un compilatore JIT (just-in-time) completamente realizzato in assembly, tale sistema permette un tipo di compilazione, conosciuta anche come traduzione dinamica, che viene eseguita durante l'esecuzione del programma e non nei momenti precedenti come con i compilatori standard.

Tecnicamente non si tratta di un JIT "tradizionale", visto che non c'è un vero e proprio machine code target, al contrario il JIT di iSH genera array di pointers to function chiamati gadget. Ogni gadget termina con una tailcall per evocare la funzione successiva. Grazie a tali interventi è stato possibile garantire delle performance notevolmente migliori rispetto alla semplice emulazione, di riflesso il codice assembly necessita di un importante lavoro di manutenzione.

Via iSH

Ti consigliamo anche