Commit graph

9 commits

Author SHA1 Message Date
Votre Nom
44fd7c282b run-qemu.sh : SSH pubkey vers /home/root/.ssh/, pas /root/.ssh/
Bug détecté en runtime : sshd OpenSSH 9.8 sur Redox cherche
authorized_keys dans le homedir de l'utilisateur, qui sur Redox est
/home/root/ et NON /root/ comme sur Linux. Le déploiement précédent
mettait le fichier au mauvais endroit → ssh tombait toujours en password.

Fix : injecter dans \$MOUNT/home/root/.ssh/authorized_keys avec perms
700/600. Le path Linux /root/.ssh/ est laissé non-touché (vide ou
inexistant).

Validé : après ce fix le `ssh root@localhost -p 8022` connecte directement
sans password.

Leyoda 2026 – GPLv3
2026-05-16 17:27:35 +02:00
Votre Nom
3fe50208a1 run-qemu.sh : injecter pubkey(s) hôte dans /root/.ssh/authorized_keys
Permet ssh -p 8022 root@localhost depuis l'hôte sans password une fois
openssh installé et sshd lancé dans Redox. Scanne ~/.ssh/ de l'hôte pour
id_ed25519.pub / id_rsa.pub / id_ecdsa.pub, append toutes celles trouvées
dans /root/.ssh/authorized_keys avec permissions correctes (700 et 600).

Bénéfice : le copier-coller depuis CachyOS vers Redox devient trivial
via la session SSH, plus besoin de retaper les commandes dans la fenêtre
QEMU graphique sans copier-coller.

Warning explicite si aucune pubkey hôte n'est trouvée (ssh par password
sera toujours possible, juste moins pratique).

Leyoda 2026 – GPLv3
2026-05-16 17:20:31 +02:00
Votre Nom
0230d80e6c run-qemu.sh : ajouter net=redir pour exposer guest SSH (22→8022 hôte)
Permet ssh root@localhost -p 8022 depuis l'hôte vers le guest Redox une
fois qu'openssh y est configuré (host keys + sshd_config + sshd lancé).

Le hostfwd 8022→22 est déjà câblé dans mk/qemu.mk côté Redox-src mais
gated par `make qemu net=redir`. On l'active toujours dans run-qemu.sh
car le coût est nul si on ne se connecte pas en SSH.

Autres ports forward bénéficiaires (cf mk/qemu.mk) :
- 8080 → 80 (HTTP)
- 8081-8083, 64126 (gdbserver, autres)

Pas de changement comportemental côté compositor ; juste la préparation
réseau pour atteindre un futur sshd Redox.

Leyoda 2026 – GPLv3
2026-05-16 16:40:18 +02:00
Votre Nom
6fe321466c Phase 13.2.b.4 — scripts ion raccourcis pour les tests en QEMU
Pour éviter de retaper 3 lignes à chaque test runtime dans la fenêtre
QEMU graphique (sans copier-coller possible), ajout de 3 scripts ion
prêts à l'emploi dans tools/redox-scripts/ :

- test-sw    : compositor + simple_window client (phase 13.1.b)
- test-subc  : compositor + subcompositor client visuel (phase 13.2.b.3)
- test-out   : compositor + wl_output gating test (phase 13.2.a)

Tous suivent le même pattern :
  rm -f /tmp/redox-wl-comp.sock
  redox-wl-compositor &
  sleep 1
  <client>

run-qemu.sh copie maintenant tout tools/redox-scripts/* dans /usr/bin
de l'image (cp -p pour conserver +x), donc le user peut taper juste
`test-subc` ⏎ dans le shell ion Redox.

Shebang #!/usr/bin/ion : Redox sait exécuter le script directement
(le chemin /usr/bin/ion est stable).

Leyoda 2026 – GPLv3
2026-05-16 14:33:27 +02:00
Votre Nom
1dab6ff51b Phase 13.2.b.3 — client de test visuel pour wl_subsurface
Nouveau crate redox-wl-test-client-subcompositor : client Wayland qui
crée un toplevel parent 300×200 bleu nuit avec bordure noire, et lui
attache une subsurface 60×60 rouge à l'offset (50, 50).

Si le rendering 13.2.b.2 fonctionne, on doit voir visuellement dans la
fenêtre QEMU : la fenêtre bleue avec un carré rouge incrusté en haut-
gauche, exactement 50px depuis le bord du parent.

Cycle complet :
1. Bind 5 globals : wl_compositor, wl_shm, xdg_wm_base, wl_seat,
   wl_subcompositor (le client échouera si compositor manque l'un d'eux)
2. Parent xdg_toplevel avec ack_configure
3. SHM buffer 300×200 bleu + attach + commit parent
4. wl_compositor.create_surface pour le child
5. wl_subcompositor.get_subsurface(child, parent) + set_position(50,50)
   + set_desync (pour qu'un commit child suffise à rendre les changements)
6. SHM buffer 60×60 rouge + attach + commit child
7. Re-commit parent (force redraw)
8. Event loop avec ESC → exit propre

Reprend le pattern d'event-loop tolérant Interrupted/BrokenPipe de la
phase 13.1.b (5e adaptation Redox côté client).

run-qemu.sh copie maintenant aussi ce binaire dans /usr/bin de l'image
(optionnel, skip silencieux si non compilé).

Les 2 tests natifs continuent de PASSer en non-régression.

Leyoda 2026 – GPLv3
2026-05-16 14:19:53 +02:00
Votre Nom
7413745dbe 🎉 Phase 13.2.a — wl_output v3 complet (gating v1/v2/v3 validé en natif)
Dette protocolaire transversale comblée : wl_output n'était pas déclaré
comme global, plusieurs toolkits client (sctk, GTK, Qt) le considèrent
implicitement requis. Maintenant exposé à v3 avec gating conforme :

- geometry, mode : envoyés à toutes les versions (>= 1)
- scale : seulement si bind >= 3 (gating conservateur)
- done : seulement si bind >= 2

Mode flags = CURRENT | PREFERRED, refresh 60 000 mHz, scale_factor=1,
transform Normal, subpixel Unknown, make=Redox, model=redox-wl-output:0.
Position (0,0), single output, taille pixel issue de screen_w/screen_h
(setté par set_screen_size au boot compositor).

Nouveau crate de validation : redox-wl-test-wl-output. Deux niveaux :
1. Client autonome pour test runtime dans QEMU (bind aux 3 versions,
   dump events, PASS/FAIL via exit code)
2. Test natif (cargo test, tourne sur l'hôte sans QEMU) qui simule
   serveur+client en-process via UnixStream::pair() et valide les 11
   assertions du gating. Vérifié PASS le 2026-05-16 sur CachyOS.

Le test natif sert de garde-fou anti-régression pour CI ultérieur. Plus
besoin de relancer QEMU pour valider ce path.

run-qemu.sh : copie maintenant aussi le test client si compilé (skip
silencieux sinon).

Leyoda 2026 – GPLv3
2026-05-16 12:51:11 +02:00
Votre Nom
095d7e5550 Phase 13.1.c — rapport upstream bug B.2 ion + warn image étroite (B.4)
B.2 (ion page fault) : pas fixable dans ce repo. Source d'ion clonée
depuis upstream et inspectée : pas de commit récent visant ce pattern
de crash, binaire stripped sur l'image (impossible de mapper RIP=0x2335ae
à une fonction sans non-stripped build). Rapport upstream-ready rédigé
dans docs/phase13-1-c-ion-bug-b2-upstream.md, à coller sur
gitlab.redox-os.org/redox-os/ion quand on aura un compte.

Bonus diagnostic noté : warning relibc « Cancellation for unknown id »
apparaît juste avant le crash ion, peut être lié à un side-effect dans
procmgr (à investiguer côté relibc aussi).

Workaround documenté pour utilisateurs : quitter les clients background
AVANT le serveur Wayland (ESC sur le client, puis Ctrl+Q sur le compo).

B.4 (image étroite) : run-qemu.sh warn maintenant si harddrive.img <
4 GiB, avec les commandes de resize prêtes à copier-coller. Continue
sans bloquer (image actuelle de l'utilisateur fait 10 GiB, no-op pour
notre setup, mais utile pour quelqu'un qui clone le repo et utilise
l'image desktop par défaut de Redox.)

Leyoda 2026 – GPLv3
2026-05-16 11:48:14 +02:00
Votre Nom
18391c85f7 🎉 Phase 13.1.b — simple_window upstream validé runtime sur Redox
4 bugs identifiés et corrigés grâce au client tiers :
- ESC mangée par le compositor au lieu d'être forwardée (raccourci compo
  déplacé sur Ctrl+Q + tracking ctrl_held)
- Cursor accumulait les deltas PS/2 hors-écran (ajout screen_w/h +
  clamp_cursor + set_screen_size au boot)
- Keycode envoyé scancode+8 au lieu d'evdev brut (bug racine — le +8
  est entre evdev et X11, pas entre PS/2 et evdev)
- Event loop client ne tolérait pas Interrupted/BrokenPipe transitoires
  → FAIL au lieu de PASS sur sortie normale (5e adaptation Redox côté
  client, upstream-compatible)

Plus : tick log compo passé en debug! pour silencer la console série,
run-qemu.sh durci (check /dev/fuse, IMAGE/REDOXFS overridables).

6/6 checkpoints 13.1 verts. Bugs secondaires (curseur stuck en bas-droite,
ion page fault sur broken pipe d'un job background) listés dans le doc
pour follow-up en 13.1.c.

Leyoda 2026 – GPLv3
2026-05-16 10:59:35 +02:00
Votre Nom
0d8032b5ff Phase 13.1 — script run-qemu.sh pour le test runtime
Bootstrap automatique des étapes 1 et 2 de la procédure 13.1 :
mount harddrive.img via redoxfs (FUSE) → copy compositor + client
dans /usr/bin → umount → exec make qemu.

Sécurité :
- set -euo pipefail
- trap EXIT/INT/TERM garantit l'umount même sur Ctrl+C
- pré-vérifs sur les 4 fichiers requis (image, redoxfs, 2 binaires)
- mountpoint -q + boucle 5 s pour confirmer le mount FUSE
- sync avant umount

Options :
- ./run-qemu.sh             cycle complet
- ./run-qemu.sh --no-qemu   juste mount + copy + umount (CI / itération)
- ./run-qemu.sh --help      affiche le bloc de doc en tête de fichier
- REDOX_SRC=... override le chemin du checkout redox-src

Une fois Redox bootée : Ctrl+Alt+F2 → root/password →
RUST_LOG=info redox-wl-compositor & sleep 1 ; redox-wl-real-client-simple-window

Leyoda 2026 – GPLv3
2026-05-15 08:37:57 +02:00