Click here to check if anything new just came in.
February 21 2012
February 11 2012
February 05 2012
Speed your life, Linux & SSD
Je viens de monter un SSD à la place de mon ancien disque classique sur mon macbook vieux de 3 ans. Voici un bref retour d’expérience.
Afin d’avoir quelques chiffres, avant d’installer le SSD, j’ai installé bonnie++ qui est un logiciel de benchmark de disque.
Pour le lancer, voici une commande permettant de prendre en compte facilement la quantité de RAM disponible sur votre PC ( je ne sais plus trop d’où elle vient, merci à son auteur en tout cas
sudo bonnie++ -n 0 -u 0 -r `free -m | grep 'Mem:' | awk '{print $2}'` -s $(echo "scale=0;`free -m | grep 'Mem:' | awk '{print $2}'`*2" | bc -l) -f -b -d /home
Cette commande nous donne un résultat brut assez peu lisible.
Using uid:0, gid:0.
Writing intelligently...done
Rewriting...done
Reading intelligently...done
start 'em...done...done...done...
Version 1.03e ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
EquinoxeFR 7366M 40652 5 18250 2 61482 4 70.7 0
EquinoxeFR,7366M,,,40652,5,18250,2,,,61482,4,70.7,0,,,,,,,,,,,,,Heureusement, bonnie++ est fourni avec des scripts permettant de mettre en forme les données.
echo "EquinoxeFR,7366M,,,40652,5,18250,2,,,61482,4,70.7,0,,,,,,,,,,,,," | bon_csv2html > bonnie_results.html
Ce qui nous donne un tableau HTML de ce type.

Maintenant que nous avons les chiffres de notre disque classique, nous pouvons installer le SSD. Afin de faciliter la migration des données, j’ai monté le SSD dans le portable et placé l’ancien DD dans un boitier USB. La copie des partitions existantes a été faite à l’aide de Clonezilla lancé depuis le LiveCD « parted magic« .
Voilà, les données sont copiés, nous redémarrons la machine en à peine 10 sec !!! ( de grub à l’invite de login GDM )
Visiblement le gain de performance est bien là et le silence est absolu, pas une pièce en mouvement, quel plaisir.
Afin d’améliorer encore l’utilisation du SSD, voici quelques optimisations:
Tout d’abord, changeons le « I/O Scheduler » qui est contre productif en mode « cfq » avec un disque SSD. Dans /boot/grub/menu.lst, il faut placer elevator=deadline dans les paramètres du kernel.
# (0) Arch Linux title Arch Linux root (hd0,0) kernel /boot/vmlinuz-linux root=/dev/sda1 elevator=deadline ro quiet vga=773 initrd /boot/initramfs-linux.img
Ce qui après un redémarrage nous donne
[pierre@EquinoxeFR ~]$ cat /sys/block/sda/queue/scheduler noop [deadline] cfq [pierre@EquinoxeFR ~]$
Ensuite, réglons quelques paramètres pour le montage de nos partitions:
[pierre@EquinoxeFR ~]$ cat /etc/fstab # # /etc/fstab: static file system information # # devpts /dev/pts devpts defaults 0 0 shm /dev/shm tmpfs nodev,nosuid 0 0 /dev/sda1 / ext4 noatime,discard,data=writeback,errors=remount-ro 0 1 /dev/sda2 swap swap defaults 0 0 /dev/sda3 /home ext4 noatime,discard,data=writeback,errors=remount-ro 0 1
- noatime: désactive la mise à jour de l’heure d’accès aux fichiers. Ca n’a que peu d’intérêt et ça use le SSD inutilement.
- discard: active le TRIM pour préserver au maximum la durée de vie du SSD
- data=writeback: journalise uniquement les métadatas avec EXT4. Attention il faut faire un tune2fs -o journal_data_writeback /dev/sda1 depuis un CD bootable sur la partition root sous peine de ne pas pouvoir redémarrer…
Voilà, après ces quelques optimisations, nous avons un système très réactif ( le jour et la nuit
même si je suis un peu étonné que les chiffres ne soit pas plus parlants. J’ai un SSD SATA III alors que mon portable ne supporte que le SATA II mais qui peut le plus, peut le moins… Ceci dit, j’ai quand même l’impression d’avoir des résultats en dessous de ce que l’on peut trouver sur le net. Peut-être que ça vient du contrôleur du macbook… sur OSX, beaucoup ont des problèmes de « link speed » sur le bus SATA avec de nombreux SSD.
Update 5/02:
Les résultats avec le scheduleur sur noop
February 02 2012
rp_filter et maux de tête
Je viens de passer un certain temps à régler un problème avec une machine fraîchement migrée de CENTOS 5.7 à CENTOS 6.2
J’ai une machine dans un réseau A qui tente de contacter mon serveur qui dispose d’une interface (1) dans le réseau A et une interface (2) dans le réseau B.
Plusieurs cas de figure:
- La machine ping l’adresse de l’interface (1) du serveur. C’est sur le même réseau, tout va bien.
- La machine ping l’adresse de l’interface (2) du serveur. Ce n’est pas le même réseau, le routeur joue son rôle, le paquet ICMP arrive bien sur l’interface (2) comme l’atteste tcmdump, mais il n’y a jamais de ECHO REPLY… WTF ?!?
Ce cas de figure marchait parfaitement avec CENTOS 5.x. C’était sans compter l’arrivée du noyau 2.6.31 qui a modifié le fonctionnement du « Reverse path filtering »
Extrait Release notes Redhat 6x:
A change in the 2.6.31 Linux kernel made thenet.ipv4.conf.default.rp_filter = 1 more strict in the I/O that is accepted. Consequently, in Red Hat Enterprise Linux 6, if there are multiple interfaces on the same subnet and I/O is sent to the one that is not the default route, the I/O will be dropped. Note that this applies to iSCSI iface binding when multiple interfaces are on the same subnet. To work around this, set the net.ipv4.conf.default.rp_filter parameter in /etc/sysctl.conf to 0 or 2, and reboot the machine.
Quand la machine contacte le serveur sur l’interface (2), le serveur voit un paquet provenant du réseau A, il ne va pas comme avec CENTOS 5 (en vert) répondre par la même interface en routant le paquet mais va tenter de répondre avec l’interface (1) (en rouge sur le schéma) qui est sur le réseau A. Or, c’est la qu’intervient le rp_filter qui va détruire la paquet !
Pour se sortir de cette situation il suffit d’éditer /etc/sysctl.conf et de changer net.ipv4.conf.default.rp_filter = 1 pour net.ipv4.conf.default.rp_filter = 2 ou éventuellement net.ipv4.conf.default.rp_filter = 0
January 21 2012
Flux de création de fichiers GCODE avec des outils libres
Après le petit tutoriel de ce matin, voici un post qui résume le « flux de production » de mes fichiers GCODE.
- La base
Tout commence par l’objet indipensable à la prise de mesure: le pied à coulisse.
- Les matériaux
Une fois l’objet à créer correctement dimensionné, il faut trouver le matériau dans lequel on va le créer. J’utilise principalement des bois et plastiques, les métaux étant (à par pour de la gravure) trop difficiles à fraiser avec mon matériel (il manque un refroidissement liquide ou un moteur de broche avec une faible vitesse et un gros couple).
- Pour le bois, je prends en général du MDF ou du contreplaqué qui peuvent faire entre 3 et 15 mm.
- Pour le plastique j’utilise beaucoup le PVC qui a un bon rapport qualité / prix ainsi que du PEHD ( c’est ce qui est utilisé pour les plaques à découper dans votre cuisine
ou encore du DELRIN (qui est excellent mais cher)
Le choix du matériau est fait, maintenant les logiciels ! Ne soyez pas effrayés, il y en a un certain nombre mais chacun est très performant dans son domaine.
- Les logiciels de CAO
Pour dessiner des pièces à usiner, celui que j’utilise le plus, c’est LibreCAD. C’est un fork libre du projet QCAD. Avec un peu d’habitude, vous dessinerez en quelques minutes des pièces relativement complexes en 2D. Vous pouvez commencer par regarder le tutoriel d’Andre PASCUAL, il parle de QCAD mais c’est la même chose, à part les icones qui changent, le principe est identique et le tutoriel est excellent.
Quand il s’agit de graver des dessins ou du texte, rien de vaut inkscape qui n’est plus à présenter. Il est préférable lorsque vous utilisez inkscape pour créer des fichiers DXF, nécessaires dans la suite du flux de production, d’enregistrer avec le greffon « Better DXF Output ». Pour certains dessins contenant des courbes de bezier ( splines ), je suis obligé d’ouvrir les DXF de LibreCAD avec Inkscape puis de les réenregistrer pour qu’il convertisse tout en polyline. Sinon, j’ai des plantages lors de la génération du GCODE avec HeeksCNC. Un bug qui sera surement corrigé par les développeurs, mais en attendant…
Dans un autre cadre très particulier, celui de la création de circuits imprimés, j’utilise KiCAD, un concurrent du très connu EagleCAD. Avec ce logiciel, je génère des fichiers GERBER qui seront ensuite convertis en GCODE.
- Les logiciels de création du GCODE
Ici, seulement deux logiciels sont utilisés:
HeeksCAD / HeeksCNC vont permettre de transformer le fichier DXF 2D en un fichier permettant de piloter la machine CNC. On renseigne au logiciel le diamètre de l’outil, son positionnement par rapport à la pièce, la vitesse d’avance… Bien qu’assez jeune, ce logiciel donne de très bon résultats.
En dehors des DXF, il y a les fichiers GERBER de Kicad. Là j’utilise pcb2gcode qui est un logiciel en ligne de commande.
pcb2gcode --metric --zsafe 2 --zwork -0.06 --offset 0.2 --zchange 25 --mill-feed 100 --mill-speed 5000 --back $back
- Pilotage de la CNC
Ici, un seul choix et non des moindres: EMC (LinuxCNC). Il prend en entrée les fichiers gcode et pilote la machine au travers d’un support temps réel du noyau linux. Il est préférable d’ailleurs de lui dédier une ancienne machine.
Et voilà après 2 heures de travail une manette de coinceur pour un voilier. L’originale en rouge est fendue, la nouvelle en DELRIN est très solide
et identique à l’originale (les économies de plastique en moins), elle parait plus épaisse mais ce n’est qu’un effet d’optique sur la photo.
Diagramme du flux de production
Si vous connaissez, utilisez d’autres outils, mettez les en commentaire c’est toujours intéressant !
Petit tutoriel vidéo pour utiliser LibreCAD, HeeksCAD et HeeksCNC
Un tout petit tutoriel pour apprendre à créer des fichiers GCODE en 5 minutes avec LibreCAD, HeeksCAD et HeeksCNC.
A voir en 720p / FullScreen sur Youtube.
January 15 2012
Quand la fraiseuse se met à jour – Episode 3
Il y a encore quelques détails comme la fixation des capteurs de fin de course de l’axe des X qui ne vont pas. Les capteurs actuels ( de simples inter de fin de courses ) ont été collés à la cyano pour faire vite. Il est maintenant temps de régler ça et de mettre en place une solution plus propre.
J’ai utilisé du PVC noir de 3mm pour fraiser des petits supports pour les nouveaux interrupteurs.
Un petit tour dans LibreCad permet de dessiner rapidement le support.
Ensuite c’est au tour de heekscad pour générer le GCODE. Découpe de 3mm en 3 passes avec une fraise au carbure 1 dent ( CncFraise )
Après quelques minutes, voilà le résultat prêt à être installé.
L’interrupteur en place sur le bloc Z.
Le tout est connecté avec un cable récupéré sur une souris d’ordinateur.
En face de l’interrupteur, j’ai placé une petite butée.
L’interrupteur en face de sa butée.
Et pour finir, la tête de la fraiseuse est maintenant équipée d’une ventilation pour chasser les copeaux et d’une LED pour bien éclairer la surface.
January 05 2012
Archlinux: J’ai cassé mon kernel !
A la suite d’une fausse manip lors d’une mise à jour, mon PC ne démarre plus avec archlinux. Après expertise, il s’avère que l’installation du paquet de mise à jour du noyau n’est pas allée à son terme. Le noyau ( Vmlinuz ) est à jour mais le initrd lui est trop ancien.
Pour s’en sortir, rien de très compliqué:
Démarrer l’installable d’Archlinux sur un CD ou une clef USB.
Réglez votre clavier correctement avec la commande km, c’est plus facile ensuite
Montez votre partition root
mkdir /recup mount /dev/sda1 /recup
Mettez à jour le mtab de la partition root
grep -v rootfs /proc/mounts > /recup/etc/mtab
Montez ensuite les filesystem spéciaux
mount -o bind /proc /recup/proc mount -o bind /dev /recup/dev mount -o bind /sys /recup/sys
Un petit chroot
chroot /recup mount -a
Vous pouvez retrouver les derniers paquets installés dans /var/cache/pacman/pkg/ et en réinstaller un avec pacman -U XXX.pkg.tar.gz, pour moi se sera linux-3.1.7-1-x86_64.pkg.tar.xz
Bingo ! Un redémarrage plus tard, tout refonctionne. J’ai trouvé après coup une doc similaire ici http://wiki.archlinux.fr/Install_chroot
January 04 2012
Compilation de RPM et erreur « *** ERROR: No build ID note found »
Si vous avez des erreurs « *** ERROR: No build ID note found » lors de la construction de paquets RPM ( J’utilise ici une Centos 6.2 x64 ) ça vient du script find-debuginfo.sh
+ /usr/bin/install -d /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install
+ /bin/cp -R ./FILES ./Makefile.PL ./apps ./bin ./doc ./etc ./installer ./lib ./man ./resources ./vmware-install.pl ./yes /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/build/rpm/BUILD/vmware-vsphere-sdk-4.0.0.161974
*** ERROR: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/XML-LibXML-1.63/lib/auto/XML/LibXML/LibXML.so
erreur: Mauvais status de sortie pour /home/build/rpm/tmp/rpm-tmp.3M3FWw (%install)
Mauvais status de sortie pour /home/build/rpm/tmp/rpm-tmp.3M3FWw (%install)
Exécution_de(%prep): /bin/sh -e /home/build/rpm/tmp/rpm-tmp.ilG9fLVous pouvez passer outre en ajoutant la directive
%undefine _missing_build_ids_terminate_build
au début de votre fichier SPEC. Voici un extrait de mon fichier:
%undefine _missing_build_ids_terminate_build Name: vmware-vsphere-sdk Version: 4.0.0.161974 Release: 2%{?dist} Summary: Vmware SDK for Perl
L’erreur précédente devient qu’un simple Warning sans incidence.
+ /usr/bin/install -d /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install + /bin/cp -R ./FILES ./Makefile.PL ./apps ./bin ./doc ./etc ./installer ./lib ./man ./resources ./vmware-install.pl ./yes /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install + /usr/lib/rpm/find-debuginfo.sh /home/build/rpm/BUILD/vmware-vsphere-sdk-4.0.0.161974 *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/XML-LibXML-1.63/lib/auto/XML/LibXML/LibXML.so *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/Compress-Raw-Zlib-2.005/lib/auto/Compress/Raw/Zlib/Zlib.so *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/Data-Dumper-2.121/lib/auto/Data/Dumper/Dumper.so *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/UUID-0.03/lib/auto/UUID/UUID.so *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/bin/libcrypto.so.0.9.8 *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/bin/libssl.so.0.9.8 *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/Class-MethodMaker-2.10/lib/auto/Class/MethodMaker/MethodMaker.so *** WARNING: No build ID note found in /home/build/rpm/BUILDROOT/vmware-vsphere-sdk-4.0.0.161974-2.el6.x86_64/usr/local/vmware-sdk-install/lib/XML-LibXML-Common-0.13/lib/auto/XML/LibXML/Common/Common.so
December 31 2011
December 27 2011
December 21 2011
December 19 2011
November 30 2011
Archlinux, udev et les mots clefs.
Dans les dernières versions d’UDEV, le mot clef SYSFS n’est plus supporté. Si vous utilisez des règles udev personnalisées, vous aurez ce message d’erreur dans la console et les logs:
udevd[257]: unknown key 'SYSFS{idVendor}'
in /etc/udev/rules.d/51-garmin.rules
Allez dans /etc/udev/rules.d et lancez un petit coup de sed:
sed -i -e s/SYSFS/ATTR/g *.rules
November 29 2011
November 10 2011
November 06 2011
November 05 2011
Batterie générique pour caméra Drift HD170 stealth
Les caméras Drift HD170 stealth sont livrées avec des batteries d’une capacité de 1100 mAh. Le compartiment batterie dispose d’un cache amovible pour pouvoir accueillir une batterie plus grosse d’une capacité de 1700 mAh.
Il est difficile de se procurer les batteries additionnelles en dehors d’une commande sur internet. Il faut cependant savoir que ces batteries sont d’une taille standard, elles sont utilisées dans des caméscopes et autres appareils photos numériques. Après avoir mesuré la taille du compartiment batterie, j’ai trouvé des batteries compatibles.
- Les batteries d’origine de 1100 mAh sont compatibles avec les batteries NP-60
- Les batteries de forte capacité de 1700 mAh sont compatibles avec les batteries NP-120
Ces batteries sont disponibles facilement dans des magasins comme « 1000 et une piles » pour environ 29 €.
Voilà la batterie d’origine et la nouvelle de forte capacité ( 1800 mAh ).
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...











































