MythTV, les SSD et le démarrage trop rapide
Aucun commentaire sur MythTV, les SSD et le démarrage trop rapideaoût 29, 2010 at 2:56 Categorie :PC Home Cinema
Souvent, les nouvelles technologies ont des problèmes de jeunesse. Fréquemment, elles n’apportent pas vraiment tous les bénéfices auxquelles on s’attendait. Et parfois même, elles marchent trop bien.
La drôle d’expérience que j’ai eu l’occasion de vivre avec un SSD fait partie de ce dernier cas.
Un des avantages du disque SSD, bien connu et qui fait baver de nombreux adeptes des benchmark, est la rapidité de démarrage du système. Dans le contexte d’un PC Home Cinema, cette caractéristique en fait un véritable « must-have », un petit plus pouvant drastiquement améliorer le WAF. C’est donc tout naturellement que, après l’achat, j’ai pris un plaisir non dénué de fierté puéril à découvrir que mon système pouvait être « prêt » (frontend MythTV lancé) en moins de 20 secondes, départ arrêté depuis grub, et ce sans optimisation particulière et alors même que j’utilise un environnement de bureau plutôt lourd (KDE). Bref, tout à fait ce que j’attendais.
Mais oh, surprise, les démons de l’informatique ont déterminé qu’il était important de me fournir matière à article, et ont donc introduit un effet de bord particulièrement vicieux : mon système démarre parfois trop vite. Ou plus exactement, MythTV se lance trop rapidement ! Alors même que je ne suis pas passé au massivement parallèle Upstart, restant fidèle au bon vieux init de System V que je maîtrise bien, le démarrage pourtant essentiellement séquentiel de mon système arrive quand même à faire des siennes. J’explique :
Symptôme : le vilain écran me demandant de rentrer les paramètres du backend à la main apparaît une fois sur deux, car le backend mentionné dans la configuration n’est pas joignable.
Cause : l’interface réseau est trop lente à se rendre disponible, les logiciels sont chargés bien plus vite que la normale, et les requêtes TCP à destination d’autres machines de mon réseau local n’aboutissent parfois pas au moment du démarrage.
Remède : un petit script quick-and-dirty super simple qui ping ma machine principale avant de lancer MythTV. Il suffit ensuite d’appeler ce script par votre lanceur habituel en lieu et place du lanceur du frontend MythTV.
#!/bin/bash killall mythfrontend killall mythwelcome ping -c2 192.168.0.1 > /dev/null result=$? while [ $result -ne 0 ] do sleep 1 #bonus : vous pouvez glisser ici un petit réveil par le réseau. #wakeonlan -i 192.168.0.255 <adresse_mac> ping -c2 > /dev/null result=$? done mythfrontend &
Bonus
La même chose peut être valable pour lancer le backend sur une machine trop rapide. Il faut donc adapter le script /etc/init.d/mythbackend et ajouter le même genre de test simplet.
Je vous offre une petite subtilité gratuite qui mérite à elle seule cette section bonus : attention à ne pas oublier de commenter l’éventuelle ligne « set -e » ! Celle-ci à pour intéressante (et détestable dans notre cas) particularité de commander l’interruption complète du script dès lors qu’une des commandes n’a pas retourner le code ok (zéro en bash). Vous vous doutez bien que cette option est invalidante quand on cherche à tester par ping une machine susceptible de ne pas répondre.