Guide

Comment fonctionnent les deux moitiés, et ce que chacune demande : une VM sur votre matériel, ou Linux sur le téléphone lui-même.

wisq fait deux choses distinctes, et savoir laquelle vous voulez décide de tout le reste. Atteindre une machine virtuelle qui tourne sur un Mac, un PC ou un NAS donne un bureau complet à la vitesse de cette machine. Démarrer Linux sur le téléphone lui-même donne un shell sans le moindre réseau. Ni l'un ni l'autre n'exige de jailbreak.

Distant : une VM sur votre matériel

wisq parle deux protocoles de console. RFB 3.8 — VNC — atteint tout ce qui expose une console VNC : QEMU, libvirt, VirtualBox, Proxmox, un Raspberry Pi sous x11vnc, un Mac qui partage son écran. SPICE atteint ce que les hôtes libvirt publient plutôt d'habitude, et transporte davantage : le son dans les deux sens, le presse-papiers, et ses propres codecs d'image.

Deux façons d'obtenir une console à laquelle se connecter
qemu-system-x86_64 -m 2048 -vnc :1 -hda disk.qcow2

# ou exposer un affichage qui existe déjà
x11vnc -display :0 -rfbport 5901
  1. Dans wisq, touchez + et nommez la machine.
  2. Saisissez l'hôte et le port. Un affichage VNC :1 signifie le port 5901 — le port vaut 5900 plus le numéro d'affichage.
  3. Saisissez le mot de passe si le serveur en demande un ; il est rangé dans le trousseau de l'iPhone, jamais dans la liste des machines.
  4. Touchez la machine pour vous connecter.

L'agent : allumer une VM avant de s'y connecter

Sans agent, wisq fonctionne — il faut simplement que la VM soit déjà démarrée. L'agent est ce qui transforme « un client VNC de plus » en « mes machines, depuis mon téléphone » : toucher une VM éteinte la démarre, attend sa console et s'y connecte sur le port qu'elle a obtenu.

Avec --service, il installe un job launchd sur macOS ou une unité systemd utilisateur sur Linux, et survit donc à un redémarrage. Avec --demo, il sert deux VM factices aux transitions d'état réelles : de quoi vérifier le côté téléphone avant de le pointer vers un hyperviseur.

Au premier lancement, le démon imprime un lien d'appairage par adresse joignable, et un QR code si qrencode est installé. Ouvrez-en un sur l'iPhone — scanné ou collé — et wisq arrive sur l'écran d'import, adresse et jeton déjà remplis.

Ce que le démon imprime
wisq-agent en écoute sur le port 7442 (virsh)
jeton : k3f9x2m8q1w7e4r6t5y0u8i2o4p6a1s3
appairage :
  wisq://agent?host=nas&port=7442&token=…&name=nas

Le jeton est généré une fois et conservé dans ~/.wisq-agent/token, lisible par son seul propriétaire. Révoquer un accès, c'est supprimer ce fichier et relancer le démon.

Local : Linux sur le téléphone lui-même

La machine locale est un ordinateur RISC-V interprété — un hart rv32ima, 64 Mo de RAM, un UART 8250, un minuteur CLINT. Elle amène un vrai noyau Linux jusqu'à l'invite de connexion en une fraction de seconde, sans réseau et sans hôte.

  1. Procurez-vous une image de noyau rv32ima nommu. Le projet mini-rv32ima en propose des prêtes à l'emploi.
  2. Placez-la où l'app Fichiers peut la lire — iCloud Drive, ou Sur mon iPhone.
  3. Dans wisq, ouvrez l'écran de machine locale et importez l'image.
  4. Touchez démarrer. La console apparaît au fil de ce que le noyau écrit sur son UART.

L'horloge virtuelle avance avec les instructions exécutées et non avec le temps réel : la même image démarre donc de la même façon sur chaque appareil — ce qui est aussi ce qui rend ce démarrage testable en intégration continue.

Quand quelque chose ne marche pas

L'écran reste noir après connexion
Le serveur a accepté la connexion mais n'envoie pas de mise à jour. Vérifiez que le serveur VNC est attaché à un affichage qui existe — un QEMU sans -vga se connecte et ne montre rien.
Les couleurs sont fausses
Signalez-le. wisq négocie un format de pixels pour le rendu au lieu d'accepter celui du serveur : un décalage est un défaut de notre côté, pas un réglage du vôtre.
L'agent dit qu'un domaine est introuvable
Le démon interroge libvirt via virsh : il voit exactement ce que voit `virsh list --all`, et sous l'utilisateur qui le fait tourner. Une VM définie pour root est invisible à un démon lancé sous votre compte.
Le lien d'appairage ne fait rien
Le lien n'ouvre wisq que si l'application est installée. Sur un téléphone neuf : installez d'abord, scannez ensuite.
Le noyau local démarre puis cesse d'écrire
C'est généralement l'invite de connexion, qui se termine sans saut de ligne. Tapez dedans — la console fonctionne dans les deux sens.