Page 1 sur 1

ControlX 4.3.4 : 1er lancement OS TI-Nspire CX officiel !

Message non luPosté: 13 Déc 2016, 18:25
de critor
Dans un article précédent, notre gestionnaire de démarrage ControlX devenait capable de lancer directement des images d'OS TI-Nspire CX.
Toutefois, nous n'avions pas réussi à lancer d'OS TI-Nspire CX officiel, à cause de deux limitations techniques :
  • dans le contexte de nBoot, il faut obligatoirement une version d'OS 4.0.1 ou plus récente, les autres ne démarrant pas correctement - ce qui veut dire au moins 17Mio une fois l'OS décrypté et décompressé
  • nos programmeurs de mémoire NAND BtMg+nsNandMgr ne permettent pas à date de flasher des images faisant plus de 14Mio
Nous nous étions donc contentés du simili-OS Dummy OS CX pour valider les tests.

Mais les images d'OS utilisent le format officiel TI-Certificate, et ce format a l'avantage de permettre 2 types de compressions, dont une compression légère utilisée par TI pour les images de Boot2 (et Boot1.5) et qui est déjà gérée dans ControlX ! :bj:

Voici donc ce soir :
  • une mise à jour de Dummy OS CX avec un fichier Makefile réutilisable qui permettra de générer deux images d'OS, une brute et une compressée.
    C'est l'outil de compression/décompression d'images TI-Certificate nsBar, mis à jour pour l'occasion avec la gestion de ce cas, qui est utilisé.
  • ControlX 4.3.4 qui accepte désormais les images d'OS compressées.

Cette légère compression nous permet de réduire les images d'OS d'environ 25% :
  • l'OS 4.4.0.431 CX CAS de 19,5Mio à 14,6Mio
  • l'OS 4.3.0.702 CX CAS de 17,3Mio à 13,2Mio
  • l'OS 4.3.0.547 CX CAS de 17,3Mio à 13,2Mio
  • l'OS 4.2.0.532 CX CAS de 17,2Mio à 13,1Mio
  • l'OS 4.0.3.29 CX CAS de 16,9Mio à 12,7Mio
  • l'OS 4.0.2.27 CX CAS de 16,9Mio à 12,7Mio
L'OS 4.4 demeure donc trop gros et ne passe pas. Une piste pourrait être de rajouter dans ControlX la gestion du format de compression PKZIP plus puissant que TI utilise pour ses images d'installation d'OS.

Mais à l'exception de l'OS 4.4, toutes ces images sont maintenant programmables et lançables sur ta TI-Nspire CX CAS ! :bj:


Sur la vidéo ci-dessus, le démarrage chargement de l'OS 4.2 en passant de façon normale par le Boot2 prend 43 secondes.
Le lancement direct via ControlX de l'OS 4.0.3 qui fait quasiment la même taille ne prend lui que 34 secondes - belle progresssion ! :bj:

Un petit reproche est que l'installation automatique de Ndless n'est pas encore gérée dans ce contexte de démarrage.

Aussi exceptionnelle que soit cette fonctionnalité techniquement, elle ne semble pas pouvoir servir à se configurer un multi-Boot d'OS TI-Nspire.
En effet, sur la fin de la vidéo, l'OS 4.0.3 est lancé sans installation, c'est-à-dire avec les fichiers de l'OS 4.2, et on peut remarquer que la plupart des textes système sont alors mauvais.

De plus autre problème plus gros, après 30 secondes la calculatrice redémarre toute seule et réclame un nouvel OS. :#roll#:
La consultation de la console série dans l'émulateur permet de comprendre qu'il s'agit de l'échec d'une vérification de sécurité de TI qui déclenche le code d'auto-destruction de l'OS :
Code: Tout sélectionner
Archive has been modified.
BOOT2 updater: error -18
TOTAL BYTES: 73876
deleteTree(): path /tmp
TI_OS_deleteTree: deleteAllFiles Done!
autodim_power_callback: Stop dim Timer. flags(0x4)
------------------ Module is Gone!!
TouchPad Firmware Revision : 01060000

Created Execution Context
<TI_PCL_Init2> SetSystem Settings   -->
<TI_PCL_Init2> TI_RM_LoadAllStrings -->
<TI_PCL_Init2> TI_UI_IME_Init -->
<TI_PCL_Init2> RegisterC1Widgets -->
<TI_PCL_Init2> TI_GOIO_InitializeGoIO -->
<TI_PCL_Init2> TI_AM_Initialize -->
Product   : 16 (defined in os/inc/deviceinfo.h)
Platform  : 2 (defined in documentmanager/inc/hal.h)
Version   : 3.6.0.337 CE
Build Date: 2013-5-10
TI_PM_DIM_settime: Dim set to 90.
RET - Echo UDP: TI_Echo_UDP_Init called +++
RET - ECHO UDP: EchoUDPListenerThread. Inside Thread +++
TI_PM_DIM_disable: Stop dim Timer.
autodim_power_callback: Stop dim Timer. flags(0x4)
Wireless Status:WCM_Info_GetStatus():SUCCESS
Network Status: SLED is Not Attached
deleteTree(): path /tmp
TI_OS_deleteTree: deleteAllFiles Done!

Mais cela devrait pouvoir se patcher en s'inspirant du travail réalisé dans le contexte de Nlaunchy, le seul bémol étant qu'il n'est à date pas à jour au-delà de l'OS 4.2.



Téléchargements :

Ressources : Tutoriel d'installation + mise à jour ControlX

Re: ControlX 4.3.4 : 1er lancement OS TI-Nspire CX officiel

Message non luPosté: 13 Déc 2016, 18:46
de Hamza.S
belle avancée :bj:
ça ne risque pas de créer une confusion? je veux dire une personne qui a une CX non-CAS, pourrait être tenté par la manipulation et essayer d'installer un OS CAS sur ça machine.
aucune ligne ne précise cette situation. s'il y a des risque ou pas, même pas un avertissement.

Show/Hide spoilerAfficher/Masquer le spoiler
c'est la première chose qui m'ait traversé l'esprit :troll:

Re: ControlX 4.3.4 : 1er lancement OS TI-Nspire CX officiel

Message non luPosté: 13 Déc 2016, 19:00
de critor
Sans patch, ça ne permettra rien de plus que Nlaunch (et même moins, vu qu'on n'a pas droit aux OS 3.x).

Les OS CAS ne marcheront pas sur non-CAS et inversement.
Car depuis la version 3.6, l'OS fait une vérification supplémentaire au démarrage.

Bien sûr on pourrait la patcher. Mais Nlaunchy n'a jamais inclus de tels patchs, et personnellement je suis dans la totale incapacité d'en concevoir.

Re: ControlX 4.3.4 : 1er lancement OS TI-Nspire CX officiel

Message non luPosté: 13 Déc 2016, 20:09
de Lionel Debroux
personnellement je suis dans la totale incapacité d'en concevoir.

Non. Ne te sous-estime pas, d'autant que des infos ont déjà été données publiquement à ce sujet ;)

Tu sais mieux que la plupart des gens comment on détecte un modèle CAS et un modèle non-CAS (port de l'ASIC, contenu d'une certaine zone de la NAND), et les problèmes que cela pose avec certains protos qui ont des particularités. Tout code de l'OS qui utilise les méthodes de détection du type de modèle, ce qui ne se produit qu'à très peu d'endroits et peut être détecté par des méthodes multiples, directes ou indirectes (on peut patcher l'émulateur pour se faciliter encore plus la vie, mais ce n'est pas nécessaire), est un bon candidat.
Tu sais aussi que la décision "est-ce que cet OS est censé tourner sur ce modèle ?" va être prise, d'une façon ou d'une autre, par un test et un branchement. Ce genre de paires se désactive d'au moins quatre façons: inverser la condition du test, (quand le branchement est dans un certain sens) utiliser un NOP ou un des nombreux quasi-NOP, inverser la condition du branchement, rendre le branchement inconditionnel.