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

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.

dimanche 22 juillet 2012

Karotz Kmd - exemple en C#

Suite aux nombreuses demandes, voici donc la procédure simplifiée pour écrire des .exe pour piloter le Karotz en mode local.

Nul besoin d'installer l'environnement msVisual Studio ou C#, on utilisera le notepad++ et le compilateur .NET en ligne de commande...

Rappel : Envoyer en direct des ordres simples au Karotz sans passer par la procédure normale de développement et d'installation d'applications (appz) sur le store Violet. Un simple .exe qui s'exécute en mode console (ms-dos) et permet ainsi d'exécuter des tâches automatisées et/ou de lancer des batches (.bat)

Pré-requis : .NET v3.5 au minimum
voir http://wizz-cc.blogspot.fr/2012/06/karotz-kmd-kommand-line-interface.html

Source_full.zip

  • Récupérer les bibliothèques Google.ProtocolBuffers : (inclues dans le .zip). Pour info cf Google proto buf.
  • Récupérer les sources en C# du client Karotz : (inclus dans le .zip). Pour info se reporter au post de Richard Lavoie pour quelques notions complémentaires très intéressantes.
  • Coder son premier exemple : voir le fichier kz.cs dans le .zip. Ne pas oublier de changer l'ip de votre karotz dans le source... Toutes les fonctions utilisables sont définies dans le fichier KarotzClient.cs.
  • Compiler (pour .NET v3.5)
sous dos : penser à indiquer le chemin du compilateur dans la varaible %path%; en fonction de la version .NET choisie. Ici : set path=%path%;C:\WINDOWS\Microsoft.NET\Framework\v3.5
csc.exe /out:kz.exe /target:exe /reference:v3.5/google.protocolbuffers.dll /reference:v3.5/google.protocolbuffers.serialization.dll /warn:2 /debug- kz.cs KarotzClient.cs VoosMsgCallback.cs VoosMessage.cs
  • Exécuter : sous dos, taper kz.exe (ou double-cliquer sur l'exe) et... le karotz exécute !
  • Distribuer : le fichier Google.ProtocolBuffers.dll doit être fourni avec l'exe


Conclusion :

Voilà, il n'y a plus qu'à dérouler en C#... Une fois l'environnement mis en place, c'est relativement simple. On se demande vraiment pourquoi Violet a (encore) passé ça sous silence...

samedi 2 juin 2012

Karotz Kmd - Kommand Line Interface


Objectif : Envoyer en direct des ordres simples au Karotz sans passer par la procédure normale de développement et d'installation d'applications (appz) sur le store Violet. Aussi simple que d'imprimer !

Un simple .exe qui s'exécute en mode console (ms-dos) et permet ainsi d'exécuter des tâches automatisées et/ou de lancer des batches (.bat)

Télécharger le Zip - version compilée pour .NET v3.5
Pour la version .NET v4.0 c'est celui-ci

Plateforme : Windows avec .NET v 3.5 installé. Pour vérifier la version du .NET installé sur votre PC, allez dans le répertoire C:\Windows\Microsoft.NET\Framework et vous devriez y découvrir (un ou) plusieurs dossiers nommés v1.0.x v1.1.x v2.0.x v3.0 v3.5 v4.0.x. Le mieux est quand même d'avoir la version v3.5 au minimum. Dans le cas contraire, se rendre sur le site de MS pour télécharger le .NET

  • Installation : Télécharger le zip puis extraire les 4 fichiers (kzkmd.exe + kzkmd.ini + kzkmd.txt + google.protocolbuffers.dll) dans un dossier (nommé ici KzKmd pour le tuto).
  • Configuration
KzKmd.ini à éditer (avec un notepad)
# Karotz Kommander Conf file
# http://Wizz.cc
#
# Find your ip on your Kz account manager.
# Go to http://www.karotz.com

Host=192.168.1.4
# Default Port : always set to 9123
Port=9123
#
Modifier la ligne host avec l'adresse ip lcoale de votre Karotz. Vous pouvez la trouver sur votre compte Karotz. Ensuite cliquer sur le picto réprésentant votre Kz pour y décourvir son IP, Adresse MAC et Pseudo. Le port de communication est toujours le (tcp) 9123.

KzKmd.txt contient les commandes à envoyer au Karotz.
# Commentaire
led 0000ff
play http://mp3.live.tv-radio.com/fip/all/fip-32k.mp3
#
pause 10
#
  • Utilisation 
En ligne de commandes ou en batch.

kzkmd.exe [-conf=file.ini] [-file=kmd.txt] [-host=192....] [-port=9123] [-debug]

Par défaut le fichier de configuration est kzkmd.ini et le fichier de commandes kzkmd.txt

Les paramètres -host et -port passés en ligne de commandes sont alors prioritaires sur ceux définis dans le fichier .ini

Ex: kzkmd.exe -debug -host=192.168.1.110

L'InteractiveId obtenu lors de la connexion au Karotz est sauvegardé dans le fichier KzKmd.pid

Vous pouvez ainsi le récupérer avec un autre programme externe du même genre pour communiquer avec la session active.

On pouvait penser aussi à fermer cette session par l'url fournie par l'Api Violet dans sa section Dév http://api.karotz.com/api/karotz/interactivemode?action=stop&interactiveid=3e910454-xxx mais non trop beau !..

vendredi 1 juin 2012

Nabaztag V2 : Plugs-in Java with Groovy


Objectif : Ecrire ses applications - plugs-in - en langage Groovy (dynamic language for the Java Virtual Machine) pour le nouveau serveur Violet www.nabaztag.com.

Le serveur Violet est écrit en Java et accepte désormais les modules additionnels écrits en Groovy. Cela permet la prolifération rapide d'applications très diverses pour tous les lapins rattachés à ce type de serveur.


  • Ma 1ère Appli : Télécharger l'exemple Radio Fip. Un projet Groovy pour le serveur Violet est un .zip qui contient toujours 3 fichiers : descriptor.json, icon.png et main.groovy.
descriptor.json : - un peu à l'image du descriptor pour le Karotz - contient les paramètres de l'application. A modifier à l'aide d'un simple éditeur de texte.

- La zone 'triggers' contient 'RFID', la seule possibilité de déclenchement de l'appz pour l'instant.
- La zone 'fields' contient des parmètres passés à l'application.
- La zone 'name' contient le nom de l'application et la zone 'description' peut recevoir une partie html qui s'affiche dans l'info-bulle lorsque l'utilisateur la survole.

icon.png : image qui apparait dans la liste des applications sur le serveur.

main.groovy : le corps de l'application en java.

- Importer les classes NabAlive :
import com.nabalive.application.core.ApplicationBase;
import com.nabalive.data.core.model.ApplicationConfig;
import com.nabalive.data.core.model.Nabaztag;
import com.nabalive.common.server.MessageService;

- Renommez la classe principale de manière unique. Ici public class RadioFIPApplication extends ApplicationBase .../...

- Chaque plug-in est identifié de manière unique par son guid - uuid. Il faut donc en générer un à chaque nouvelle appz - c'est souvent cet oubli qui génère un erreur à l'installion... Se rendre sur http://www.guidgenerator.com/ pour la génération d'un uuid et remplacer la valeur retournée par la fonction getApikey() par celle obtenue sur le site.

  • Mettre en ligne : uploader uniquement le .zip dans le répertoire des applications du serveur Violet.

Un autre exemple de plug-in : Voici.fr

jeudi 31 mai 2012

Nabaztag V1 : Kit serveur


Voici donc un premier kit pour monter un service web (php) de type ping pour les Nabaztag V1 (1ère génération) . Télécharger le Zip

Ce kit me permet de "gérer" actuellement 700 v1.

Pour améliorer le service et créer de nouveaux modules en fonction de vos besoisn, il faudra vous (re)plonger dans l'assembleur pour générer de nouveaux bytecodes. Sur le v1, les bytecodes sont chargeables/déchargeables à la volée pour des besoins ponctuels. Se rapprocher des sources Violet sur le Nabz v2 qui comprennent aussi une partie dédiée aux v1 avec des exemples de fichiers assembleurs (Violet\Serveurs\OS\net\violet\platform\vasm).

La doc d'origine de Violet sur l'assembleur du v1 est incluse dans le zip. Elle est aussi sur Google Drive.

Voir aussi le post sur le Boot du V1.

Tuto rapide :
  • Penser à mettre la redirection /vl/FR/p3.jsp vers le p3.php (dans le setup du v1, la première requête effectuée par le lapin est de la forme GET /vl/FR/p3.jsp?sn=00xxxxxxxxxx&ex=000000000000&v=20&st=00&tc=00000001 HTTP/1.0). La requête se fait sur l'ip du serveur (donc exit les serveurs mutualisés)... Pas de pb pour un serveur local.
  • Dans le fichier config.php, indiquer le chemin du répertoire de base : define('V1_BASE_DIR', '/full_path_to_www_root/');
  • Le coeur du service est le script p3.php (que vous pouvez d'ailleur renommer).
  • Je mets aussi à dispo ma classe php pour v1 qui facilite l'encodage des trames de bytecodes et le chargement à la volée des fichiers sons déjà au format adpcm.
  • Le plus galère, c'est le format des fichiers sons en adpcm (4bits). Je mets à dispo un utilitaire sous Win pour transformer des fichiers wav en adpcm2/4 bits (Convertisseur Wav2Adp). Voir aussi l'article de SpritesMods.com. Les fichiers convertis sont à stocker dans le rép sound. Pour convertir des mp3, les passer d'abord en wav (8ou16khz 8bits) avec un convertisseur standard puis ensuite en adpcm avec le prg joint. Le v1 sait aussi jouer les fichiers midi. On peut aussi se rapprocher de RedoX qui a ré-écrit un convertisseur en C.
  • Dans le rép conf, sont stockés les fichiers de configuration des Lapins, au cas où l'on déciderait de les personnaliser au travers d'un front-office.

Voir aussi le blog sur le boot du v1
Plus d'infos sur le forum Nabaztag.

lundi 2 janvier 2012

Karotz - Tips and Tricks

System

Tools & Links

La procédure d'installtion génère un fichier .zip contenant des fichiers de configuration  en fonction des paramètres suivants :
http://www.karotz.com/usbkey/karotzusb.zip?uuid=xxxx-yyyy-zzzz&installtype=wifi&usedhcp=1&ssid=TEST&password=test&lang=FRA&wifitype=auto&ipself=&netmask=&ipgateway=&ipdns=
http://www.karotz.com/usbkey/karotzusb.zip?uuid=xxxx-yyyy-zzzz&installtype=ethernet&usedhcp=0&lang=FRA&ipself=192.168.1.1&netmask=255.255.255.0&ipgateway=192.168.1.254&ipdns=82.125.42.65

Serial Konsole

  • On accède à la console série en branchant le Karotz au Pc par l'un de ses 2 ports usb - standard et mini - à l'arrière - le driver serial_gadget doit être présent sur le Pc. Le port Usb du Pc est ainsi mappé sur un port COMx en 9600+ bauds 8N1. Pour découvrir quel est le numéro du port com mappé, aller dans la config matérielle du pc pour lister les ports séries.

    Utiliser un émulateur terminal genre PuTTY et ouvrir une session en mode Serial.

    Les applications hébergées peuvent dialoguer avec le port série - cf le sdk javascript.
  • Quelques commandes de configuration - lecture / écriture - sont aussi disponibles. Les taper sous le format json suivant : {"cmd":"get_sys_version"}{"cmd":"get_mac"}{"cmd":"reboot"}. On pourra aisément ajouter de nouvelles commandes au système en modifiant les scripts python. Pour plus d'info voir config.py.

Mp3

  • Serveurs TTS : - method POST
[tts] - sans authentification préalable
fr = http://188.165.228.65/tts/Suzanne
en = http://188.165.228.64/tts/Katherine
de = http://188.165.228.64/tts/Alex
es = http://188.165.228.65/tts/Sara
  • Serveurs ASR
[asr]
server0 = 188.165.228.64
server1 = 188.165.228.65
port = 443
Un répertoire par langue contenant x fichiers mp3 : fr contient 304 fichiers - it 306 - ja-Jp 297 - br 298 - de 292 - es 306 - uk 300 - us 297. Sous dos, les charger avec la commande :
for /L %x in (1,1,304) do wget http://s3.amazonaws.com/karotz/moods/fr/%x.mp3

dimanche 1 janvier 2012

Karotz - Boot Process

Le Karotz est architecturé autour d'une carte Pragmatec ARM9 et d'un module 2440 sur lequel tourne un Linux 2.6.28. Pour le développement croisé voir le pdf ARM9 Dev Starter Kit.

Boot

  • whoami - root
  • mount
    rootfs on / type rootfs (rw)
    /dev/root on / type cramfs (ro)
    proc on /proc type proc (rw)
    none on /sys type sysfs (rw)
    ramfs on /var type ramfs (rw)
    none on /dev type tmpfs (rw,mode=755)
    /dev/uba1 on /mnt/usbkey type vfat
    (rw,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1)
    /dev/mtdblock6 on /usr type yaffs (rw)
    none on /dev/pts type devpts (rw,mode=622)
    tmpfs on /dev/shm type tmpfs (rw)
    usbfs on /proc/bus/usb type usbfs (rw)
  • cat /etc/inittab - ln /karotz/etc/inittab
    # Startup the system
    ::once:/karotz/scripts/karotz_init.sh
    ::respawn:/karotz/bin/power
    # Configuration programm
    ::once:/usr/scripts/miniusb_read.sh
    ::restart:/sbin/init
    #::askfirst:/bin/bash
    # Stuff to do before rebooting
    ::shutdown:/karotz/scripts/karotz_shutdown.sh
    ::shutdown:/bin/umount -a -r
  • ps
    PID USER COMMAND
    1 root /bin/sh /linuxrc
    2 root [kthreadd]
    3 root [ksoftirqd/0]
    4 root [watchdog/0]
    5 root [events/0]
    6 root [khelper]
    155 root [kblockd/0]
    166 root [khubd]
    169 root [kseriod]
    195 root [pdflush]
    196 root [pdflush]
    197 root [kswapd0]
    198 root [aio/0]
    199 root [nfsiod]
    886 root [scsi_tgtd/0]
    892 root [mtdblockd]
    893 root [nftld]
    894 root [inftld]
    923 root [s3c2410-spi.0]
    931 root [uwbd]
    944 root [wusbd]
    979 root [hid_compat]
    1020 root [rpciod/0]
    1067 root [rt73usb]
    1377 root /karotz/bin/led -l FFCFAF -p 000000 -d 1500
    1380 root /sbin/inetd /tmp/wizz_inetd_telnet.conf
    1346 root /sbin/inetd
    1382 root ps
  • cat /etc/group - ln /karotz/etc/group
    root:*:0:
    daemon:*:1:
    bin:*:2:
    sys:*:3:
    adm:*:4:
    tty:*:5:
    disk:*:6:
    lp:*:7:
    mail:*:8:
    news:*:9:
    uucp:*:10:
    kmem:*:15:
    dbus:x:81:
    ppp:x:99:
    nogroup:x:100:
  • cat /etc/passwd - ln /karotz/etc/passwd
    root:*:0:0:root:/usr/karotz:/bin/bash
    bin:*:1:1:bin:/bin:
    daemon:*:2:2:daemon:/sbin:
    nobody:*:99:99:Nobody:/:
    dbus:x:81:81:dbus:/var/run/dbus:/bin/sh
  • /bin/printenv
    KMOD=/lib/modules/
    TERM=linux
    k_nbclick=0
    LD_LIBRARY_PATH=/lib:/usr/lib
    AUTO_UPDATE=yes
    GST_REGISTRY_UPDATE=no
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:./
    GST_REGISTRY=/usr/karotz/registry
    devfs=udev
    PWD=/
    LANG=C
    SHLVL=1
    HOME=/
    WIZZ_HOME=/usr/karotz
    DISPLAY=unix:0.0
    _=/bin/printenv
  • /bin/busybox
    BusyBox v1.17.4 (2012-03-29 10:05:08 CEST) multi-call binary.
    Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
    and others. Licensed under GPLv2.
    See source distribution for full notice.

    Usage: busybox [function] [arguments]...
    or: function [arguments]...


    BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as.

    Currently defined functions: where are chpasswd and ftpd? ;-))...
    [, [[, addgroup, adduser, ar, arping, ash, awk, basename, bootchartd, bunzip2, bzcat, cat, catv, chattr, chgrp, chmod, chown, chroot, chrt, chvt, cksum, clear, cmp, cp, cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, devmem, df, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, echo, egrep, eject, env, ether-wake, expr, false, fdflush, fdformat, fgconsole, fgrep, find, flock, fold, free, freeramdisk, fsck, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid, hostname, hwclock, id, ifconfig, ifdown, ifup, inetd, init, insmod, install, ip, ipaddr, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kill, killall, killall5, klogd, last, length, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, losetup, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, makedevs, md5sum, mdev, mesg, mkdir, mkfifo, mknod, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mt, mv, nameif, nc, netstat, nice, nohup, nslookup, od, openvt, passwd, patch, pidof, ping, pipe_progress, pivot_root, poweroff, printenv, printf, ps, pwd, rdate, readlink, readprofile, realpath, reboot, renice, reset, resize, rev, rm, rmdir, rmmod, route, run-parts, runlevel, sed, seq, setarch, setconsole, setkeycodes, setlogcons, setsid, sh, sha1sum, sha256sum, sha512sum, sleep, smemcap, sort, start-stop-daemon, strings, stty, su, sulogin, swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, tftp, time, top, touch, tr, traceroute, true, tty, udhcpc, umount, uname, uniq, unix2dos, unlzma, unxz, unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat, yes, zcat