dimanche 14 octobre 2012

Karotz Bootstrap JQuery CGI Template

Objectif : installer un template Bootstrap+JQuery+CGI pour le serveur web du Karotz désormais intégré dans la mise à jour de la BusyBox et accéder ainsi à tout son système au travers des scripts cgi en Python et Shell. Ce template sera une excellente base pour le développement des web apps autour du Karotz.

+ une base de simulateur de télécommande pour déclencher les applications hébergés directement depuis son navigateur (reste plusieurs points à approfondir : passage des paramètres des appz, arrêt de l'appz lancée, etc...)

Une fois connecté en telnet sur le Karotz
Installation sous /usr/www - le répertoire racine par défaut du serveur httpd

# cd /usr/www
wget http://karotz.wizz.cc/wizz_www.tar
# tar xvf wizz_www.tar

Vérification et ajustement des droits si besoin
# chmod -R og-w *
# chmod -R +x cgi-bin

Se connecter à l'aide son navigateur sur l'ip de son Karotz

On peut alors lui envoyer des commandes en direct, lancer des musiques, des radios (avec la commande mplayer), allumer ou éteindre la lumière, etc... A chacun d'inventer les scripts dont il a besoin. Enjoy !


Karotz web Server Bootstrap+JQuery+CGI Template
Karotz web Server Bootstrap+JQuery+CGI Template

Google+

samedi 6 octobre 2012

Karotz - BusyBox update : Servers Web & Ftp


Objectif : Installer une version pré-compilée pour ARM de la dernière version stable BusyBox pour bénéficier de commandes supplémentaires et notamment des serveurs ftpd et httpd intégrés. On se passera ainsi des serveurs python ftpd et httpd abordés précédemment et beaucoup moins performants.

Note : La dernière version de Busybox v 1.20.0 est désormais intégrée dans la nouvelle mise à jour du RootFS release r2.

On procède à l'installation du binaire dans /usr/bin dont la partition est modifiable à volonté.

Une fois connecté en telnet sur le Karotz
Installation sur /usr/bin ou sbin au choix
# cd /usr/bin
# mkdir busybox.120

# cd busy*
# wget http://www.busybox.net/downloads/binaries/latest/busybox-armv4tl
# mv busybox-armv4tl busybox
# chmod +x busybox

Vérification de la version
# ./busybox | head

On peut installer quelques liens symboliques si nécessaire
# cd /usr/bin
# ln -s /usr/bin/busybox.120/busybox ftpd
# ln -s /usr/bin/busybox.120/busybox httpd

# httpd --help
# ftpd --help

On démarrera ensuite les serveurs Web httpd et Ftp ftpd avec inetd.

Exemple de script wizz_start.sh à appeler à la fin de yaffs_start.sh

#!/bin/bash
#
# Start ftpd & httpd daemon
WIZZ_INETD_MORE=/tmp/wizz_inetd_more.conf
echo "21 stream tcp nowait root /usr/bin/ftpd ftpd -w /usr" > $WIZZ_INETD_MORE
echo "80 stream tcp nowait root /usr/bin/httpd httpd -i -c /usr/httpd.conf -h /usr/www" >> $WIZZ_INETD_MORE
/sbin/inetd $WIZZ_INETD_MORE

Le répertoire HOME du serveur Web est ici /usr/www.

Les scripts cgi/system exécutables - #!bin/sh ou #!/usr/bin/python - (chmod +x ...) doivent être posés dans /usr/www/cgi-bin

Ajouter un fichier de conf pour le serveur Web httpd dans /usr/httpd.conf

# define the server root. It will override -h
# H:/usr/www
# Allow address from 196.168.0.0
A:192.168.
A:127.0.0.1
# Deny from other IP connections
D:*
# 404 (not found) error page
# E404:/usr/www/404.html
# Show index.html when a directory is requested
# I:index.html

Note : Voir aussi le post sur le template Bootstrap+JQuery+CGI.

Cf docs :
 - http://www.busybox.net/downloads/BusyBox.html
 - http://git.busybox.net/busybox/tree/networking/httpd.c

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