Posts Tagged ‘FreeBSD’

msk0: watchdog timeout – Une solution simple et crade

Friday, January 29th, 2010

Je me suis rendu compte il y a quelques semaines que mon interface réseau (msk0) cessait de fonctionner après un certain temps (jours, parfois des semaines) sous une charge modérée ou importante, tout en inondant le journal système de « msk0: watchdog timeout ». Ce qui est plûtot gênant pour un serveur… Je n’ai malheureusement pas réussi à corriger le problème en désactivant le MSI via l’outil sysctl(8)

Le problème viendrait de :

  1. Une carte de mauvaise qualité (Marvell 88E8053)
  2. Un driver msk(4) peu testé et donc rempli de bugs potentiels

La seule façon de rétablir la connexion est de redémarrer la machine. Ce qui pose problème quand on a accès à la machine en question uniquement par SSH la majorité du temps…  J’ai donc réalisé un petit script (vraiment fait à la vite), faisant office de solution de secours, qui fait automatiquement redémarrer la machine si un watchdog timeout a été détécté. Cela permet de ne pas complètement bloquer l’accès via SSH.

Il suffit donc de lancer ce script en cronjob (effectué par root, bien sûr) :

#!/bin/sh

LOGFILE="/var/log/check_msk0"
DATE=`date`

CLEAN=`echo | grep zero`
LOGDATE=`date "+%b %d"`
TIMEOUTS=`cat /var/log/messages | grep "msk0: watchdog timeout" | tail | grep "$LOGDATE"`

if [ "$TIMEOUTS" = "$CLEAN" ]
then
 echo "$DATE OK, no timeouts." >> $LOGFILE
 echo OK.
else
 echo "$DATE WATCHDOG TIMEOUT, initiating reboot..." >> $LOGFILE
 echo Rebooting in 15 seconds. Press ^C to abort.
 sleep 15
 cp /var/log/messages /var/log/messages.timeout
 echo > /var/log/messages
 /sbin/reboot
fi

Inutile de préciser que j’ai commandé une nouvelle carte réseau, plus adaptée pour un serveur, et que cette solution est vraiment temporaire…

Related Posts:

Petit DT et mises à jour

Friday, December 25th, 2009

Hello there,

Désolé pour la petite indisponibilité d’environ une semaine, la faute à un bloc d’alim qui a rendu l’âme…

Bon, j’en ai en attendant profité pour mettre à jour le système, avec :

  • Une nouvelle alim, et un onduleur, pour ne pas avoir des soucis de FS corrompu
  • Quatre disques de 1.5 TB en RAID10, grâce à ZFS. Ce système de fichiers est réellement génial.
  • FreeBSD 8.0 avec Apache qui tourne dans une jail :-)

Related Posts:

Compiler GoatTracker sous FreeBSD

Saturday, February 28th, 2009

GoatTracker est un tracker produisant de la musique pour le Commodore 64. Il est disponible sous license GNU et est multiplate-forme.

Cependant, il n’a pas été porté sous FreeBSD, bien qu’il fonctionne bien sous Linux. Heureusement, grâce à quelques hacks simples, il est possible d’utiliser GoatTracker sous FreeBSD.

Avant tout, vérifiez que vous avez les ports/packages SDL d’installés, ainsi que GNU Make (“gmake”) différent du BSD Make par défaut (“make”). Il y a quelques différences dans la structure des Makefiles donc il faut utiliser l’un ou l’autre en fonction de ce qu’on compile.

Ensuite, procurez vous GoatTracker à cette adresse : http://covertbitops.c64.org/ (rubrique “Tools”).

Unzippez les sources dans un répertoire spécial crée à cette occasion, et placez vous dedans.

Avant de compiler GoatTracker, il faut compiler 2 outils qui seront nécessaires : datafile et dat2inc.

Placez vous donc dans le répertoire src/bme. Avant de lancer gmake, il faut modifier le Makefile car il est adapté à une machine Linux. Or, les machines Linux n’utilisent quasiment pas le préfixe /usr/local pour les includes. Le Makefile va donc chercher SDL_types.h dans /usr/include, alors qu’il est situé dans /usr/local/include. Pour corriger cela, il suffit d’ajouter ceci aux CFLAGS : -I/usr/local/include. Le makefile étant ici extrêmement simple, rajoutez cela aux deux appels à gcc.

Vous pouvez ensuite lancer la compilation avec gmake. Une fois que c’est terminé, vous devez copier ces deux exécutables produits dans votre $PATH, donc en gros vous devez copier les fichiers datafile et dat2inc dans /usr/local/bin.

Ensuite, placez vous dans le répertoire src. Cette fois, le Makefile est un peu plus complexe, vous devez rajouter -I/usr/local/include à la fin de la ligne CFLAGS= dans le fichier makefile.common. La compilation se passe ensuite sans problèmes.

Vous pouvez enfin jouer avec GoatTracker, l’exécutable étant situé dans le sous dossier linux/ et commencant par gt2. Enfin, voici une preuve que ça fonctionne :

GoatTracker

Related Posts:

Fedora 10, test prolongé et conclusions

Sunday, January 18th, 2009

J’ai testé Fedora 10 pendant à peu près un mois, histoire de voir comment ça a évolué depuis ma dernière expérience Linux, et également pour voir à quel point FreeBSD déchire tout. Pourquoi ? Vous allez très vite comprendre.

On passe tout de suite au premier point qui fâche : PulseAudio. Je suis pas intrinsèquement “contre” ce dernier, mais son intégration est tellement bâclée et son développement est tellement actif encore qu’il serait préférable de ne pas l’utiliser par défaut, ou encore de nous laisser le choix à l’installation. PulseAudio est l’avenir de l’audio sous tous les sytèmes, peut-être. Mais dans le futur.

Déjà la doc est relativement pauvre. En dehors du PerfectSetup, on est un peu seul dans la nature. Donc quand ça merde, on l’est aussi. Le problème de PulseAudio c’est que plein de trucs ne fonctionnent pas encore avec. Certes, il a un mode d’émulation de pérphiériques io OSS via l’utilitaire padsp, ça marche de temps en temps mais il y a également des cas ou ça ne marche pas. Par exemple avec Wine, c’est une vraie plaie pour faire marcher l’audio. Quand à l’émulation alsa, n’en parlons pas, je n’ai jamais comrpis comment m’en servir et je n’ai jamais réussi à obtenir quelque chose de concluant avec ça.

Cependant, mes problèmes ne se sont pas arrêté là, car une fois que tout marchait “à peu près”, je me suis rendu compte que mon microphone n’étais pas reconnu. Et là, c’est le comble ! J’ai demandé de l’aide sur IRC, sur les forums, rien. Pourtant mon chipset est très très commun en ce moment (hda_intel).

Ensuite, un gros dernier problème en ce qui concerne la latence audio. Elle est bonne, mais cependant le son était très mauvais, avec beaucoup d’artefacts audio, ce qui est quand même dérangeant quand on est adepte de MAO.

Néanmoins, PulseAudio possède quelques fonctions qui auraient pu être sympas. Comme par exemple la diffusion RTP sur le réseau, qui permet par exemple de lire la musique de sa bibliothèque du PC du bureau avec MPD, et entrendre le son sortir par son ordinateur portable situé dans une autre pièce. Seulement, je n’ai jamais réussi à la faire fonctionner et ça n’était pas à cause du firewall ni des débits réseau (les deux PC étaient câblés directement via un hub).

Ce qui est dérangeant, c’est quand on pense qu’avec FreeBSD, tout ça fonctionne au poil, du premier coup et sans toucher à rien : un simple kldload snd_hda et paf, ça fait des chocapics. Basse latence dans MilkyTracker, et ce même si plusieurs applications utilisent actuellement le périphérique, microphone reconnu et volume bien confortable, pas de “device busy” au moindre pet de mouche, la zénitude totale quoi.

Passons maintenant à autre chose : le gestionnaire de paquets. Mon arbre de ports favori m’a réellement manqué, pas parce que PackageKit et yum sont mauvais mais qu’on arrive vite aux limites. Déjà, quand on veut compiler quelque chose, on doit installer une tonne de paquets de développement (en gros ce sont des fichiers .h) sinon ça ne compile pas. Jamais eu besoin de faire ça avec FreeBSD, étant donné que les ports utilisent les sources au lieu de paquets précompilés (bien que ça soit possible d’en installer aussi sous FreeBSD).

Ce qui était embêtant, c’était les base de données de rpm qui avaient tendance à se corrompre toutes seules, et à bloquer tous les threads jusqu’a ce qu’on supprime de fichiers bien particuliers, c’est relativement agaçant à force.

Sinon, à part ça, Fedora a quand même des trucs vraiment cool comme par exemple la possibilité d’installer les paquets i386 ou amd64 si on est en amd64, afin de lancer des programmes binaires compilés pour une architecture i386. Y’a aussi le démarrage graphique relativement rapide, un thème GNOME par défaut bien réussi et bien intégré. Enfin les goûts et les couleurs, …

Related Posts: