SheevaPlug

Activate eSata on Sheevaplug with Debian

Monday, 08 October 2012
|
Écrit par
Grégory Soutadé

esata.png

Activate eSata on Sheevaplug with Debian I recently bought an external hard disk with an eSata interface, it was not easy to find (almost are with USB2/3, other are expensive advanced NAS), but I did. The purpose of this disk is to make backups. But, on my Sheevaplug, the main partitions (/root, /boot...) are on an USB key (Toshiba 16 GB) running Debian stable. When I plugged my new hdd it was not recognized ! Actually I first configured my sheevaplug following some tutorials (http://www.cyrius.com/debian/kirkwood/sheevaplug/ for example). It was said to set the boot variable "arcNumber" to 2097. Why ? In facts ARM SoC doesn't have peripherals discovery mode, so you need to tell which board you're running on.

After looking a bit into Debian's kernel, it seems that eSata interface is activated only if arcNumber is set to 2678 ! If I do that, original Ubuntu on NAND flash (factory installation) doesn't recognize the current SoC because arcNumber 2678 is a patch from Debian (in original installation, eSata is activated by default). The second point is that if you set the board as an eSata board, Debian will try to boot on the eSata hard disk (even if you specify different kernel root=XX values).

So what to do ? The solution is to specify your partitions not using classic /dev/sdXXX format, but using UUID numbers. They are not human readable, nevertheless they refer to an unique partition ! The first step consists in listing your partitions UUID :

ls -l /dev/disk/by-uuid/ lrwxrwxrwx 1 root root 10 Sep 27 07:34 1642ad57-77aa-494c-aa77-6998d420eb8f -> ../../sda3 lrwxrwxrwx 1 root root 10 Sep 27 07:34 198239b4-ff16-4dda-8df0-37b106005817 -> ../../sda1 lrwxrwxrwx 1 root root 10 Sep 27 07:34 2e0cd399-3839-4e4e-bc57-5e6628841bc1 -> ../../sda2 lrwxrwxrwx 1 root root 10 Sep 27 07:34 dd27350b-2522-46a6-862e-0cbc072b535f -> ../../sda4

Then, edit /etc/fstab to use UUID and not /dev/sdXXX (it's fastidious I know) After that, you need to reboot with the serial console connected and stop automatic boot (type a key) to edit uBoot configuration. We'll set arcNumber to 2678 by default.

setenv arcNumber 2678

Then edit bootargs_options (for me it's bootargs_options_usb) to set correct UUID value

setenv usb_bootargs_root "root=UUID=2e0cd399-3839-4e4e-bc57-5e6628841bc1"

Last step is to edit the global boot_cmd to set arcNumber to 2097 before booting to NAND (in my case, if USB boot fails it will try to boot on MMC then on NAND) :

setenv bootcmd 'setenv arcNumber 2678; saveenv; run usb_boot; setenv arcNumber 2097; saveenv; run bootcmd_mmc; run bootcmd_nand'

Finally save environment variables to flash and boot

saveenv boot

My final environment variables

ethact=egiga0 bootargs_root=ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs mtdpartitions=mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) ethaddr=00:50:43:01:4C:56 bootargs_console=console=ttyS0,115200 bootargs_root_nand=ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs bootcmd_nand=setenv bootargs $(bootargs_console) $(mtdpartitions) $(bootargs_root_nand); \ nand read.e 0x00800000 0x00100000 0x00400000; bootm 0x00800000 bootargs_root_mmc=root=/dev/mmcblk0p2 rootdelay=5 bootcmd_mmc=setenv bootargs $(bootargs_console) $(bootargs_root_mmc); mmcinit;\ ext2load mmc 0:1 0x800000 /uImage; bootm 0x00800000 real_bootcmd=run bootcmd_mmc; run bootcmd_nand filesize=32D62A usb_bootargs_console=console=ttyS0,115200 usb_bootcmd_usb=usb start; ext2load usb 0:1 0x01100000 /uInitrd; ext2load usb 0:1 0x00800000 /uImage usb_boot=setenv bootargs $(usb_bootargs_console) $(usb_bootargs_root); run usb_bootcmd_usb;\ bootm 0x00800000 0x01100000 mainlineLinus=yes bustargs_root_usbroot=/dev/sda2 usb_bootargs="root=UUID=2e0cd399-3839-4e4e-bc57-5e6628841bc1" stdin=serial stdout=serial stderr=serial mainlineLinux=yes enaMonExt=no enaCpuStream=no enaWrAllo=no pexMode=RC disL2Cache=no setL2CacheWT=yes disL2Prefetch=yes enaICPref=yes enaDCPref=yes sata_dma_mode=yes netbsd_en=no vxworks_en=no bootdelay=3 disaMvPnp=no enaAutoRecovery=yes

I added a rule in fstab to mount my hdd at startup

UUID=590f30b1-7727-4d0a-a86a-2360ec0b3f88 /media/backup ext4 defaults 0 1

A simple backup script based on rsync that power down disk after backup is done.

Proxy a subdomain with nginx

Thursday, 09 August 2012
|
Écrit par
Grégory Soutadé

A lot of things has been written about nginx and Apache : proxy_pass, proxy_redirect, subdomains... I just want to publish my configuration that is in test but works. This is a response to my requirements : I want nginx to serve the subdomain blog.soutade.fr but transfer all other requests to an Apache server (soutade.fr, www.soutade.fr, indefero.soutade.fr ...).

 

First step is to install nginx. Nginx current version is 0.7.23 (thanks to debian stable). Then edit /etc/nginx/sites-available/default :

server { listen 80 default; ## listen for ipv4 server_name soutade.fr *.soutade.fr; access_log /var/log/nginx/soutade.fr.access.log; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; resolver localhost; proxy_pass http://$host:8000; } } server { listen 80; ## listen for ipv4 server_name blog.soutade.fr; access_log /var/log/nginx/soutade.fr.access.log; location / { root /var/www/blog; index index.html; } location = /favicon.ico { access_log off; log_not_found off; } location ~ /\. { deny all; access_log off; log_not_found off; } }

The first block tells nginx to redirect all request from soutade.fr and *.soutade.fr to a local Apache server listening on port 8000. The second block creates a special rule for blog.soutade.fr : files will be served by nginx server and no redirection will be applied. We also disable favicon.ico error log and deny serving \.* files. There is a tip in the first block : we need to set up a local DNS server ("resolver localhost" directive). If this option is not set, it will try to do another DNS request to resolve $host address. So we'll simply install bind9 and configure it. Edit /etc/bind/named.conf.local

zone "soutade.fr" { type master; file "/etc/bind/db.soutade.fr"; };

Finally edit /etc/bind/db.soutade.fr with :

$TTL 604800 @ IN SOA soutade.fr. root.soutade.fr. ( 07082012 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 127.0.0.1 * IN CNAME soutade.fr. @ IN AAAA ::1

And restart bind : sudo service bind9 restart. root.soutade.fr. is the mail address of the administrator. Now everything might be ok.

Deux ans !

Saturday, 04 August 2012
|
Écrit par
Grégory Soutadé

 

Les cigales chantent au loin pour fêter les deux ans du blog ! Ma première impression est la satisfaction d'être arrivé jusque là. En effet, la plupart des blogs meurent assez vite. Sans rentrer dans les détails, cette année a été plutôt bonne : fréquentation en hausse, articles variés, aucun trou, pas de problème technique.

Le bilan en chiffres

  • 60 articles ont été publiés, soit 1 article par semaine
  • 1/3 (33%) des articles concernent le cinéma : cette année a été assez pauvre d'un point de vue cinématographique. De plus, sur le peu d'articles parus, seuls 2/3 sont favorables
  • Quasiment 18 000 visites avec une moyenne de 400 visistes / mois pendant les 5 premier mois puis 1800 visistes / mois par la suite
  • 5.7 Go de données envoyées


Les chiffres de l'année dernière en comparaison :

  • 60 articles
  • 50% pour le cinéma
  • 9 000 visites
  • 2.7 Go de données


Ces chiffres ne tiennent pas compte du mois d'avril qui a été très particulier. En avril, j'ai eu l'équivalent d'un an de visite (18 000 visites, 4.75 Go de données envoyées), ce qui fait une moyenne de 600 visites par jour. La courbe se centre en fait sur 12 jours où il y a eu entre 1000 et 1600 visites / jour.

Hélas 90% du traffic se concentre (encore) sur un seul article, malgrès une diversification assez importante, et même deux articles en Anglais... La sortie de la version 0.3 de KissCount n'a pas non plus déchaîné les foules comme ça avait été le cas l'année dernière. C'est dommage, car c'est la version la plus aboutie/jolie.

Côté technique, le sheevaplug a parfaitement remplit son rôle : très peu de redémarrages, aucun problème matériel, un temps de réponse plutôt correct, bref, il est amorti ! En ce qui concerne le nom de domaine, je suis passé d'OVH à Gandi suite à l'arrêt des certificats SSL d'OVH. Le prix est sensiblement le même, mais côté technique je préfère la plateforme OVH : plus simple à manipuler, DynDNS supporté de base et des serveurs DNS avec un TTL décent !

L'épisode d'avril a donné naissance au projet Dynastie : un générateur de blog statique écrit avec le framework Django. Désormais il n'y aura plus pour le blog que du html compressé (sauf pour la fonction de recherche), servi par un serveur nginx avec des css et js optimisés. Le reste continuera à être servit par Apache. Ceci devrait permettre de réduire par deux (environ) la taille des données envoyées. Ce qui signifie moins de latence, donc une meilleure expérience sur le blog ! J'aurais aimé le sortir pour les deux ans, mais il n'est pas encore prêt...

Et maintenant ? Et bien, rien ne change ! On continue sur la lancée actuelle : une idée = un article, avec le soutien des sorties ciné. Comme l'année dernière, il y a quelques idées qui trainent, mais globalement ça se fera au jour le jour. Comme on dit : qui vivra, verra.

Un an !

Thursday, 04 August 2011
|
Écrit par
Grégory Soutadé

Il y a un an était posté le premier billet sur ce blog. Je ne me suis jamais fixé un quelconque objectif concernant le contenu ou la fréquence de mise à jour, juste quelques idées et l'envie de faire découvrir des choses. Il y a eu des semaines un peu vide par manque d'envie ou parce que je travaillais sur d'autres projets (dont KissCount), mais au final il est toujours là ! L'objectif innavoué virtuel est de un article par semaine, mais sans jamais me forcer.

Si on regarde les statistiques c'est plutôt positif : ceci constitue le 60ème article, soit 5 articles par mois en moyenne. Au niveau de la fréquentation on atteint les 9000 visites et 2,7Go de données envoyées. Pendant les 8 premiers mois il y avait entre 100 et 200 visites / mois, avec un pic de 900 au mois de décembre dernier grâce à l'annonce de la v0.1 de KissCount sur linuxfr, puis cet article a boosté la fréquentation jusqu'à 1200 puis 1600 visites mensuelles. Il représente aujourd'hui (à la louche) 90% du trafic. C'est un moyen détourné d'attirer des visiteurs, les curieux iront se balader sur les autres publications.

Les autres articles populaires sont ceux sur le SheevaPlug et l'auto hébergement, tandis que ceux sur les films sont finalement peu consultés (même s'ils représentent 50% des billets).

Concernant le SheevaPlug justement, j'en suis très content. Je n'ai eu AUCUN problème matériel en un an, il ne chauffe presque pas et, à part au début, je n'ai plus eu à faire d'intervention physique. La migration vers Debian 6 (Squeeze) a nécessité de remettre de l'ordre dans quelques fichiers de config (notamment le mail), mais ça reste correct. Ce n'est peut être pas une foudre de guerre, mais il fait ce qu'on lui demande ! Le seul point bloquant reste la bande passante qui est un peu faible.

Voilà, malgré mon petit soucis avec OVH, c'est reparti pour un an !


Petite réflexion annexe concernant l'auto hébergement : Qu'adviendra-t-il des articles si le serveur doit être arrêté définitivement ?
Soit il n'y a rien d'important et alors tant pis. Soit on aimerait laisser certaines ressources en ligne et à ce moment il faudra pouvoir les exporter vers un autre site : soit le site d'un particulier, soit le site d'une entreprise qui garantie (normalement) une plus longue pérennité des données.

Focus sur le SheevaPlug

Sunday, 20 March 2011
|
Écrit par
Grégory Soutadé

Présentation

Un petit article pour présenter plus généralement le SheevaPlug. En effet les articles précédents se sont focalisés sur l'utilité d'un serveur de manière générale, mais il y a pas mal de questions sur le SheevaPlug en lui même. Le SheevaPlug c'est donc cette petite bête :


Il comporte (pour simplifier) :

  • Une mémoire interne (flash) de 512Mo
  • Une mémoire vive de 512Mo
  • Un processeur ARM de 1Ghz.

C'est l'équivalent d'une configuration de PC d'il y a 7 ans à peu près A défaut que celui-ci ne consomme que 5 Watts, ce qui est largement inférieur à n'importe quel PC, même basse consommation. Avec si peu de puissance il est évident qu'on ne peut pas faire tourner Crysis dessus, et c'est normal car sa fonction principale est d'être un serveur.

Un serveur c'est une machine qui va répondre à des requêtes externes pour, par exemple, servir des pages web, échanger des mails, stocker des données, et pour tout cela, point besoin de puissance. Personnellement je l'utilise, entre autre, pour faire de la compilation (voir ici un petit bench) automatique de KissCount, avoir un serveur SSH, un serveur mail, héberger mon blog, héberger une forge logicielle, accèder à mes comptes. Pour information la compilation de KissCount prend 15 minutes par version/architecture (soit 1h en tout) contre 1 minutes sur un PC de dernière génération. Elle est réalisée à 1h du matin pour ne pas peturber les autres services.

A l'intérieur du Sheeva


Concernant le système d'exploitation, le SheevaPlug est livré avec une Ubuntu toute prête. En effet on est sur un processeur ARM, donc Linux est tout choisi pour faire fonctionner le système. Bien sûr on aurait pu prendre un BSD, mais le portage n'est pas top, voir même un eCos si certains ont du temps ... MacOS on oublie tout de suite et les seuls Windows qui supportent ARM sont WindowsCE et WindowsPhone 7, mais là encore rien n'est fait pour les acceuillir. Avec Ubuntu on dispose de toute la logithèque GNU/Linux !

De plus le Sheeva ne possède pas d'écran et aucun connecteur pour en brancher un. Ce n'est évidement pas un problème car dans le monde GNU/Linux on peut parfaitement administrer une machine en ligne de commande via SSH (console à distance) en téléchargeant les logiciels et en éditant les fichiers de configuration via un éditeur en mode texte (nano, vi, emacs ...). mais une fois les bon paquets on peut aussi faire l'administration courante via des interfaces web. Les plus téméraires pourront installer un environnement graphique et/ou faire un affichage déporté via SSH, mais c'est complètement inutile et consommateur de ressources.

MAJ : NewIT propose quand même des écrans tactiles via USB (moniteurs MIMO)

Pour les bidouilleurs il faudra de toutes façons passer au moins par la sortie série (en micro USB) du Sheeva afin de modifier la séquence de lancement pour pouvoir booter sur un périphérique autre que la flash ou la carte SD. C'est très pratique pour récupérer la main sur le système quand celui-ci est cassé (comme décrit dans ce billet lorsque le SheevaPlug ne démarre plus).

512Mo de flash c'est suffisant pour le système d'exploitation, mais on se retrouve vite limité. Personnellement j'ai opté pour installer une Debian sur une clé USB 16Go, et tant qu'on ne veut pas stocker sa collection de DivX, c'est largement suffisant ! Il faut cependant faire attention avec ce port USB. Si le périphérique que vous branchez ne possède pas sa propre alimentation, le courant va être récupéré depuis le SheevaPlug, ce qui peut causer des dégâts si la demande est trop importante. Donc pour une clé USB ça passe, mais si vous branchez un disque dur ou un hub il faut faire attention à ce que ceux-ci possèdent leurs propre alimentation !!

Il y a un port eSata sur la version que j'ai acheté, mais je ne l'ai jamais utilisé, je suppose que le problème d'alimentation est le même.

Bref je possède le SheevaPlug depuis 8 mois et je n'ai eu aucun problème, une fois configuré on l'oublie, il ne chauffe pas et me permet d'héberger mes propres services sans soucis (il ne faut pas oublier de faire des sauvegardes régulières). Je ne voulais pas prendre de GuruPlug car il n'est pas plus puissant mais consomme plus à cause du Wifi et du Bluetooth. Il est aussi réputé pour des problèmes d'alimentation. Le double ethernet est bien si on veut faire une passerelle ou un pare-feu.

Le prix

La première année : 130€ chez NewIt + 4€ pour le nom de domaine (certificat SSL offert) + 5€ pour l'électricité. Donc 139€/an soit 11,58€/mois
A partir de la seconde année : 7€ pour un nom de domaine OVH + 15€ pour un certificat SSL + 5€ pour l'électricité. Donc 27€/an soit 2,25€/mois

C'est donc tout à fait raisonable (surtout à partir d'un an). On avait annoncé une baisse rapide du prix de ces joujous, mais je ne pense pas que ça arrivera un jour car les quantités vendues sont trop faibles.

Conclusion

En conclusion le SheevaPlug est l'appareil parfait pour tout ceux qui veulent un petit serveur chez eux ou se lancer dans de l'auto-hébergement !