dimanche 30 septembre 2012

Karotz - Bootstrap Python Web Server - Deprecated

BootStrap Python WebServer - Deprecated

Note : Une alternative préférable et surtout recommandée consiste désormais à installer la dernière version de la BusyBox avec le daemon httpd intégré. voir http://wizz-cc.blogspot.fr/2012/10/karotz-busybox-update_6.html

On utilisera pour cet exemple les scripts python déjà disponibles dans le système d'origine du Karotz.

Se connecter root puis se positionner sur /usr
# cd /usr
# wget http://karotz.wizz.cc/wizz_iis.tar

décompresser l'archive
# tar xf wizz_iis.tar

Rapatrier les scripts .py sur /usr
# mv www/*.py ./

Lancer le serveur - port 80 par défaut
# python wizz_iis.py [port] &

Lancer son navigateur préféré sur l'ip de son Karotz !



Pour le lancement automatique, ajouter la ligne de commande au script de démarrage /usr/yaffs_start.sh (en fin de fichier)
/usr/bin/python /usr/wizz_iis.py &

jeudi 27 septembre 2012

Karotz - RootFS System Update

Mise à jour du système RootFS

Procédure : se connecter root en telnet - cf post précédent

** New **  : nouvelle mise à jour release r2

se positionner sur /usr/karotz - ce qui permet de conserver les fichiers images rootfs pour une utilisation ultérieure
# cd /usr/karotz

récupérer la dernière image rootfs sur wizz.cc
# wget http://karotz.wizz.cc/rootfs.wizz.120719r1.img.gz
# wget http://karotz.wizz.cc/rootfs.wizz.120719r1.img.gz.md5

vérification du checksum de l'image téléchargée
md5sum rootfs.wizz.120719r1.img.gz
# cat rootfs.wizz.120719r1.img.gz.md5

si les 2 checksum sont identiques alors on peut flasher
# /sbin/flash_eraseall /dev/mtd2
# /sbin/nandwrite -pm /dev/mtd2 rootfs.wizz.120719r1.img.gz

# reboot

Modified : linuxrc, /karotz/etc/passwd, /karotz/etc/inittab, /karotz/scripts/rootfs_update.sh, /karotz/scripts/yaffs_update.sh, etc...


L'accès Telnet de type root est désormais permanent - 2 utilisateurs de type root ont été ajoutés karotz & wizz. Les mises à jour automatiques sont désactivées. On pourra tjs les faire manuellement... à conditions qu'il y en ait de nouvelles ;-)

On peut désormais jouer avec son linux embarqué... Attention qd même à ce que vous faites...

+ Pour autoriser plusieurs sessions telnet simultanées, ajouter un fichier securetty dans /usr/etc avec les lignes pts/0 pts/1 etc...



Pour revenir - si besoin - au dernier système rootfs Violet, suivre la même procédure en téléchargeant l'image Violet 12071900 :

wget http://karotz.wizz.cc/rootfs.violet.120719r0.img.gz
wget http://karotz.wizz.cc/rootfs.violet.120719r0.img.gz.md5




Rappel des partitions sur la nand :

dev:   size            erasesize  name

mtd0: 00040000 00020000 bootloader
mtd1: 00300000 00020000 Kernel
mtd2: 00500000 00020000 ramdisk - / RootFS (ro)
mtd3: 00300000 00020000 kernel rescue
mtd4: 00500000 00020000 ramdisk rescue
mtd5: 00300000 00020000 yaffs rescue
mtd6: 0ea00000 00020000 yaffs - /usr (rw)
mtd7: 000c0000 00020000 mystery box

vendredi 7 septembre 2012

Karotz - RootFS Access


Avant-propos : Le système du Karotz est flashable a l'aide d'une clé usb. On utilisera donc cette méthode pour accéder temporairement à son système et ajouter un accès telnet...

Note : Pour un accès permanent au système par Telnet voir ce post sur la mise à jour du système RootFS.

On ajoutera au script autorun quelques commandes systèmes simples à titre d'exemples, sachant que le telnet nous donne directement un accès root au système :
  • lister l'arborescence des fichiers du système : ls -LR > /mnt/usbkey/dir.txt
  • lister les commandes disponibles de la BusyBoxbusybox >  /mnt/usbkey/bbox.txt
  • extraire les sources des applications installées depuis le store Karotz : tar -cvf /tmp/karotz_apps.tar /usr/karotz/apps/
  • monter le service telnet : /sbin/inetd ... -l /bin/sh
  • monter des partages nfs, etc...
Procédure :
  1. Décompresser le fichier karotz_usb_boot.zip à la racine d'une clé usb
  2. Modifier le script autorun si nécessaire
  3. Insérer la clé derrière le Karotz
  4. Re-démarrer le Karotz (switch off/on) ou envoyer la séquence {"cmd":"reboot"} sur son port série - cf http://wizz-cc.blogspot.fr/2012/09/karotz-tips-and-tricks.html
  5. ... waiting while karotz is working...
  6. Enlever la clé usb (lorsque le script est terminé - led en violet) et analyser les divers fichiers obtenus dans le répertoire dump pour info
  7. Se connecter root en telnet...
  8. Désactiver les mises à jour, etc... cf /karotz/scripts/update_rootfs.sh et update_yaffs.sh
Note : Pour ceux qui utilisent le port usb en interface ethernet, laisser le "sleep 15" à la fin du script pour avoir le temps de débrancher la clé pour remettre le connecteur ethernet... En effet, à la fin de l'exécution du  script de "boot usb", le sytème continue normalement ses séquences pour monter le réseau par l'intermédiaire du script /usr/yaffs_start.sh et surtout /usr/bin/python /usr/scripts/wait_until_connected.py

La version installée d'origine de la BusyBox a été néttoyée... Pas de serveur ftpd, httpd... En revanche, beaucoup de possibilité offerte par python qui est largement utilisé dans le système du Karotz.

On devra donc modifier le système original du Karotz et y installer une version RootFS "améliorée" avec en prime les services ftpd, httpd... en reflashant la partition /dev/mtd2. Voir ce post

samedi 1 septembre 2012

Karotz Appz Katching


Etudier les sources des applications - appz - "hosted" - en javascript - installées sur son Karotz depuis le store - http://www.karotz.com/appz/home.
Note: Wireshark doit pouvoir lire les paquets du karotz sur le réseau local. Dans le cas d'un karotz installé en mode ethernet, l'utilisation d'un hub suffira. Dans le cas d'un karotz installé en wifi, ça peut se compliquer. Pour éviter dans ce cas l'achat d'une carte spéciale onéreuse, installer un router wifi lui même connecté à un hub lui-même connecté à la box internet.

Choisir dans le catalogue des appz publiées une application à installer sur son Karotz : par exemple l'excellent mini Twitter - http://www.karotz.com/appz/app?id=285. Cliquer sur TELECHARGER puis CONTINUER.

Le panneau des Propriétés s'affiche. Le renseigner si besoin.

Lancer la capture Wireshark - start capture on interface: xxx

Dans le panneau des Propriétes de l'appz Karotz, cliquer sur VALIDER

... et une fois l'appz installé sur le Karotz, se rendre dans le log Wireshark pour identifier la ligne :

source: ip_karotz
destination: ici balancer-1933367513.eu-west-1.elb.amazonaws.com - équivalent à apps.karotz.com ip: 176.34.102.180
protocol: http
port: http
info: GET /file/bced9b57-3f2b-46bb-a403-0a5fc25dfe58/1.0.18/get HTTP/1.1

ce qui donne l'url complète pour le téléchargement de l'appz Twitter_mini :  - on ajoute directement le .zip à la fin de l'url -


Renommer le fichier téléchargé en Twitter_mini.zip



De manière générale, l'url des applications zippées disponibles au téléchargement sur le store est de la forme http://apps.karotz.com/file/uuid/version/get[.zip] avec :

 - uuid = API_KEY définie lors de la création de l'application dans le Karotz Lab
 - version : sa version en cours de publication

ex pour Facebookhttp://apps.karotz.com/file/3916ce8c-5471-4738-8dfa-eb0c817e929a/0.0.86/get.zip
ex pour France 80's http://apps.karotz.com/file/777eb209-efc9-4cd4-bb82-7080452d4ffb/1.0/get.zip

Note : Le téléchargement de ces paquets n'est soumis à aucune identification préalable. On les retrouvera d'ailleurs facilement dans son Karotz sous le répertoire /usr/karotz/apps/.

Dans un but instructif et pédagogique, ceci permet ainsi à chacun - débutant ou non - de mieux comprendre le fonctionnement de son Karotz et d'avancer plus rapidement dans le développement de ses propres applications embarquées.