A la recherche du super bloc perdu

Il y a quelques mois mon disque système en ext3 est mort. L’OS ne pouvait plus démarrer à partir de celui-ci. La simple présence du disque sur le système  “booté” à partir d’un clé USB provoquait le plantage de ce dernier (Ubuntu 9.10).

Un disque dur plus tard formaté en ext4 sous Ubuntu 10.04, je rebranche le disque est là une merveilleuse surprise m’attend. Le disque ne  “fonctionne” toujours pas mais ne plante pas le système.

La commande fsck sur mon disque /dev/sdb donne ceci :

fsck.ext2: Attempt to read block from filesystem resulted in short
read lors de la tentative d'ouverture de /dev/sdb1
Peut-être cette partition est-elle de taille zéro ?

Quelques recherche google plus tard je découvre qu’il suffit de lancer fsck avec un super bloc de secour. Pour obtenir la liste des super blocs de secour faire:

sudo mke2fs -n /dev/sdb

Choisir alors un numéro de super bloc dans la liste, disons 32768. Puis faire

sudo fsck -y -b 32768 /dev/sdb

Et voilà. J’ai pu récupérer le contenu du disque.

Monitorer une machine Linux avec le N900

Surveiller une machine Linux peut se faire avec différent logiciel. Nous choisissons Munin pour sa simplicité “out of the box” sur une distribution Ubuntu. Aussitôt installé, on dispose de jolies graphiques pour suivre l’état du système dans un navigateur.

L’application Munin permet par ailleurs d’envoyer des alertes quand une variable sort d’une limite prédéfinie. L’alerte peut être un mail ou un script appelé par Munin. L’avantage du mail est qu’il ne nécessite aucun développement pour être mis en oeuvre. Le client mail du N900 se chargeant de faire la notification. Le mail présente aussi l’avantage de pouvoir être lu en asynchrone mais le gros désavantage c’est que une fois faite la notification de l’arrivée d’un nouveau message, l’utilisateur qui est submergé de mail risque de ne pas prendre en compte une alerte au fin fond de sa boîte de réception.

Des améliorations au mail peuvent être trouvées par l’utilisation d’une boîte dédiée par exemple mais cela ne change pas le problème de fond: une alerte doit être visible et se signaler en permanence. L’idée du voyant vert qui passe au rouge s’impose et ce voyant ne doit pas être une application mais un widget sur le bureau.

Il nous faut donc faire le lien entre les informations que Munin produit avec le bureau Hildon. Le monde Linux à alors de nombreux atouts. Contrairement au monde Microsoft/Window où la facilité d’entrée permet au tout venant de faire des applications qui seront mal conçues, Linux à cause d’une barrière d’entrée plus élevée et, grâce à l’open-source et le libre, crée des applications mieux conçus et plus modulaires. Ainsi dans notre cas, surveiller un serveur Linux équipé de Munin via un mobile sous Maemo 5 est un jeu d’enfant.

Tout d’abord on peut laisser en place la notification par mail et décider de se spammer pour les alertes critiques. Ensuite on s’aperçoit que les pages web générées par Munin ne contiennent aucune information textuelle sur l’état du serveur: Munin produit des graphiques sous forme d’images. Mais les développeurs de munin ont bien architecturé l’application. Ainsi dans le fichier /var/lib/munin/limits il y a l’état de toutes les sondes surveillées en texte. Il suffit de le rendre disponible depuis le web pour que le N900 mette à jour les widgets.

De même historiquement les utilisateurs de Linux sont plus conscients de leur informatique et l’outillage de l’administrateur est un souci permanent voire même le premier souci puisque un système qui n’est pas bien administré, fonctionnera mal et ne sera pas utilisé ! Donc il n’est pas étonnant de voir parmi les applications produites par la communauté pour le N900, un grand nombre d’applications d’administration parmi lesquelles Queen BeeCon Widget (QBW). Ce dernier se présente sous la forme de petits widget dont la couleur change en fonction du code de sortie d’une commande arbitraire. Il y a par défaut 3 états:

  • icône verte quand le code de sortie est 0
  • icône orange quand le code de sortie est 1
  • icône rouge quand le code de sortie est 2

Commençons par la validation da la connectivité. Il s’agit de faire un simple ping sur le serveur. Dans le cas d’un serveur derrière un routeur, on se contentera d’un ping sur le routeur. Il suffit de créer un widget QBW avec pour commande:

tokenfound=`sudo ping -c 1 -q 127.0.0.1 | grep "1 packets received" | wc -l'`;
if [ $tokenfound -eq 1 ]; then echo "OK"; exit 0; else  echo "KO"; exit 2; fi

remplacer l’ip 127.0.0.1 par celle du serveur ou celui du routeur (adresse externe)

Pour vérifier que le serveur web répond du point de vue d’un utilisateur réel, il suffit de s’assurer que le résultat d’une url de référence contient bien un mot-clé. Dans le cas d’un apache fraichement installé on peut vérifier que la page racine contient bien “It works”. Voici la commande qui sera associée au widget QBW:

tokenfound=`wget -O - -T 3 -t 1 -q //127.0.0.1/ | grep "It works" | wc -l'`; if [ $tokenfound -eq 1 ];
then echo "OK"; exit 0; else echo "KO"; exit 2; fi

Dès lors que le serveur est joignable et que le serveur web apache répond, on peut vérifier que les pages html générées par munin sont présentes. Voci la commande pour QBW:

tokenfound=`wget -O - -T 3 -t 1 -q //127.0.0.1/munin | grep "This page was generated by
<a href="//munin-monitoring.org/">Munin</a> version 1.4.4" | wc -l`; if [ $tokenfound -eq 1 ];
then echo "OK"; exit 0; else echo "KO"; exit 2; fi

Bien sûr le script précédent gagnerait à vérifier la date de mise à jour de la page !

Une fois que le fonctionnement de munin est acté, on peut passer en revue les sondes intéressantes dans la surveillance du serveur. Prenons l’exemple des sonde de température. Disons que l’on veut surveiller toutes sondes confondues si au moins l’une pose un problème. Dans le cas d’une sonde munin on peut avoir envie d’accéder au graphique de la sonde. Disons que lorsque l’on tape sur le radar du widget, le navigateur s’ouvre sur le graphique de la sonde. Il suffit de créer un widget avec la commande:

if [ $QBW_HOTSPOT_PRESS -eq 9 ]; then dbus-send --system --type=method_call --dest=com.nokia.osso_browser
/com/nokia/osso_browser/request com.nokia.osso_browser.load_url
string:"127.0.0.1/munin/localdomain/localhost.localdomain/sensors_temp-day.png"; fi;
limits_file=/home/user/limits_sensors_temp; wget -O - -T 3 -t 1 -q //127.0.0.1/munin/limits
| grep sensors_temp > $limits_file; if [ $? -ne 0 ]; then echo "??"; exit 1; fi;
tokencount=`cat $limits_file | grep "critical" | wc -l`; if [ $tokencount -gt 0 ]; then echo "critical";
exit 2; else tokencount=`cat $limits_file | grep "warning" | wc -l`; if [ $tokencount -gt 0 ];
then echo "warning"; exit 1; else echo "OK"; exit 0; fi;fi

Désactivation de moniteur de ventilateur dans Munin

Munin est un traceur de courbe qui prend ses valeurs en résultat d’une commande. Cela permet de surveiller de manière visuelle les indicateurs de santé d’une machine ou d’un réseau de machine. C’est un projet peu actif mais les sondes existantes sont suffisantes pour les besoins de base tel que controler l’espace disque, la consommation mémoire, la température ou la vitesse des ventilateurs. C’est d’ailleur ce dernier qui nous intéresse.

Le module de gestion des capteurs détecte sur ma carte mère 3 sondes de ventilateur. Or dans mon cas seul le ventilateur de processeur est branché et comme le plugin munin lit les valeurs de tous les capteurs, il déclenche une alerte à cause de 2 ventilateurs tournant à 0 tour/mn.

Une première étape consiste à désactiver le tracage de courbe pour ces ventilateurs fantômes. Pour cela il faut ajouter les lignes suivantes dans le fichier /etc/munin/plugin-conf.d/munin-node


[sensors_fan]
env.ignore_fan2 1
env.ignore_fan3 1

A ce stade les 2 ventilateurs inexistants ne sont plus dans le graph mais munin continue à envoyer des alertes. Dans mon cas ma boîte mail s’est remplie de messages…

Pour aller plus loin il faut modifier le plugin munin sensors_fan à la fonction fan_threshold


sub fan_threshold {
my $name = shift;
my $min = shift;
my $warn_percent = exists $ENV{fan_warn_percent} ? $ENV{fan_warn_percent} : 5;

if  ( exists $ENV{"ignore_$name"} ) {
return
}
return unless defined $min;
printf "$name.warning %d:n", $min * (100 + $warn_percent) / 100;
printf "$name.critical %d:n", $min;
}

Désactivation de moniteur de ventilateur dans Munin

Munin est un traceur de courbe qui prend ses valeurs en résultat d’une commande. Cela permet de surveiller de manière visuelle les indicateurs de santé d’une machine ou d’un réseau de machine. C’est un projet peu actif mais les sondes existantes sont suffisantes pour les besoins de base tel que controler l’espace disque, la consommation mémoire, la température ou la vitesse des ventilateurs. C’est d’ailleur ce dernier qui nous intéresse.

Le module de gestion des capteurs détecte sur ma carte mère 3 sondes de ventilateur. Or dans mon cas seul le ventilateur de processeur est branché et comme le plugin munin lit les valeurs de tous les capteurs, il déclenche une alerte à cause de 2 ventilateurs tournant à 0 tour/mn.

Une première étape consiste à désactiver le tracage de courbe pour ces ventilateurs fantômes. Pour cela il faut ajouter les lignes suivantes dans le fichier /etc/munin/plugin-conf.d/munin-node


[sensors_fan]
env.ignore_fan2 1
env.ignore_fan3 1

A ce stade les 2 ventilateurs inexistants ne sont plus dans le graph mais munin continue à envoyer des alertes. Dans mon cas ma boîte mail s’est remplie de messages…

Pour aller plus loin il faut modifier le plugin munin sensors_fan à la fonction fan_threshold


sub fan_threshold {
my $name = shift;
my $min = shift;
my $warn_percent = exists $ENV{fan_warn_percent} ? $ENV{fan_warn_percent} : 5;

if  ( exists $ENV{"ignore_$name"} ) {
return
}
return unless defined $min;
printf "$name.warning %d:n", $min * (100 + $warn_percent) / 100;
printf "$name.critical %d:n", $min;
}

Les partis politiques sur internet

Avec la dernière élection américaine, le monde découvrit en la personne de Barack Obama, un candidat jeune utilisant un smartphone et ayant un compte twitter. L’utilisation des outils de communication dérivés d’internet semble avoir été pour la première fois une arme politique pour les mouvements ayant pignon sur rue.

En France les partis politiques ont appris la leçon. La plupart des partis s’y sont mis. Cette occupation de l’espace numérique peut prendre plusieurs formes.

Il y a l’initiative personnelle qui s’illustre quand un homme politique utilise en son propre nom des réseaux sociaux. L’impact et la pertinence de cette démarche dépend du degré d’aisance de la personne avec ces outils. Ainsi pour attirer de l’audience, il faut produire de manière prolixe du contenu et cela prend du temps.

Puis viens les initiatives pseudo-personnelles où sous le nom d’une personnalité, un groupe de personnes dûment autorisées, produisent du contenu soit dans des réseaux sociaux, soit sur un site web dédié. Cette catégorie est réservés aux personnalités bénéficiant de l’appui d’un parti. La richesse du contenu et le contrôle de la communication rend l’impact plus percutant que la première catégorie. Cependant ceux qui ont choisi une approche trop institutionnelle perdent l’aspect du lien intime avec l’internaute-electeur.

Ensuite il y a les partis politiques sur internet. Les moyens étant alors les plus conséquents. Cette catégorie prend dans sa forme la plus aboutie l’apparence d’un site institutionnel renvoyant sur les pages personnelles des acteurs majeurs du parti sous forme de profil ou de blog. De plus à coté des messages officiels on trouve une partie forum où les visiteurs du site peuvent s’inscrire, avoir un profil visible par la communauté et échanger des idées. On est alors en présence d’une véritable machine à engouement comme peuvent fleurir les sites traitant de tel ou tel sujet où se connectent les passionnés ou les internautes à la recherche d’information. La politique est un sujet comme un autre après tout.

A l’évidence la politique a modernisé ses moyens de propagande. L’époque du vendeur d’encyclopédie faisant du porte à porte ou de la publicité dans la boite au lettre ou dans les journaux est derrière nous. La vie de la cité se joue désormais dans l’univers numérique.

Bug Geneweb sous Ubuntu 10.04

Geneweb est une application de généalogie écrite en OCaml. Sous Ubuntu 9.10, l’application fonctionne parfaitement mais dans la version actuelle de Ubuntu 10.04 il y a un bug: on ne peut pas naviguer et rechercher les membres de l’arbre généalogique bien que l’on puisse créer les éléments de l’arbre.

La version de geneweb présente dans le dépôt de Lucid est une 5.02-exp et sans doute que le “exp” signifie expérimental…. Quoi qu’il en soit une recherche sur le net montre que le bug est connu depuis novembre 2009 mais uniquement dans le milieu des testeurs. Puis au fur-et-à mesure que les distributions Linux intégrèrent la branche 5.02 de geneweb, le commun des mortels commença à être impacté.

La lecture de l’historique du bug est très intéressante et montre la bonne volonté du mainteneur du paquet. Ce rôle est d’ailleurs très noble car il consiste à prendre un programme écrit par quelqu’un pour l’intégrer dans une distribution. Il est vrai que geneweb ne fait pas partie des programmes mis en avant par Ubuntu, ce qui est un signe de la limite des tests qui ont pu être fait sur cette application, mais il est agréable de constater que dès que le problème touche le grand public, les choses vont très vite même pour une application somme toute confidentielle telle que geneweb. Ainsi dès que Ubuntu 10.04 sort en avril, au fil des mises à jour des systèmes, les utilisateurs de geneweb sont confrontés au bug, se plaignent et la communauté se met en branle.

Finalement avant même que la distribution officielle d’Ubuntu ne mettent à jour le paquet, un patch est mis en ligne dès le 14 juillet. Pas mal pour une application qui ne s’appelle pas Firefox !

Clé USB au format linux

Les clés USB que l’on trouvent dans le commerces sont formatées en FAT32. Ce système de fichier venant du monde Microsoft a l’avantage d’assurer une compatibilité sur tous les systèmes. Ainsi la clé pourra être lue par tous les systèmes d’exploitation (Linux, Mac, Windows).
Mais on peut avoir envie d’utiliser un système de fichier linux (ext2, ext3, ext4). C’est le cas par exemple d’une clé USB bootable (live usb) qui en plus de la partition FAT32 accueillant le live-cd, possède une partition de donnée que l’on souhaite en ext4 pour bénéficier de la gestion des droits ou outrepasser la limite des 4Go de taille de fichier de la FAT32.
Dans ce cas la partition linux de clé USB ne sera pas reconnue sous Windows et il semble alors impossible de partager des fichiers de linux à windows. Heuresement qu’il existe un utilitaire qui permet sous windows de lire des partitions linux jusqu’au ext4: Ext2Read
Tous les linuxiens peuvent donc formatter leurs clés USB en ext4 tout en pouvant partager leurs fichiers avec leurs amis windosiens. Linux est un monde ouvert.

Clé USB au format linux

Les clés USB que l’on trouvent dans le commerces sont formatées en FAT32. Ce système de fichier venant du monde Microsoft a l’avantage d’assurer une compatibilité sur tous les systèmes. Ainsi la clé pourra être lue par tous les systèmes d’exploitation (Linux, Mac, Windows).
Mais on peut avoir envie d’utiliser un système de fichier linux (ext2, ext3, ext4). C’est le cas par exemple d’une clé USB bootable (live usb) qui en plus de la partition FAT32 accueillant le live-cd, possède une partition de donnée que l’on souhaite en ext4 pour bénéficier de la gestion des droits ou outrepasser la limite des 4Go de taille de fichier de la FAT32.
Dans ce cas la partition linux de clé USB ne sera pas reconnue sous Windows et il semble alors impossible de partager des fichiers de linux à windows. Heuresement qu’il existe un utilitaire qui permet sous windows de lire des partitions linux jusqu’au ext4: Ext2Read
Tous les linuxiens peuvent donc formatter leurs clés USB en ext4 tout en pouvant partager leurs fichiers avec leurs amis windosiens. Linux est un monde ouvert.