Une nouvelle charte a été élaborée pour le Planet-Libre. Tous les membres sont invités à la consulter et à la respecter.

Nous Suivre

    feed feed feed

En Direct de la Galerie

En Direct du Forum

Les Membres

Participer

Filter les articles :     Articles du jour   -   Articles de la semaine   -   Articles du mois   -   Tous
Gravatar de Artisan Numérique
Booster son android avec un tueur de tâches automatisé 
  • 8 votes
    vote oui
Par Artisan Numérique, le 02/03/2010 à 09:38.

Beaucoup (toutes ? Wink de ROM que l'on trouve pour Android se prétendent plus rapides et plus stables. De toute celle que j'ai testé (une bonne dizaines), c'est tout de même la MoDaCo qui ment le moins. D'un point de vue fonctionnel, la couche applicative étant la même que la ROM HTC Hero d'origine, il n'y a guère de surprises. Tout fonctionne à l'identique (bluetooth, APN à 5Mp, etc.). Pour la stabilité c'est un peu la même chose puisque cette ROM tourne sous Android 1.5 pour lequel a été conçu et testé cette couche applicative. Enfin concernant les performances, elles sont sans aucun doute meilleur. Le mérite revenant en grande partie à l'utilisation du Teknologist Kernel, un noyau linux optimisé pour le Hero, qui active le CompCache. Mais malgré cela, il est possible d'obtenir encore mieux de cette petite bestiole.

Avant de démarrer

Pour ce qui suit, il vaut mieux que vous ayez déjà suivi ce tutoriel.

Compcache

Le gros du gain des performances de ce noyau tient donc à l'utilisation du compcache dont consiste à dédier une partie de la mémoire (64 ou 128mo) à un disque virtuel qui sera utilisé en tant... que swap. Jusque là l'idée peut sembler stupide si l'on oublie d'indiquer que ce disque virtuel est compressé. Le résultat est donc une augmentation artificielle de la mémoire disponible pour les applications. Comme vous le voyez sur le graphique, la mémoire disponible (en orange) est du coup supérieur à la mémoire physique (en bleu). Voilà donc pour la théorie mise en oeuvre sur MoDaCo par le script de démarrage /system/init.d/ramzswap.sh suivant :
gaston$adb shell cat system/init.d/ramzswap.sh
/system/xbin/insmod /system/lib/modules/tun.ko
/system/xbin/insmod /system/lib/modules/lzo_decompress.ko
/system/xbin/insmod /system/lib/modules/lzo_compress.ko
/system/xbin/insmod /system/lib/modules/xvmalloc.ko
/system/xbin/insmod /system/lib/modules/ramzswap.ko disksize_kb=131072
/system/xbin/swapon /dev/block/ramzswap0
echo "10" > /proc/sys/vm/swappiness
echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
gaston$ 
contenu de ramzswap.sh

Comme vous le voyez, mis à par le module tun qui n'a rien à voir, la mise en oeuvre de compcache implique les modules de compression/décompression lzo, xvmalloc, un gestionnaire de mémoire écrit pour compcache et bien sur ramzswap qui est le swap en mémoire compressé fixé ici (pour une MoDaCo 3.1) à 128mo. Ensuite il ne reste plus qu'à activer le swap de linux (swapon) sur le device créé par ramzswap et de modifier la valeur de swapiness pour en profiter.

A l'usage le système est en effet plus réactif, ce n'est pas une illusion. Mais malgré cela on ne peut s'empêcher de pense qu'il s'agit là d'une emplâtre sur une jambe de bois. Loin de moi l'idée de dénigrer ce très bon travail mais consommer du CPU pour compresser de la mémoire n'entraîne un gain de performance que si le temps passé à vider la mémoire inutilisé est inférieur au temps passé à compresser les pages de swap. C'est pragmatiquement le cas mais le gain reste faible et on ne peut s'empêcher de se dire qu'une meilleur gestion de la dite mémoire devrait être plus efficace. Et c'est en faisant des recherches dans ce sens que je suis tombé sur l'auto-taskkiller.

Auto taskkiller

Il existe une multitude de tueurs de tâches sur le market Android et ils ont à peu prés tous les deux mêmes défauts : ils sont aveugles s'agissant des tâches systèmes et surtout, on doit les utiliser... Fort heureusement il existe une autre approche beaucoup plus intelligente directement intégré au noyau linux pour Androphone, le taskkiller interne. Son principe est de brider quelque peu le gros avantage d'android sur iphone, le multi-tache. En effet, a force de lancer des applications qui elles-mêmes lancent des processus, etc, etc, la mémoire se trouve vite saturée (et le CPU aussi au fond). Le principe du taskkiller est une heuristique pour déterminer quelle tâches ne sont plus utiles et de les détruire pour gagner de la mémoire. Cette fonctionnalité est gérée par un pilote spécifique à Android, LowMemoryKiller, réglable par un simple echo dans /sys/... permettant d'indiquer les contraintes de destruction de processus en fonction de la mémoire restante.

Le principe technique de ce consiste à associer à chaque processus lancé, un score appelé oomadj (pour out of memory adjustement) allant de -17 à +15. Plus le score est élevé, plus le processus est jugé inutile en cas de crise de mémoire. Le score en lui-même est réglé par Android selon les références suivantes :

SYSTEM_ADJ -16
CORE_SERVER_ADJ -12
FOREGROUND_APP_ADJ 0
VISIBLE_APP_ADJ 1
SECONDARY_SERVER_ADJ 2
HIDDEN_APP_MIN_ADJ 7
CONTENT_PROVIDER_ADJ 14
EMPTY_APP_ADJ 15

Comme on le voit, les applications critiques sont positionné avec un score négatif (-12), c'est typiquement le cas de la téléphonie. A -16 c'est le système lui-même qui tourne.

Au score 0 nous avons les applications en premier plan, celles donc qu'il n'est cool de tuer car l'utilisateur bosse dessus Smiling Ensuite nous avons les applications visibles (1), celles avec interface mais en arrière plan (7), etc.

Le réglage du taskkiller va fonctionner en associant un score de processus "tuables", avec un niveau de mémoire minimum servant de déclencheur. La liste des scores tuables est lisible dans le fichier /sys/module/lowmemorykiller/parameters/adj :

$adb shell cat /sys/module/lowmemorykiller/parameters/adj
0,1,2,7,14,15
root# 
Liste des scores tuables

Nous retrouvons ici les scores donnés plus haut, et uniquement les positifs (non-système). Maintenant pour les limites de mémoire libre, c'est le fichier /sys/module/lowmemorykiller/parameters/minfree :

$adb shell cat /sys/module/lowmemorykiller/parameters/minfree
1536,2048,4096,5120,5632,6144
root# 
Liste des niveaux de mémoire libre

Ces valeurs sont exprimés en "pages de 4ko". Ainsi les applications de score 7 sont tuées dés que la mémoire libre tombe au dessous de 5120x4=20mo. Les processus visibles mais qui ne sont pas utilisé à un moment T (score 1) sont tuées à 2048*4=8mo, etc... Sachant cela il est possible d'injecter dans le kernel des valeurs un peu plus agressives, comme par exemple !

$adb shell echo "1024,2048,4096,8192,16384,32768" > /sys/module/lowmemorykiller/parameters/minfree
root# 
Liste des niveaux de mémoire libre

Avec ces nouvelles valeurs nous avons une tuerie de processus qui débute dés que la mémoire libre passe en dessous des 128mo (4*32768) avec une libération des applications en avant plan à 4mo de libre. De quoi garder en permanence de la mémoire sous la pédale, et donc de la réactivité.

Maintenant ces valeurs sont les miennes et vous pouvez en tester d'autres.

Mise en oeuvre du tueur

Pour simplifier nous allons prendre comme base le script d'initialisation de compcache de la MoDaCo que nous allons joyeusement remplacer par nos valeurs pour lowmemorykiller. Pour cela nous allons récupérer ce script en local :

gaston$adb pull /system/init.d/ramzswap.sh ramzswap.sh
12 KB/s (527 bytes in 0.042s)
gaston$ 
Liste des niveaux de mémoire libre

Ceci fait, avec votre éditeur préféré, vous allez modifier ce script pour mettre en commentaire les éléments de compcache et ajouter ceux du tueur

#/system/xbin/insmod /system/lib/modules/tun.ko        # pas besoin de ce module pour moi
#/system/xbin/insmod /system/lib/modules/lzo_decompress.ko
#/system/xbin/insmod /system/lib/modules/lzo_compress.ko
#/system/xbin/insmod /system/lib/modules/xvmalloc.ko
#/system/xbin/insmod /system/lib/modules/ramzswap.ko disksize_kb=131072
#/system/xbin/swapon /dev/block/ramzswap0
#echo "10" > /proc/sys/vm/swappiness
echo "performance" >  /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "1024,2048,4096,8192,16384,32768" > /sys/module/lowmemorykiller/parameters/minfree
scripte ramzswap.sh

Voilà c'est tout. Vous pouvez maintenant ré-injecter le fichier dans le téléphone et redémarrer

# remontage de la partition système en écriture
gaston$adb remount
 
# injection du nouveau script
gaston$adb push ramzswap.sh /system/init.d/ramzswap.sh
12 KB/s (527 bytes in 0.042s)
 
# redémarrage
gaston$adb shell reboot
gaston$ 
Liste des niveaux de mémoire libre

Conclusion

Le taskkiller permet d'adresser le problème de la taille limité des androphones qui implique un travail trop intensif du garbage collector de la machine virtuel lorsqu'elle vient à manquer. Sur ce point, cette technique est à mon sens plus efficace que compcache. Maintenant s'agissant de la rapidité pour passer d'une application à l'autre, il est évident que compcache est plus adapté car taskkiller va vous obliger à relancer vos applications, avec donc un temps de démarrage supplémentaire. A vous de voir ce qui convient le mieux à votre usage.

Toujours est-il que si on avait un doute, Android est bien un petit GNU/Linux qu'il est possible de tweaker à loisir.

Retourner au sommaire
Gravatar de Artisan Numérique
Petit boîte à outils du bidouilleur Android et HTC Hero 
  • 24 votes
    vote oui
Par Artisan Numérique, le 01/03/2010 à 18:59.

Une fois les bons outils en main, le bidouillage d'un androphone est un véritable plaisir, pour peu que l'on s'y retrouve dans les multiples conversations dans la myriade de forums qui explique chacune un bout du sujet. L'objectif de ce tutoriel de regrouper les étapes qui mènent à la connaissance de ces outils avec comme but "ultime" l'installation d'un bootstrap magique qui permet de tout faire, ou presque, avec son téléphone.

Rapide présentation d'Android et de l'HTC Hero

Android

Android est un système d'exploitation Open Source conçu par Google spécifiquement pour les terminaux mobiles (smartphone, tablettes, etc.). En réalité le projet d'origine n'a rien à voir avec Google mais avec la petite société Android inc. que Google a racheté en 2005.

Depuis, le CEO de cette société est devenu le directeur de la section "plateformes mobiles" de Google et Android est progressivement monté en puissance avec l'objectif clair de dégommer l'iPhone OS d'Apple, le WebOS de Palm, le Windows Mobile de MicroSoft, etc. Et pour arriver à ses fins, Google a réuni un ensemble de partenaires (HTC, LG, Motorola, Samsung, Sony, etc.) sous la bannière de l'Open Handset Aliance. Pour l'heure ce n'est clairement pas Apple qui souffre le plus de la multitude d'annonce de nouvelles plate-formes tournant sous Android, et malgré la petite guerre qui semble s'engager, il ne faut pas oublier qu'Eric Schmidt est toujours au board de la marque à la pomme, compliqué cette affaire Wink

Du point de vue utilisateur, Android est donc un OS, une interface (avec bureaux virtuels et widgets) et une série d'applications clef en main (gmail, gmap, etc.). Du point de vue développeur, Les applications pour Android se basent sur un kit de développement Java. Plus exactement, Android embarque une machine virtuelle Java optimisée appelée Dalvik, le langage Java et un sous-ensemble de ses librairies. A ce titre, et contrairement à beaucoup de téléphones du marché, Android n'est pas une mouture de J2ME (Java Mobile Edition) mais une toute nouvelle plateforme Java, ce qui ne l'empêche cependant pas de pouvoir exécuter des applications J2ME sous réserve d'installer une JVM compatible (ex. JBed).

Donc ce qui nous intéresse avec ce système d'exploitation c'est que, contrairement à celui de l'iPhone, il est disponible sous licence Apache (version 2) et peut donc être considéré comme libre. En fait il est même carrément libre (basé sur un linux kernel) au delta de ce que l'on appelle les Google Bits (Google Map, GMail, etc...) dont on peut techniquement se passer...

HTC Hero

HTC a une "longue" histoire avec Android qui commence avec le premier téléphone utilisant cet OS, le fameux HTC G1 (aussi appelé Google Phone) lancé sur le marché américain en octobre 2008. Le Hero (alias Rosie) est la troisième génération de téléphone Android de la marque, mais est surtout considéré comme le premier à réellement se poser en concurrent du sacro-saint iPhone, grâce à un hardware plus que complet, mais surtout par l'ajout d'une interface (nommée HTC Sense) qui vient se superposer à Android en lui octroyant une ergonomie très proche de celle du téléphone d'Apple.

D'un point de vue hardware, le Hero dispose d'un processeur Qualcomm MSM 7201A (architecture ARMv6) à 528Mhz, de 288Mo de RAM et 512Mo de flash. Cela peut sembler peu par rapport à l'iPhone, mais ce serait sans compter le slot microSD qui permet d'embarquer jusqu'à 32Go de flash supplémentaire. Côté périphérique nous avons un écran multi-touche (320x480), un trackall, une caméra 5 mpixels, un GPS, une boussole 3D et un accéléromètre 3D. En explorant la configuration interne j'ai aussi trouvé un capteur de température mais rien ne semble en faire état dans la doc officielle.

Pour ce qui est de la connectivité c'est plus que complet avec bien évidement le Quadri bande GPS et le Drual Band UMTS (3G), le Wifi (b et g) et le Bluetooth. L'appareil est en outre doté d'un connecteur Jack 3.5 pour le casque-micro et d'une prise mini USB standard. Cette dernière intègre des extensions HTC permettant notamment de faire passer l'audio (aucune idée pour la vidéo).

Maintenant physiquement, le Hero un appareil un peu plus épais que l'iPhone (14.35mm) mais moins large (56.2 mm) et de même hauteur (112mm) pour 135g, batterie comprise.

Installation du Kit de développement pour Android

Le kit de développement pour Android ne sert pas qu'aux développeurs. Il permet de compiler soit même des applications Andoid (par exemple la dernière version du client Funambol), ou encore de bénéficier d'outils bien pratiques comme l'émulateur d'Android (une sorte de VirtualBox pour cette plate-forme), ddms qui permet de se connecter sur son téléphone pour en auditer le fonctionnement mais surtout de faire des copies d'écran, et enfin adb que nous allons étudier un peu plus loin.

L'installation du kit de développement s'est grandement simplifié depuis CupCake. Aujourd'hui un centre de contrôle unique permet de télécharger les différentes plateformes, les mises à jour, créer et lancer l'émulateur, etc.

La première chose à faire est donc de télécharger cette application et la décompresser où bon vous semble (ex. /opt/android-sdk). Ensuite, si vous êtes en 64bits, vous devez installer certaines librairies 32bits nécessaire au lancement des outils.

  • libSDL
  • libx11
  • libalsa2

Une fois que tout est en place, il ne reste plus qu'à aller dans le dossier /opt/android-sdk/tools pour lancer la commande ./android. Là nous découvrons une interface GTK de base mais propre et simple à utiliser. La première chose à faire et d'aller dans la rubriquer settings pour empêcher l'usage d'https pour le téléchargement des plate-formes.

Ceci fait, nous allons dans installed packages pour appuyer sur le bouton Update All.... Apparaît alors la liste des paquets disponibles. Là vous pouvez sélectionner la dernière version 2.1 d'android et clicker sur Install Accepted.

Le téléchargement commence et risque de prendre un certain temps. Lorsque c'est terminé, tous les outils sont en place.

Utilisation de l'émulateur

L'émulateur est bien pratique pour tester une version de la plate-forme, y installer des applications, tester des ROM, etc. Avec le centre de contrôle, il est très simple de créer un profile d'émulation pour une version donnée d'android (sous réserve de l'avoir installé, voir étape précédente). Pour cela vous devez aller dans la section Virtual Devices et clicker sur New...

Apparaît alors un panneau de configuration où vous pouvez saisir un nom de machine (ce qui vous chante), sélectionner un niveau de compatibilité (ex. Android 2.1), une taille d'écran, etc. Lorsque cela vous convient, clickez sur Create AVD et la machine virtuelle correspondante devrait apparaître dans la liste des Virtual Devices.

Il ne reste maintenant plus qu'à sélectionner la machine virtuel et clicker sur Start....

Paramétrage de l'USB debug et copie d'écran

Pour utiliser ADB et DDMS, nous allons devoir communiquer avec l'androphone en passant par le câble USB. Par défaut, le lien USB est utilisé pour synchroniser le téléphone avec un ordinateur de bureau ou encore de transformer le téléphone en disque externe. Pour utiliser nos outils et contrôler l'androphone à partir de GNU/Linux, nous allons devoir le configurer pour que l'USB fonctionne selon un troisième mode "USB Debug". Pour cela, allez dans les réglages du téléphone, dans la section Applications, puis Développement et cochez Débogage USB.

Lorsque c'est fait, vous pouvez raccorder le téléphone à votre ordinateur par le câble USB. En tapant dmesg dans une console, vous devez obtenir les informations suivantes :

root#dmesg
usb 8-4: new high speed USB device using ehci_hcd and address 69
usb 8-4: New USB device found, idVendor=0bb4, idProduct=0c02
usb 8-4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb 8-4: Product: Android Phone
usb 8-4: Manufacturer: HTC
usb 8-4: SerialNumber: HT97FL903160
usb 8-4: configuration #1 chosen from 1 choice
scsi70 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 69
usb-storage: waiting for device to settle before scanning
scsi 70:0:0:0: Direct-Access HTC Android Phone 0100 PQ: 0 ANSI: 2
sd 70:0:0:0: [sdd] Attached SCSI removable disk
sd 70:0:0:0: Attached scsi generic sg4 type 0
usb-storage: device scan complete
root# 
Mobile Android en mode débogage USB

La liaison USB est maintenant prête à être utilisée. Pour tester, toujours dans le dossier tools, lancez la commande ./ddms. Apapraît alors une nouvelle application qui n'est autre que le debugger/moniteur de la machine virtuelle du téléphone (aka Dalvik). Si ce dernier est correctement reconnu, vous devriez voir apparaître sa référence en tête d'une petit arborescence. Dans le cas contraire vous aurez des points d'interrogation indiquant que DDMS n'arrive point à communiquer avec le téléphone. Si vous avez bien branché le câble et bien activé le mode Debug, il se peut que ce soit là un problème de droit sur le périphérique USB. Dans ce cas, tentez de créer le fichier suivant

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c02", MODE="0666"

Notez que nous faisons correspondre les identifiants 0bb4 et 0c02 avec ce que nous voyons dans la trace donnée plus haut. Une fois le fichier sauvegardé, débranchez et rebranchez le câble pour vérifier que l'ami ddms se porte mieux.

Une fois que le téléphone est correctement pris en charge, vous pouvez créer une copie de l'écran en cours en allant dans Device/Screen Capture..., tout simplement. Bien évidement DDMS est beaucoup plus utile que cela... pour un développeur Smiling

Android Debug Bridge

Non, l'outil qui lui va nous être vraiment très utile est ADB. ADB (pour Android Debug Bridge) est un couteau suisse que tout bidouilleur d'Android se doit de connaître. Il permet en effet de communiquer en direct avec Android par la même connexion USB que DDBS pour y exécuter un tas de commandes utiles allant jusqu'à un véritable shell (un peu comme un ssh).

Comme nous savons grâce à l'étape précédent que la connexion USB du téléphone est fonctionnelle, il ne reste plus qu'à lancer un adb shell pour se balader dans le téléphone

root#./adb shell
gaston$ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.rc
init.hero.rc
init.goldfish.rc
init
default.prop
data
root
dev
gaston$exit
gaston$ 
Lancement de la commande adb

Ici fonctionne la majorité des commandes dont vous avez l'habitude en console unix (ls, find, rm, etc..) mais comme vous le constatez, le $ vous signifie bien que vous n'êtes pas root sur cette machine. Beaucoup d'opérations vous seront donc interdites.

Beaucoup d'autres commandes existent pour cet outil. Vous pouvez en obtenir la liste en tapant simplement ./adb. Vous pouvez ainsi lire et écrire sur le système de fichier en utilisant les commande ./adb push un_fichier un_dossier distant ou dans l'autre sens ./adb pull un_fichier_distant un_dossier_local. Ou encore, avec adb logcat obtenir les traces du système android en temps réel.

root#./adb logcat
I/Contact WidgetView( 122): com.htc.android.mail.intent.change changed mContentChanged? true changed false
D/NotificationFlashLightUtility getIncomingCall( 343): load fail~~~~~~~~~~
D/NewMailNotification( 343): 06021143 createNotification: isFlashEnabled> true, sound> 0, vibrate>1
D/NewMailNotification( 343): 06021143 enableJogBallLight>
I/Contact WidgetView( 122): android.intent.action.NOTIFICATION_ADD changed mContentChanged? true changed false
D/HardwareService( 65): vibratePattern , repeat=-1
I/HardwareService( 65): vibrating with pattern: 0 250 250 250
D/HardwareService( 65): VibrateThread , run start
D/MailWidget( 122): BroadcastReceiver: ACTION_HTC_MAIL_CHANGE...
D/MailWidget( 122): BroadcastReceiver: EXTRA_HTC_MAIL_FLAG_CHANGE: false, true, false, false, false
I/Contact WidgetView( 122): com.htc.android.mail.intent.change changed mContentChanged? true changed false
D/Rosie ( 122): request to update icon, itemId : 2
D/Rosie ( 122): request to update icon, itemId : 33
D/Rosie ( 122): request to update icon, itemId : 73
D/KeyguardViewMediator( 65): wakeWhenReadyLocked(6)
D/KeyguardViewMediator( 65): handleWakeWhenReady(6)
...
root# 
adb logcat - les traces d'android

Modification du mode recovery

Ce qui précède est valable pour tous les androphone, mais à partir d'ici, c'est du hero et uniquement du Hero qui s'agit. Dans tous les cas, je décline toute responsabilité si à partir de ces instructions vous transformez votre beau téléphone tout neuf en presse-papier de luxe. Soyez prudent, sauvegardez tout avant, vérifiez les sommes MD5 des image que vous utilisez, etc, etc.

Là nous rentrons dans le vif du sujet, remplacer la ROM du hero par une autre. Et comme pour un Zaurus, cela va passer par la mise en place d'un bootstrap alternatif à celui d'origine qui va nous permettre, entre autre, de flasher toutes les ROM que nous voulons.

Ce bootstrap est en réalité un remplacement de la partition "recovery" du Hero par une version légèrement "améliorée". Cette opération est rendu possible grâce à l'excellent utilitaire FlashRec. C'est une application tout ce qu'il y a de plus standard qui permet de sauvegarder et de restaurer cette partition. Téléchargez la version 20090815 (qui est la seul qui fonctionne chez moi) sur votre machine de bureau.

La seconde chose qui va nous falloir est l'image de remplacement pour la partition "recovery" que vous pouvez télécharger ici.

Maintenant nous avons tout ce qu'il nous faut. Pour ne prendre que le minimum de risque, nous allons placer tout cela sur la carte SD du Hero, en prenant soin de la formater préalablement. Si vous avez des choses dessus, recopiez-les en local en faisant glisser la barre de notification du téléphone, puis Connectez avec un câble USB et enfin Monter. La carte devrait apparaître sous Nautilus pour vous permettre la sauvegarde. Ensuite renouveler l'opération en choisissant cette fois Éteindre le périphérique de stockage, puis Éteindre.

Vos données étant maintenant au chaud, vous pouvez formater le disque en exécutant la séquence suivante : boutons home puis menu, paramètres, Carte SD et mémoire, Désactiver la carte SD, puis Formater la carte SD.

Vous pouvez maintenant remonter la carte qui doit apparaître vierge de tout contenu sous Nautilus. Recopiez à la racine les fichiers cm-hero-recovery.img et flashrec-2090814.apk. Pour plus de sécurité, vérifiez que vous avez la bonne somme MD5 sur l'image comme ceci :

root#md5sum cm-hero-recovery.img
aef554c1eb8b4b59ac4fc94c46216ff6 cm-hero-recovery.img
root# 
Somme mD5 de l'image recovery modifiée

Sous Linux, ce n'est pas parce que les fichiers sont copiés qu'ils sont physiquement stockés sur la carte SD. Pour vous en assurer, dans une console, usez de la commande sync qui seule peut vous assurer que tout a été correctement transféré. Ensuite seulement vous pouvez \"éteindre\" le montage sur le téléphone.

Vous pouvez maintenant éteindre le stockage USB. Ensuite, pour lancer l'installation de FlashRec, il va nous falloir un gestionnaire de fichier. Vous en trouverez un gratuit qui s'appelle Linda sur le Market. Une fois l'application installée, lancez là et allez dans le dossier sdcard, vous y retrouverez les deux fichiers. Sélectionnez FlashRec et utilisez l'installateur d'application.

Une fois FlashRec installé, retournez sur la home, affichez la liste des applications disponibles et sélectionnez Recovery Flasher. L'interface est très simple : une zone de saisie et deux boutons. Souvenez vous seulement d'une chose, en aucun cas il ne faut cliquer sur Flash Cyanogen Recovery 1.4.

Prudence étant mère de sûreté, avant tout chose, nous allons créer une copie de sauvegarde de la partition recovery. Pour cela cliquez sur le bouton Backup Recovery Image. Après un moment, vous devez obtenir à la racine de la carte SD, un fichier recovery-backup.img de 5242880 octets. Remontez le disque SD pour vérifier cela et sauvegardez ce fichier sur votre disque local. Ceci fait, éteignez à nouveau le stockage USB.

Retournez sur FlashRec, le bouton que nous avons précédemment utilisé doit maintenant proposer l'opération inverse : Restore Backup Recovery Image. C'est cette option que nous utiliserons si nous avons envie de remettre le téléphone dans son état standard. Pour l'heure nous allons passer au flashage de la nouvelle image en utilisant la zone de saisie et en tapant /sdcard/cm-hero-recovery.img. Attention à la prédiction du clavier qui peut vous rajouter des accents, ce qui se traduirait par le texte Invalid Recovery Image dans le premier bouton. Si vous avez correctement tapé, vous devez avoir dans ce bouton le texte Flash Custom Recovery Image. Si c'est le cas, cliquez dessus. Après un court moment l'image est flashée et il ne nous reste plus qu'à découvrir le fameux mode Recovery.

Pour cela, nous devons éteindre complètement le téléphone en appuyant longuement sur le bouton Décrocher jusqu'à ce qu'un menu apparaisse. Nous sélectionnons alors Éteindre, puis OK. Un fois l'appareil hors-fonction, pour passer en mode recovery, vous devez appuyer sur la touche Home, la maintenir pressée et appuyant sur la touche Décrocher. Maintenez les deux touches pressées ensemble jusqu'à ce que le téléphone vibre et affiche le logo Hero. Vous pouvez alors relâcher et attendre quelques instants. Apparaît alors le menu de notre nouveau mode recovery.

Sauvegarder la mémoire flash du Hero

Une option du menu du mode recovery va particulièrement nous intéresser pour l'instant, il s'agit de nandroid v2.2 backup. Cet utilitaire va nous permettre de sauvegarder complètement notre téléphone et ainsi nous permettre de le restaurer à son état initial en utilisant l'option Restore Latest Backup.

Sélectionnez donc l'option nandroid v2.2 backup avec le trackball, puis cliquez dessus (en pressant le trackball). Une confirmation vous est demandé en appuyant sur la touche home, après la sauvegarde commence et peut prendre un certain temps car il peut y avoir, selon ce que vous avez installé comme application, jusqu'à 512mo de données à transférer.

Une fois l'opération terminée, l'utilitaire vous renvoie au menu. Sélectionnez l'option Reboot system now pour relancer le téléphone. Lorsque le système c'est totalement initialisé, vous ne devez constater aucune différence avec ce que vous avez l'habitude d'utiliser. Remontez alors le stockage USB et recopiez le dossier nandroid en local pour disposer à l'abris d'une copie de votre système.

Rootage du téléphone

Maintenant que nous avons notre bootstrap custom, une connexion USB de deboggage, un adb fonctionnel et une sauvegarde faite, nous pouvons effectuer un rootage du téléphone. Le but de cette opération est d'implanter dans le téléphone un utilitaire qui va faire office de SUDO et ainsi permettre à d'autres applications d'obtenir les droits root de manière sécurisée (par exemple Titanium Backup). Ceci étant dit, pour ceux qui désirent changer la ROM de leur téléphone, vous pouvez joyeusement sauter cette étape car toute les ROM custom intègrent déjà cet utilitaire.

Le mode recovery dispose de trois particularités qui vont maintenant nous servir. La première est qu'il s'agit comme Android, d'un démarrage sur un noyau Linux. La seconde est que ce Linux active en standard le Débogage USB. Nous pouvons donc lancer une commande ./adb shell. La seconde est que contrairement à android, ce linux adb shell nous lâche sur un utilisateur root.

Le psoeudo SUDO que nous allons installer s'appelle SuperUser. Son principe est de n'autoriser l'accès root à une application que si vous validez cet accès à l'écran. Une sorte d'Allow-Deny à la Windows Vista en somme.

Nous allons donc commencer par télécharger cet outil ici et le décompresser. A l'intérieur se trouve une application android Superuser.apk qui va communiquer avec un utilitaire bas niveau su.

Pour installer nos deux fichiers, nous allons devoir monter la partition system. Cette partition, comme son nom l'indique, contient toutes les applications (system/app), les commandes (system/su), le paramétrage (system/etc), etc. Par défaut, en mode Recovery, cette partition n'est évidement pas montée. Elle correspond au périphérique /dev/block/mtdblock3 qui utilise le système de fichier yaffs2. Pour la monter nous exécutons donc la commande suivante :

gaston$adb shell mount /dev/block/mtdblock4 /system
gaston$ 
Montage de la partition system

Nous allons maintenant utiliser la commande adb pour envoyer nos deux fichiers sur le téléphone.

gaston$adb push su /system/bin/
gaston$adb push Superuser.apk /system/app/
gaston$ 
Utilisation d'adb pour pousser les fichiers sur le téléphone

La commande su appartenant à root, elle a besoin du sticky-bit pour permettre l'escalade de privilèges.

gaston$adb shell chmod 4755 /system/bin/su
gaston$ 
Ajout du sticky-bit à su

Et voilà, c'est terminé, vous pouvez maintenant redémarrer votre téléphone

gaston$adb shell reboot
gaston$ 
Redémarrage du téléphone

Une fois la machine en route, vous pouvez relancer la commande adb pour ouvrir un shell sur le téléphone. Vous êtes alors toujours en utilisateur non-privilégie ($). Tapez la commande su et validez. Sur l'écran du téléphone devrait apparaître une demande de confirmation du passage à root. Cliquez sur le bouton Allow. Et zou, sur la console abd, vous êtes maintenant root (invite #).

Installation d'une nouvelle ROM

La dernière étape de notre périple consiste à installer une toute nouvelle ROM qui sort du giron d'HTC pour prendre réellement possession de cette machine. Pour cela nous allons encore utiliser notre bootstrap magique qui est capable de deux choses non encore testées : remettre à zéro le téléphone (aka wipe, littéralement nettoyer), et "flasher" une nouvelle ROM présente sur la carte SD sous la forme d'une archive .zip.

A titre d'exemple, car il existe des dizaines de ROM pour le Hero, nous avons installer la ROM MoDaCo. Elle a l'avantage d'être très proche de la ROM HTC d'origine (avec les mêmes défauts dont le look & feel et la lenteur...), ren ajoutant pas mal de choses comme plus de fluidité, SuperUser (que nous venons de voir), JBed (pour lancer les applications J2ME), Spare Parts (plus atteindre certains réglages cachés d'android), Wifi Tether (pour connecter son ordinateur portable à la 3G du téléphone en passant par le bluetooth ou le wifi), busybox et nano (qui ne sont plus à présenter), A2SD (pour installer des applications sur la SD quant la place manque sur la machine), etc, etc et etc...

Pour installer cette nouvelle ROM, rien de plus simple. Il suffit de la télécharger, de la recopier telle-quelle à la racine de la carte SD. Ensuite, vous n'avez plus qu'à redémarrer la machine en mode recovery.

Avant d'installer la nouvelle ROM, il est préférable de reinitialiser systématiquement la machine avec ses réglages usine (attention, vous perdrez toutes vos données, contacts, etc.). Avant d'aller plus loin, vérifiez donc que vous avez fait une sauvegarde complète de votre système (nandroid) et mieux, que vous avez sauvegardé vos données (sms, contacts, etc.) avec un outil comme titanium backup (qui d'ailleurs est intégré à la ROM modaco).

Lorsque vous êtes prêt, vous pouvez redémarrer sur la partition recovery et sélectionner l'option wipe data/factory reset.

Une fois la machine réinitialisée, sélectionnez apply any zip from sd. Là s'affiche la liste des archives .zip présentes à la racine de la carte. Sélectionnez la ModAco que vous venez de télécharger. Après confirmation (bouton home), l'opération commence et va prendre un certain temps. Une fois la copie des données terminée, vous pouvez redémarrer sélectionner dans le menu le redémarrage de l'appareil (reboot system now).

Après un temps de démarrage, vous devez arriver sur votre nouvelle ROM. Comme elle est visuellement identique à celle d'origine, il faut aller jeter un oeil aux applications pour s'en convaincre Wink.

Si l'opération se passe de travers, et que par exemple la machine ne démarre plus correctement, vous avez toujours la possibilité de repasser en mode recovery pour sélectionner l'option restore latest backup. D'où l'importance de faire un nandroid backup avant de commencer.

Conclusion

Comme vous l'avez vu, la personnalisation de l'HTC Hero n'est pas ce que l'on pourrait appeler "une opération de spécialiste". Elle n'est certes pas sans risque mais reste malgré tout très abordable. Après, tout ceci n'est qu'un point de départ pour commencer à jouer plus sérieusement avec les entrailles de la bête. Et c'est au fond cela qui me plaît le plus avec cette machine, avec un iPhone, j'aurais été bien trop frustré Wink

Retourner au sommaire
Gravatar de Artisan Numérique
Se prémunir des "SpyWebs" avec Privoxy 
  • 10 votes
    vote oui
Par Artisan Numérique, le 24/01/2010 à 10:40.

Avec l'expansion pandémique (le terme est à la mode Wink de "services" comme Google Analytics, les moyens de se prémunir des SpyWebs prennent de plus à en plus d'importance. Et si des outils comme adBlock offre une très protection locale efficace, la protection d'un réseau dans son entier ne peut se passer de privoxy, un proxy filtrant aux possibilités étonnantes et disponible sur beaucoup de systèmes de Windows à Linux en passant par AmigaOS.

Qu'est-ce qu'un SpyWeb ?

Pour faire simple, le SpyWeb est à la toile ce que le SpyWare est à Windows, des applications qui s'exécutent dans votre dos par le simple fait de visiter un site. Et les dangers liés à leur présence sont aussi nombreux que clairement sous-estimés :

  • Ces outils collectent toutes sortes d'informations vous concernant qui sont généralement liés à votre adresse IP. Cet aspect est aujourd'hui critique pour les internautes disposant d'une adresse IP fixe (tous les abonnés de Free par exemple), mais le sera demain pour tout le monde, lorsque chaque internaute aura sa propre IPv6.
  • La globalisation de l'usage de certains de ces SpyWebs, typiquement Google Analytics, implique que la majorité des sites que vous visitez utilisent ce "service", et par conséquent nourrissent les bases de données d'un acteur unique (Google, Xiti, etc.). Associé au point précédent, cette généralisation laisse imaginer la densité des informations potentiellement nominatives vous concernant, et échappant à toute action de la CNIL.
  • Se présentant généralement sous la forme de code JavaScript, personne, y compris les WebMasters qui les incluent avec beaucoup de légèreté dans leur pages, ne peut être assuré de ce qu'ils font réellement, et encore moins de ce qu'il feront demain.
  • Certains de ces SpyWebs vont très loin dans leur collecte d'information, jusqu'à se transformer en véritable outil de piratage enregistrant littéralement l'ensemble des actions effectuées au sein d'un même site avec votre souris ET votre clavier (saisie de mots de passe, de coordonnées perso, etc.). Même si l'usage de ces outils n'est pas généralisé, que se passera t-il demain, si par exemple Google, décide d'inclure se type de fonctionnalité ?
  • Vu du côté des WebMasters, les outils décentralisés comme Google Analytics impliquent une perte d'informations vitales concernant leurs visiteurs car elles ne leur appartiennent pas. Ce n'est sûrement pas critique pour un bloggeur mais beaucoup plus pour un site professionnel lorsque viendra le moment d'utiliser des outils comme Business Object pour procéder à des études plus poussées que celles fournies en standard.
  • Enfin, le moindre mal, ces outils, comme les publicités et autres flasheries, pourrissent votre bande passante en ajoutant de nombreux téléchargements inutiles à l'information affichée.

Entendons-nous bien, je comprends parfaitement l'importance des outils statistiques pour la gestion de la stratégie d'un site. Mais il existe aujourd'hui d'autres solutions (awstats, piwik (anciennement phpmyvisites), etc.) qui stockent localement les données des utilisateurs. Il est aujourd'hui parfaitement possible, avec certes un peu plus d'efforts, d'obtenir les mêmes résultats avec en prime un respect de ses utilisateurs, et une maîtrise des données.

Google Dashboard

Autre point intéressant, même si vaguement hors sujet, Google a mis en place un tableau de bord (dashboard) permettant de savoir ce qui est stocké par ses services à votre nom. Malheureusement il n'est pour l'instant possible que d'avoir accès à ce qui est directement rattaché à votre compte gmail et pas ce qui a été collecté à partir de votre adresse IP... C'est un premier pas qu'il faut saluer, mais il est à espérer que Google ne s'arrête pas en si bon chemin.

Toujours est il que cette page résume assez bien le problème de l'utilisation de services (le fameux cloud computing) dont on ne saisit pas les tenants et aboutissants.

J'y ai par exemple découvert avec un peu d'horreur que l'ensemble des mes conversations privées via mes comptes gtalk étaient consciencieusement archivées... Sur le dashboard, vous avez ainsi accès à la liste de toutes vos conversations avec la possible de les supprimer (en espérant que ce soit fait honnêtement et en n'oubliant pas de vider la corbeille) et paramétrer gtalk pour ne plus archiver l'historique dans l'avenir (là aussi en espérant que ce soit honnête). Pour plus de sécurité vous pouvez aussi passer par un compte jabber plus sur, mais cela n'empêche pas votre correspondant d'utiliser gtalk. Une option plus simple est peut-être de simplement demander à vos correspondant d'installer le plugin de chiffrement Off-the-Record Messaging pour pidgin.

Qu'est-ce que privoxy ?

Pour revenir à nos spywebs, il existe quelques méthodes pour s'en débarrasser localement des SpyWebs mais privoxy demeure la plus efficace s'agissant de protéger globalement un réseau.

Privoxy est un proxy HTTP "filtrant" dont le rôle est "simplement" d'analyse chaque page de chaque sites que vous visitez pour y éradiquer publicités et SpyWebs.

Pour arriver à ses fins, privoxy dispose de deux techniques. Soit il va interdire, comme le ferait AdBlock, l'accès à certains sites, soit il va modifier, "à la volée" les pages que vous recevez (par exemple pour altérer des scripts dangereux).

Privoxy est en outre capable de "désanimer" des images GIF, de nettoyer vos cookies pour qu'ils ne laissent pas passer d'information, de maquiller l'identité de votre navigateur. Bref, c'est un outil complet, simple d'utilisation, rapide à installer, prêt à l'emploi et complètement paramétrable pour filtrer encore plus loin.

Au final, le navigateur va recevoir une page la plus "pure" possible débarrassée de tout ce qui peut nuire à la lisibilité, à la bande passante et à la sécurité.

Maintenant la suppression des encarts de pub est un peu plus litigieuse que celles des SpyWebs. En effet le modèle de financement et donc de développement de la toile s'appuie très massivement sur la publicité. Et même si je suis le premier à regretter les abus grandissant ces dernières années (on est loin de l'époque du linteau de pub en haut de la page), le choix de les supprimer purement et simplement n'est pas forcement la bonne solution.

Malheureusement l'éradication de la publicité devient ici un des dommages collatéraux lié à la guerre anti-SpyWebs. En effet, autoriser la publicité et pas les SpyWebs n'a aucun sens car les deux reposent sur les mêmes mécanismes. A titre d'exemple, GoogleAd se base sur un script show_ads.js pour afficher la pub. Aujourd'hui Google Analytics se base lui sur le script urchin.js. On pourrait logiquement autoriser le premier et bloquer le second. Mais si cette pratique se généralise, Google aura tôt fait de vider urchin.js pour transférer la logique d'espionnage sur show_ads.js rendant la protection caduque. La destruction systématique des scripts externes est donc la priorité même si la publicité en pâtie.

La seule solution que j'ai trouvé à ce problème consiste à débloquer la publicité sur les sites que je considère comme "ami", ce qui se fait très simplement avec Privoxy.

Installation

Privoxy peut être installé sur une machine de bureau mais prend sa pleine puissance une fois mis en place sur tout un réseau. Il va donc falloir choisir une machine qui sera connue des autres mais il n'est pas nécessaire qu'elle soit dédiée à cette tâche. Privoxy prend peu de ressource mémoire et CPU, n'importe quelle machine sous n'importe quel système devrait convenir pour peu qu'elle soit allumée en permanence. Pour la suite j'appellerais cette machine, machine_privoxy.

Toutes les versions binaires pour tous les Systèmes sont téléchargeables ici. Pour un système GNU/Linux l'installation se fait comme suit :

root#urpmi privoxy
ou
root#apt-get install privoxy
root#/etc/init.d/privoxy start
Lancement de privoxy : [ OK ]
root# 

Normalement, privoxy est installé avec sa configuration /etc/privoxy/config prête à l'emploi. Cependant il peut être utile de faire son propre paramétrage, ne serait-ce que pour mettre le service en écoute d'une adresse IP publique (par défaut c'est localhost:8118). Voici la mienne que j'ai commenté :

# dossier de configuration
    confdir /etc/privoxy


# dossier de stockage des traces
    logdir /var/log/privoxy
    logfile privoxy.log

# niveau de debuggage dans les traces.
    debug         1 # Affiche toutes les connections et éventuels "crunch"
#    debug         2 # Affiche le statut des connexions
#    debug         4 # Affiche le statut des entrées-sorties
#    debug         8 # Affiche le parsing des headers
#    debug        16 # Afficher toutes les données reçues ou envoyées (un peu lourd !)
    debug        32 # debug force feature
    debug        64 # debug regular expression filters
    debug       128 # debug redirects
    debug       256 # debug GIF de-animation
    debug      4096 # Startup banner and warnings.
    debug      8192 # Non-fatal errors

# Actions
    actionsfile standard.action  
    actionsfile default.action  
    actionsfile user.action      

# Filtres
    buffer-limit 4096             # limite de taille des contenus filtrables
    filterfile default.filter
    #filterfile user.filter       # peut être décommenté pour créer ses filtres custom

# adresse et port sur lesquels sont ouvert le proxy
    listen-address  192.168.154.102:8118

# A décommenter (et modifier) pour chaîner à un autre proxy
#   forward   /      localhost:3128

# Autorise l'utilisation en proxy transparent
    accept-intercepted-requests 1

# statuts
    toggle  1                       # activé au démarrage
    enable-remote-toggle  1         # désactivable à distance
    enable-remote-http-toggle  1    # désactivable à distance (WEB)
    enable-edit-actions 1           # actions éditables (WEB)
    enforce-blocks 1                # on peut forcer un blockage
/etc/privoxy/config

Paramétrage du navigateur

L'avantage d'un proxy http est qu'il n'existe pas à ma connaissance de navigateur qui ne sache pas l'utiliser. Pour l'exemple nous allons faire ici le paramétrage de FireFox, mais il pourrait tout aussi bien s'agir de Safari, Opéra et même Internet Explorer...

Il faut donc maintenant aller sur la machine cliente pour indiquer à son navigateur d'aller chercher ses pages web sur la machine_privoxy. Dans FireFox allez dans les menus Édition/Préférence/Réseau/Paramètres. Sélectionnez configuration manuelle du proxy et entrez pour HTTP les valeurs machine_provoxy et 8118. Cliquer ensuite sur OK et enfin Fermer.

C'est tout ! Pour vérifier que tout fonctionne, saisissez l'adresse http://config.privoxy.org/ et validez. Vous devez voir apparaître la page de configuration de privoxy.

Privoxy à l'oeuvre

Tout est donc opérationnel. Pour se convaincre que tout est en place, il suffit d'ouvrir une console sur la machine privoxy et d'y faire un tail -f /var/log/privoxy/logfile.

Ensuite sur le poste client, allez faire un tout avec votre navigateur sur le site www.liberation.fr et regardez ce qu'affiche privoxy :

root#tail -f /var/log/privoxy/logfile
Request: www.liberation.fr/
Request: www.liberation.fr/_looks/liberation/scripts/rObj.js
(...)
www.smartadserver.com/call/pubj/252/1276/225/M/7424944326/? crunch!
Request: www.liberation.fr/_looks/liberation/images/fond_pub_728x90.gif
(...)
Request: www.smartadserver.com/call/pubj/252/1276/163/S/7424944326/? crunch!
Request: www.liberation.fr/_looks/liberation/images/onglet_forum_on.gif
(...)
Request: cmhtml.fr.overture.com/d/search/p/standard/eu/js/flat/ctxt/ls/?ctxtId=libe_fr_annuaire&NGrp=2&NKw=4&Pg=1&keywordCharEnc=utf-8&outputCharEnc=utf-8&Partner=liberation_js_fr_ctxtls_libe crunch!
(...)
www.liberation.fr/interactif/question/libeblogs/_files/file_258326_34465_petite_vignette.jpg
Request: www.smartadserver.com/call/pubj/252/1276/276/S/7424944326/? crunch!
(...)
Request: www.smartadserver.com/call/pubj/252/1276/94/S/7424944326/? crunch!
Request: www.liberation.fr/interactif/question/libeblogs/_files/file_260788_26585_petite_vignette.jpg
(...)
Request: www.google-analytics.com/urchin.js crunch!
(...)
Request: logi8.xiti.com/hit.xiti?s=197813&s2=2&p=homepage&hl=8x59x22&lng=fr&r=1280x886x32x32&re=1280x746&ref= crunch!
root# 

A chaque fois que privoxy affiche crunch, il a bloquer le navigateur. Nous voyons ainsi qu'en standard, privoxy bloque efficacement les publicités, Google Analytics et Xiti. Cela fait déjà beaucoup de nuisance en moins. Mais nous allons pouvoir aller un peu plus loin.

Améliorer le filtrage

Comme vous l'avez vu, Privoxy par défaut marche déjà très bien. Il est cependant possible d'aller plus loin. Pour changer les paramètres de Privoxy, vous avez deux solutions. Vous pouvez soit utiliser l'interface WEB (personnellement je ne la trouve pas très simple), soit taper directement dans les fichiers de configuration. Pour cela, il faut simplement éditer le fichier /etc/privoxy/user.action. Notez que le simple fait d'en faire sauvegarde implique son rechargement. Aucun besoin donc de redémarrer privoxy.

Le fichier user.action contient les règles que vous avez le "droit" de changer. Vous pouvez changer aussi les autres mais cela risque de vous créer plus de problèmes qu'autre chose. Par défaut il contient déjà plein d'exemples utiles.

Vous allez pouvoir ajouter ici, des règles et des alias. Une règle est la combinaison d'une ou plusieurs actions et est appliquée à une ou plusieurs URL. Pour la liste complète des actions que Privoxy propose, allez jeter un oeil ici.

Ajout de nouvelles règles

Prenons un exemple et imagions que nous voulions supprimer l'envoi de tous les cookies sortant pour le site wwww.mauvais-site.fr. En langage privoxy cela nous donne :

{ +crunch-outgoing-cookies }
.mauvais-site.fr

Cette règle très simple va ajouter l'action "crunch-outgoing-cookies" (qui supprime les envois de cookies) à toutes les urls appartenant à .mauvais-site.fr. Le signe + indique que la directive doit être ajoutée aux autres règles. A l'inverse, si nous ajoutons :

{ -crunch-outgoing-cookies }
bonne-page.mauvais-site.fr

Toutes les pages du domaine mauvais-site.fr auront leur cookie mangé sauf bonne-page.mauvais-site.fr.

Vous pouvez des * dans les URL, par exemple ad*.site-de-pube.fr, ou même une expression régulière comme pour adBlock comme www[1-9a-ez].example.c*.

Vous pouvez aussi mettre plusieurs actions entre les accolades, soit sur une seule ligne en les séparant par des espaces, soit sur plusieurs lignes en ajoutant un \ à la fin de chaque ligne. Cela nous donne par exemple pour supprimer cookies entrant ET sortant:

{ +crunch-outgoing-cookies \
  +crunch-incoming-cookies }
ad*.mauvais-site.fr
www[1-9a-ez].example.c*

Ajout d'Alias

Comme nous l'avons vu, il est possible de mettre plusieurs actions entre accolade. Il peut être alors pratique de pouvoir regrouper un ensemble d'actions sous un seul alias. Par exemple, si nous voulons regrouper la suppression de tous les cookies vue plus haut, nous ajouterions dans le fichier user.action :

{{alias}}
interdiction-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
autorisation-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies

Une règle pour ajouter, une autre pour enlever, l'exemple parle de lui-même. Ainsi la règle sur "mauvais-site" pourrait s'écrire avec un de nos deux nouveaux alias :

{ interdiction-cookies  }
.mauvais-site.fr

Par défaut dans user.action il y a deux alias très pratiques. Le premier shop va nous permettre d'assouplir les règles pour les rendre compatibles avec un site de commerce branlant. L'autre s'appelle fragile et permet de ne pas "casser" les sites souvent mal fichu. Si vous avez une boutique qui ne marche plus, ou un site fragile, vous pouvez alors ajouter :

{ shop }
www.boutique-branlante.fr

{ fragile }
www.site-mal-fichu.fr

Ajout de règles supplémentaires

Il est possible d'améliorer encore privoxy pour ne plus rien laisser passer ou presque. Au début vous allez observer ce que les sites font exactement en observant les logs de Privoxy. Et à chaque fois que vous voyez quelque chose de louche, vous pouvez ajouter une règle comportant l'action { +block } suivi à la ligne suivante de chaque url posant problèmes. Ce qui au final peut donner quelque chose comme cela :

 définition des sites que l'on bloque gravement
# ########################################################"
{ +block }
  # Régies publicitaires/ Plate-formes d'
annonce
    .netavenir.com                              # http://www.netavenir.com/
    .turn.com                                    # http://www.turn.com/corp/how/how-it-works.jsp
    .bluestreak.com                              # http://www.bluestreak.com/whowhat/index.asp
    .criteo.com                                  # http://www.criteo.com/en/bloggers.aspx
    .blogbang.com/demo/js/blogbang_ad.php\?id=  # http://www.blogbang.com/demo/
    /.*\/microsoft_adcenterconversion\.js        # Régie Microsoft
    *.*.marketingsolutions.yahoo.com/*          # Régie Yahoo
    www.googleadservices.com/*                  # Régie Google
    .fmpub.net                                  # http://federatedmedia.net/whyadvertise/index
    pubsrv.allopass.com/*                        # http://www.allopass.com/
    .comclick.com                                # http://www.comclick.com/
    .regieci.com                                # http://www.regieci.com/fr/accueil/index.asp
    .allo-audience.fr                           # http://www.allo-audience.fr/
    .audientia.net                              # http://www.audientia.net/new/fr/new/
    .clickintext.com                            # http://www.clickintext.com/
    .clickintext.net
    .intellitxt.com
    payperpost.com                              # http://payperpost.com/

  # Les enregistreurs/relecteurs
    .clicktale.*                                # http://www.clicktale.com/faq.html
    cetrk.com/*                                 # http://crazyegg.com/overview
    *.robotreplay.com/*                         # http://www.robotreplay.com/
    /.*/
clickheat.js

  # médiamêtrie/traçage
    .estat.com                                  # http://www.estat.com/service/services_form.html
    .sitemeter.com                              # http://www.sitemeter.com/
    .w3counter.com                              # http://www.w3counter.com/
    .reinvigorate.net                            # http://report.reinvigorate.net/snoop
    /.*\/webanalytics                            # http://france.webanalytics.be/
    .opentracker.net                            # http://www.opentracker.net/index.jsp
    .weborama.*                                  # http://weborama.com/
    .quantserve.com                              # http://www.quantcast.com/
    .performancing.com                          # http://performancing.com/tracker
    .ToutLeMondeEnBlogue.com                    # http://www.toutlemondeenblogue.com/index.aspx
    stats.wordpress.com                          # http://www.wordpress.com
    *.technorati.com/*                          # http://www.technorati.com
    embed.technorati.com/linkcount              #
    /.*xiti.js                                  # http://www.xiti.com/
    *.getclicky.com/*                            # http://www.getclicky.com/help/
    *.iminr.com/*                                # http://www.iminr.com/
    .netprofitblueprint.com/*                    # http://www.netprofitblueprint.com/capture.html (assez opaque celui-la...)
    .converdge.com                              # http://www.converdge.com/features
    .cybermonitor.com
    my.blogitexpress.com/.*\.js                  # http://www.blogitexpress.com/
    www.atoomic.com/js/*                        # http://www.atoomic.com/
    .clustrmaps.com/counter/*
    .trackalyzer.com
    log.tf1.fr

  # Page ranking
    www.free-pagerank.com/fcgi-bin/alive_js.fcgi.*    
    external.wikio.fr/blogs/top/getrank
    www.pagerank.fr/pagerank-actuel.gif

  # Loggers un peu trop traçeurs
    .mybloglog.com                              # http://www.mybloglog.com/

  # traçage des flux (feeds)
    feedjit.com/*                                # http://feedjit.com/

  # Spécial Google
    /.*utm.js                                    # variante d'urchin
    /.*stat.*\.js                                # un filtrage générique
    /.*\/urchin.js                              # variante d'urchin
    /.*s_code.js                                # variate d'urchin
    /.*google-analyticator.*                    # le plugin pour wordpress

  # Nuisances
    .snap.com/*                     # Charge les liens en tâche de fond pour en faire des vignettes. Sympa en soit mais pompe pas mal de resources.
    .ixnp.com/*
    .twitter.com/*
    .webreseau.com                              # http://www.webreseau.com/fr/fonctionnement.asp
    *.devfr.net/*                               # Pas identifié, si quelqu'un a une idée...
    badge.facebook.com/badge/*
    .blogbar.org

Le dernier bloc de cette liste ne sont pas des SpyWebs à proprement parler mais des "fonctions" qui me fatiguent car elles ralentissent l'affichage des pages. Donc si vous n'en voulez pas, libre à vous, tout ceci est à adapter à vos besoins.

Enfin, pour peaufiner encore notre couverture, nous avons allons ajouter deux règles biens pratiques. La première consiste à empêcher les sites de savoir d'où vous venez en lui faisant croire que vous venez toujours de chez eux (referrer). L'URL utilisé est ici le / ce qui veut dire "pour tous les sites".

{ +hide-referrer{forge} }
/

Et puis, pour s'amuser un peu nous pouvons aussi maquiller l'identité de notre navigateur. Là, je vais faire croire que j'utilise un FireFox 4.1 sur un Oric Atmos Wink

{ +hide-user-agent{Mozilla/5.0 (TV; U; Oric Atmos 6502c; en-US; rv:r91.6) Gecko/19870508 TranDOS Firefox/4.1} }
/

Quelques mots sur l'interface WEB

Même s'il n'est pas bien pratique pour éditer la configuration, l'interface WEB est en revanche très efficace pour contrôler le proxy. Si vous tapez l'URL http://config.privoxy.org/. Vous avez la possibilité d'activer ou de désactiver le proxy (http://config.privoxy.org/toggle), de demander à privoxy d'afficher les règles qu'il aurait appliqué à une URL que vous saisissez à la main (http://config.privoxy.org/show-url-info) et enfin de visualiser et modifier la configuration ( http://config.privoxy.org/show-status ).

Cette dernière option offre cependant possibilité un peu cachée qui est de régler le niveau de sévérité du proxy. En effet, si sur la ligne default.action vous clickez sur Edit.Vous allez voir apparaître trois niveaux : Cautious (précautionneux), Medium et Advanced. Le premier offre un niveau de sécurité correcte mais laisse par exemple plus passer les cookies. C'est le mode par défaut qui ne "casse" aucun site marchand. Le dernier est un blocage quasi complet mais qui vous demande souvent d'ajouter un site marchand dans la section { shop } (cf plus haut). A chacun de voir en fonction de sa paranoïa, moi je suis sur Advanced Wink Tongue

Passer Privoxy en mode \"transparent\"

Un Proxy transparent est un concept ultra-pratique permettant de ne pas configurer les navigateurs sur les machines clientes. Comment cela se passe ? Simplement en y déclarant que la passerelle internet n'est plus votre routeur, mais la machine privoxy. Ainsi, tout le traffic internet va être redirigé sur cette machine qui va ensuite, après filtrage, le rediriger sur internet. Du coup, sans que cela ne soit visible, toutes les machines du réseau utilisent de manière transparente privoxy et ce sans avoir à faire le moindre paramétrage.

Pour arriver à ce résultat, la première chose à faire est de modifier le fichier de configuration de privoxy /etc/privoxy/config et d'ajouter (ou modifier) la ligne accept-intercepted-requests 1.

Ensuite, il nous faut mettre en place le routage. Cela implique qu'iptables soit installé sur la machine privoxy

#! /bin/sh
filter="iptables -t filter"
nat="iptables -t nat"

$nat -F
$nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8118
$nat -A OUTPUT -m owner --uid-owner 96 -j ACCEPT
$nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8118

$nat -L
$filter -L

echo 1 > /proc/sys/net/ipv4/ip_forward
script d'activation du proxy transparent

La première règle a pour rôle de transférer tout le traffic entrant sur le port 80 de l'interface eth0, vers le port 8118, celui de privoxy. Cette ligne associée au echo 1 > /proc/sys/net/ipv4/ip_forward, permet à tout le réseau de bénéficier de privoxy, sous réserve de paramétrer chaque machine de sorte à utiliser notre serveur comme passerelle (gateway).

Les deux règles suivantes sont quant à elle chargée de faire la même chose, mais pour le serveur lui-même. En effet, dans ma nouvelle architecture, le serveur est aussi ma machine de travail, et j'aimerais donc bien profiter de privoxy. Le principe est le même que pour la première règle pour le traffic local, mais avec une exception faite pour le processus possédé par l'utilisateur 96, qui est celui de privoxy. Vérifiez donc quel utilisateur votre privoxy utilise pour remplacer 96 par l'UID qui va bien.

Après vous pouvez très salement ajouter ces commandes à la fin de /etc/rc.local ou, selon le fonctionnement de votre distribution, les poser dans le script dédiés à iptables.

Notre serveur transparent étant en place, il ne nous reste plus qu'à indiquer aux machines clients que la nouvelle passerelle (gatewaw) est la machine_privoxy. Cela peut se faire en configurant votre routeur, en dur sur les machines ou via votre serveur dhcp.

Enfin, si vous aviez configuré le proxy de votre navigateur, il est temps de supprimer ces réglages. Et lorsque c'est réalisé et que les machines clients ont renouvelées leur IP, vous pouvez vérifier que tout fonctionne et naviguant sur l'une d'entre elles tout en observant les logs sur la machine de privoxy.

Conclusion

Ce tutorial ne couvre pas toutes les possibilités de privoxy, loin de là. C'est une mise en jambe pour un outil indispensable qui même sans paramétrage offre une très bonne protection.

Retourner au sommaire
Gravatar de Artisan Numérique
Parlez-moi de l'offre légale... 
  • 6 votes
    vote oui
Par Artisan Numérique, le 14/01/2010 à 18:16.

"L'offre légale ne se développera que si cesse le piratage"... Qui n'a pas entendu cette petite phrase contre laquelle il est si difficile de lutter. Personnellement j'ai toujours pensé que l'offre légale ne se développera que lorsqu'elle fournira un service de qualité, et il semblerait que ce n'est pas encore gagné.

Une offre légale de qualité ?

La qualité c'est un bien grand mot au fond, disons que depuis un certain nombre d'années, nous avons un standard qui est le CD audio. Ses "qualités" sont connues : une fréquence d'échantillonnage de 44,1 kHz, une résolution de 16bits, stéréo et sans compression. Ses qualités sont aussi le fait que mon premier CD acheté il y a de ce 22 ans fonctionne encore parfaitement, et que mon fils pourra encore l'écouter, tant qu'il y aura encore des lecteurs, car je peux le lui donner. Ce qui sera possible dés que l'ami à qui je l'ai prêté me le rendra.

Une offre légale de qualité, c'est donc au minimum la même chose que ce que nous avons déjà. Et pas, comme on tente vainement de nous le faire croire, celui de pouvoir télécharger dans la seconde un album au lieu d'attendre qu'il arrive par la poste ? La possession d'un album peut se temporiser quelques jours, c'est pas comme une envie de pisser !

Dans cette idée, l'offre légale actuelle est donc à mon sens de très mauvaise qualité car elle fournit des morceaux compressés à la sauvage, et donc de qualité inférieur à celle d'un CD vieux de 20 ans. En plus, on nous y colle des DRM, des saletés qui m'interdisent un tas de trucs, comme le fait de lire un album sous Linux (ce qui marche très bien avec mon vieux CD) ou de le prêter à un pote pour qu'il me le rende de sorte à le léguer à mon fils.

A cela certain vont (car m'ont déjà Wink m'argumenter que l'avenir, c'est de la musique en ligne avec tout accessible directement comme une gigantesque webradio et qu'avoir chacun sa propre musique est archaïque. A cela je réponds qu'on l'on ne mange déjà plus que le 1/4 de la variété alimentaire de nos grands parents, alors on aura l'air malin le jour où le Brel d'origine ne sera plus disponible car déjà (re)produit en 40 générations de gargouilleurs de la Star académie...

Une lueur d'espoir

En bref, pour l'heure, le CD reste THE offre légale de qualité. C'était du moins ma position jusqu'à ce que je tombe sur Starzik. Un vaste choix d'albums, la possibilité d'acheter à la piste (ce qui est un plus par rapport à l'offre légale "CD"), énormément de morceaux sans DRM, une équipe qui semble sympa et dynamique, et cerise sur le gâteau, la possibilité de télécharger en FLAC. A vue de nez, comme ça, c'est un carton plein.

Seulement, triste est notre monde et comme toujours il y a un hic. En effet, la première piste d'essai que j'achète en FLAC ne sonne pas très loseless... Du coup j'achète une seconde piste, mais cette fois d'un album que je possède déjà au format CD, et que je viens justement d'encoder en FLAC. Et là, il n'y a pas photo, avec un bon casque y'a un truc qui coince.

Plouf dans le FLAC !

Après quelque recherches je me rend compte que je n'étais pas le seul à avoir remarqué comme un souci. Alors pour en avoir le coeur net, je tente l'expérience. Je télécharge sur Starzik une version MP3 supplémentaire du même morceau, et je donne les 3 pistes (mon FLAC, celui de Starzik et leur MP3) en pâture à audacity pour obtenir un spectre de chacun d'entre eux. En voici le résultat.

En arrière plan, vous avez mon FLAC. En second plan, le FLAC de Starzic. Déjà là, on voit le problème, une perte sèche de tout ce qui se trouve au dessus de 18khz. Mais le plus "drôle", c'est la courbe en premier plan, qui se trouve être... le MP3 qui semble juste un peu dégradé par rapport à la courbe du FLAC de Starzic...

Alors bien évidement il ne s'agit pas de prendre le spectre comme argument qualité mais plus de s'en servir comme "signature" permettant de deviner quelle est la source de l'encodage FLAC. Ici on voit donc que ce n'est clairement pas le CD d'origine ou une source de meilleur qualité. La petite perte entre FLAC et MP3 semble quant à elle indiquer que cette origine n'est non plus pas le MP3, ce qui est heureux.

Si l'on se base sur cette réponse du forum de Starzik, le réalité est entre les deux. La source est variable d'un album à l'autre en fonction de ce qui est fournit par la maison de disque. Pour l'album qui m'a servi de test, l'encodage n'est pas indiqué et seul le bitrate l'est (192kbps). On peut donc seulement dire que la source est une compression avec perte pour un bitrate de 192kbps. Du coup pourquoi proposer du FLAC ? Starzik est en cheville avec les fournisseur de disque durs ? Car proposer le téléchargement de ce format est un non-sens puisque la qualité est la même qu'un MP3 de base, mais prenant 10 fois l'espace disque de ce dernier...

Après la technique, le légal

Cette offre légale n'apporte donc pas la même qualité qu'un classique CD (du moins pour le test que j'ai effectué) et perd du coup beaucoup de son attrait. Ceci étant dit, les prix concrètement inférieurs à l'offre légale "CD" peuvent continuer à me tenter sur le principe "moins bon mais moins cher" convenant assez bien à certains albums. Mais cet approche s'évapore assez vite lorsque l'on décortique les conditions générales de vente, et plus particulièrement l'article 10 :

En ce qui concerne les fichiers musicaux, la société Starzik rappelle qu'elle est seule titulaire du droit de diffusion de ces fichiers et que ceux ci sont protégés par les réglementations nationales et internationales en matière de droit d'auteur.

Et pour mieux éclaire cela

Le Client ne bénéficie quant à lui que d'un droit d'utilisation personnel de ces fichiers et limité aux informations fournies au moment de la sélection des fichiers musicaux et sketches, dans un cadre strictement privé et gratuit. (...)

Pour faire simple, avec l'offre légale "CD" aussi, l'usage est strictement privé et gratuit, et l'on ne dispose aussi, que d'un droit d'utilisation personnel. La grosse différence tient à ce que ce droit est lié à la possession du support dans le cas du CD, et il est lié à l'acte d'achat entre le fournisseur et son client dans le cas de starzik. Ainsi, si je peux donner mon CD, le prêter, le léguer ou encore le revendre, je ne peux rien faire de tel avec un morceau acheté ici...

Et dans la série des bonnes questions, que se passe t-il si Starzik disparaît du jour au lendemain ?

Conclusion

En conclusion, dans cette offre légale qui est à mon sens la plus performante sur le marché, j'achète pour un peu moins cher un album de qualité moindre qu'un CD et je n'ai pour cet album qu'un droit personnel d'utilisation. Avec l'offre légale "CD", je possède le support et j'ai un droit d'utilisation sur son contenu qui est de qualité optimum. A ce stade, malgré la petite différence de prix, le choix est assez vite fait...

Il y a fort à parier que Starzik n'est pour rien dans cet état de fait (ils pourraient juste éviter de faire du FLAC sans intérêt et trompeur) qui doit, je l'imagine bien, être imposé par les maisons de disque. Mais me concernant, l'offre légale "CD" reste de loin celle qui présente les meilleurs critères de qualité. Je vais donc continuer à puiser dans le marché d'occasion pour y récupérer mes "antiques" galettes numériques Wink

Retourner au sommaire
Gravatar de Artisan Numérique
FreeBox Mobile, une application libre de gestion des FreeBox pour Androphones 
  • 8 votes
    vote oui
Par Artisan Numérique, le 23/12/2009 à 06:47.

Le béta d'un application libre (licence Apache v2) qui va intéresser les freenautes vient d'arriver sur le DroidMarket. Il s'agit de FreeMobile (rien à voir avec la maison Free, c'est un projet indépendant) qui permettra à terme de contrôler à travers un androphone, l'ensemble des fonctionnalités fournies par la box.

Pour l'instant, il ne s'agit que d'une béta mais elle permet dors et déjà de contrôler la boite vocale de votre freebox avec consultation et lecture des messages reçus directement sur le terminal. Rien que cela c'est déjà pas mal, mais l'avenir promets beaucoup de chose plus intéressantes encore :
  • Programmer et lire les enregistrements vidéo à distance,
  • Lire les contenus vidéo et audio disponibles sur son LAN,
  • Accès au multiposte (TV et Radio),
  • Paramétrage automatique des appels via SIP,
  • Envoyer un fax,
  • Gérer la connexion à FreeWifi (ce qui évitera d'avoir une application supplémentaire pour cela),

Retourner au sommaire
Gravatar de Artisan Numérique
Chromium sur Mandriva 64 bits 
  • 4 votes
    vote oui
Par Artisan Numérique, le 22/12/2009 à 08:22.

Tout arrive à point à qui sait attendre paraît-il, et la version Open Source de Google Chrome, chromium, est enfin disonible sous Mandriva, et en version 64bits qui plus est...

Pour en bénéficier il vous faut activer le dépôt contrib backports et installer chromium-browser (un nom à rallonge pour éviter un conflit avec chromium, le jeu Smiling.

Une fois en place, le navigateur fonctionne du feu de dieu. Pour être rapide, c'est rapide, laissant FireFox bien loin derrière. Pour information, Chromium utilise le moteur webKit, le même que Safari ou que, dernièrement, Epiphany (qui lui souffre de "quelques" coquilles...). Pour information toujours, WebKit, composé de WebCore (pour le rendu HTML/CSS) et JavascriptCore, est en réalité un fork (maintenant réunifié) des moteur KHTML et KJS. Deux moteurs qui sont à l'origine de l'efficacité de Konqueror que j'ai maintes fois regreté lors de mon passage forcé de KDE à Gnome.

Ceci étant dit, la vitesse est une chose, mais reste à savoir si ce navigateur tiendra l'usage face à FireFox qui ne tombera pas facilement, surtout par la qualité de ses extensions. Côté look, j'ai rapidement trouvé mon bonheur et donc pu viré cet infâme bleu de méthilène fournit en standard. Déjà première suprise, installation sans avoir à redémarrer, appréciable, et ce sera la même chose pour les extensions.

Côté extensions justement, j'ai grosso-modo retrouvé mes petits avec Une gestion multi-proxy et un bloqueur de pubs. En revanche, rien d'équivalent au onglets verticaux arborescents de FireFox et ça c'est bien dommage. Je subodore une lacune dans l'API des extensions car toutes les tentatives dans ce sens se résument à une pauvre et ridicule popup dans la barre principale... Il fallait bien que le vilain Zuul ait quelques avantages Wink

Pour ce qui est du développement, reste l'épineux problème de l'indispensable FireBug. Il existe bien un machin appelé FireBug Light mais il est tellement léger que je ne l'ai pas vu apparaître... Reste le click-droit/inspecter cet élément qui semble assez efficace. Reste à voir cela à l'usage.

Je vais me donner une bonne semaine avant de voir si je reste avec Chromium ou si les problèmes rencontrés sont trop pénalisant. Pour l'heure, j'apprécie simplement la vitesse de rendu ou de petits plaisirs simples comme pouvoir faire défiler un long formulaire sans que Xorg ne s'effondre....

Retourner au sommaire
Gravatar de Artisan Numérique
Passer d'un serveur Mandriva à un serveur Debian... 
  • 13 votes
    vote oui
Par Artisan Numérique, le 06/11/2009 à 16:46.

Je vois déjà Dab faire des petits bons Smiling Désolé mais non, je ne migre pas vers Debian mais comme je suis régulièrement confronté à cette distribution sur des serveurs en production, j'ai souvent besoin de savoir comment passer de l'un à l'autre des deux mondes, pour ce qu'ils ont de différent. Ce qui suit est donc une simple table de conversion permettant, lorsque l'on est habitué à Mandriva, de répondre à la question "Comment on fait ... sur une Debian ?".

Dépôts

La gestion des dépôts de softs est au fond la grande différence entre les debians (ou *buntu pour ceux qui l'auraient oublié) et les mandriva (ou plutôt les dérivés de RedHat). Sur les debians, le système de paquets (.deb) est utilisé avec l'utilitaire de gestion locale dpkg et de dépendances apt. Merci à Dab pour m'avoir plus qu'aidé à créer cette table !

Gestion des dépôts

TâcheMandrivaDebian
Les noms de dépôtsmain/contrib/nonfree/plfmain,contrib,non-free
Les sous-dépôtsrelease,update,testing,backportstable,unstable,testing,backport
Une manière simple de chopper tous les dépôts selon vos besoinseasyurpmi.zarb.org?
Ajouter un dépôturpmi.addmedia?
Supprimer un dépôturpmi.removemediaprpmq --dump-config : vi /etc/apt/source.list
Mise à jour des dépôtsurpmi.update MEDIA (ou -a pour tous)apt-get update

Recherche dans les dépôts

TâcheMandrivaDebian
Recherche simpleurpmq -Y openofficeapt-cache search openoffice
Recherche avec informationsurpmq -Yi openofficeapt-cache show openoffice
Recherche avec changementsurpmq --changelog openoffice.orgapt-listchanges --apt openoffice.org
Recherche d'un fichier particulierurpmf /usr/bin/oowriterdpkg -S /usr/bin/oowriter
sinon il y a aussi apt-file

Installation de paquet

TâcheMandrivaDebian
Installationurpmi openoffice.orgapt-get install openoffice.org
Mise à jour automatique de ce qui est installéurpmi --auto-updateapt-get upgrade
Re-installation d'un paqueturpmi --replacepkg enchantapt-get --reinstall install enchant

Travail sur la base locale

TâcheMandrivaDebian
Recherche d'un paquet installérpm -qa | grep -i xorgdpkg -l | grep xorg
Liste des fichiers d'un paquet installérpm -ql gzip-1.3.12-3mdv2009.0dpkg -L gzip
Informations sur un paquet installérpm -qi gzip-1.3.12-3mdv2009.0?
Recherche du paquet associé à un fichierrpm -qf /usr/bin/lsdpkg -S /usr/bin/ls
Dépendances d'un paquet installérpm -qR pm-utils-1.2.0-3mdv2009.0apt-cache show pm-utils | grep Depends
Vérification de l'intégrité des fichiers par rapport à leur paquet d'originerpm -Vadpkg -C

Désinstallations

TâcheMandrivaDebian
Désinstallation d'un paqueturpme openoffice.orgapt-get remove openoffice.org
Désinstallation d'un paquet sans ses dépendancesrpm -e --nodeps $(rpm -qa | grep -i xorg)dpkg --force-depends remove xorg
Désinstallation des paquets orphelinsurpme --auto-orphansdeborphan | xargs dpkg -P

Gestion des services

TâcheMandrivaDebian
Arrêt/démarrage d'un serviceservice mysql stop/etc/init.d/mysql stop
Désactivation d'un servicechkconfig --del mysql-ndb-mgp update-rc.d -f mysql-ndb-mgm remove
Activation d'un servicechkconfig --add mysql-ndb-mgp update-rc.d mysql-ndb-mgm defaults
Liste des services activéschkconfig --list?

UTF8

Configurer la debian en UTF8

root#dpkg-reconfigure locales
# Laissez les 3 choix présents...
[*] fr_FR ISO-8859-1 [*] fr_FR.UTF-8 UTF-8 [*] fr_FR@euro ISO-8859-15
# validez puis sélectionnez fr_FR.UTF-8 par défaut
root# 

Conclusion

Voilà, c'est tout pour l'instant, mais la liste va j'imagine s'étoffer avec le temps...

Retourner au sommaire
Gravatar de Artisan Numérique
Le Matos sous GNU/Linux, c'est comme le bon vin... 
  • 14 votes
    vote oui
Par Artisan Numérique, le 05/11/2009 à 10:07.

Ce matin, je tombe sur ce papier. Je suis très content pour son auteur si tout son matériel acheté à SuperU fonctionne "out-of-the-box". Mais même si je suis d'accord avec une partie de la conclusion "il y a de gros progrès", je n'en reste pas moins convaincu que le plus gros problème de GNU/Linux est et reste le support du matériel. Mais ce n'est pas le problème de GNU/Linux en réalité...

Alors soyez indulgent, il est au fond rare que je livre mes pensées sur ce site. Mais en lisant cet article, je n'ai pu m'empêcher de me dire qu'il ne faudrait tout de même pas se leurrer. Le support matériel est, et restera, un problème, non pas de GNU/Linux, pas de tous les OS qui ne sont pas considérés comme rentables par les fabricants. Ce n'est donc pas plus un problème pour les utilisateurs du pingouin, que ceux de *BSD, MacOS, et sûrement bientôt celui de ceux qui déciderons de ne pas céder à la vague "c'est mon choix" (rien compris à cette pub d'ailleurs...) et qui voudrons rester sous Windows XP.

Le vrai soucis est que fabriquer un pilote est un travail complexe pour tout le monde, mais surtout pour les fabricants. Il n'y a qu'a se souvenir des déboires de Creative Labs, AMD ou nvidia avec leurs pilotes... MS Windows. La raison, pour avoir bossé sur ce type de problématique, est double. Tout d'abord, même avec des spécifications "claires" (elles ne le sont jamais...), c'est un travail très compliqué que de faire parler du soft et du hard. Une complexité augmentée pour des constructeurs dont le métier de base est, et reste, la conception de matériel, pas de logiciel... C'est donc un travail hors de leur coeur de métier qui les amène, dans notre économie de marché, à un choix de rentabilité qui n'a au fond rien à voir avec un amour particulier pour MS Windows. Est considéré comme non rentable tout ce qui ne fait pas 80% de parts de marché et ce de manière assez agnostique. Si demain GNU/Linux ou FreeBSD atteignait ce chiffre, ce sont les Windowsiens qui pleureraient. Ce n'est pas demain la veille, certes, mais cela permet de recentrer le débat sur la problématique de base des constructeurs, comment rentabiliser le coût de développement de what-milles pilotes pour autant d'OS à la noix (de leur point de vue). Un effet augmenté par le fait que Microsoft a très bien "compris" cette problématique et l'utilise, comme toujours dans un sens qui l'arrange, en multipliant les partenariats. Une peu la même stratégie que celle appliquée aux développeurs enamourés de SDK Microsoftiens car cajolés par leur commercial fétiche qui leur vante autant leur GRANDE compétence que la facilité avec laquelle ils pourront mettre en oeuvre, grâce au Kit .machin de la mort, l'intranet ultra-puissant passant sur mobile comme qui rigole en trois clicks. Mais ça c'est une autre histoire...

Pour répondre à ce travail compliqué et peu rentable, certains clament que la solution est l'ouverture des spécifications. J'ai comme un doute sur le fait que ces gens là fassent tourner leur propre entreprise. Car lorsque l'on voit la guerre acharnée que se font les constructeurs, on peut comprendre que ce soit pour le peu délicat. Si nVidia produit l'intégralité de ses spécifications, qu'est-ce qui empêche demain un fondeur chinois de pondre une puce 100% compatible pour 20% du prix ? Après on peut être pour ou contre l'économie de marché, mais dans le contexte qu'elle représente aujourd'hui, l'ouverture des spécifications est une éventuelle possibilité (et encore...) pour de très grands fondeurs, ou pour de très petits (qui n'ont pas grand chose à perdre). Mais entre les deux, c'est très risqué. En tout cas ce n'est pas une position qui me semble économiquement viable.

Autre possibilité souvent évoquée, celle de l'Open Hardware. Des spécifications libres et accessibles utilisées par tous les constructeurs. Cela fonctionne déjà pour des choses auxquelles on ne pense même pas. En effet, vous-êtes vous déjà demandé si votre clavier, votre souris ou votre écran allait être compatible GNU/Linux ? Non. Alors oui, le bouton multimédia qui sert à rien, ou le clignotement de la LED de la souris risque de ne pas être pris en charge, mais pour le gros 80% de leurs fonctionnalités cela coule de source. Et cela coule de source car au fond cela a été normalisé par IBM (pour le clavier) il y a des années et qu'il n'y a pas de grandes différences entre un clavier d'il y a 15 ans et celui qui vient de sortir.

Mais pour du matériel plus compliqué, là encore, si un petit fondeur/constructeur peut y trouver son compte, les autres y verraient peut-être la disparition de leurs avantages concurrentiels. Cela nous fatiguerait certes moins les forums, mais il n'y auraient dés lors plus de pro/anti AMD face à des pro/anti nVidia car les deux feraient au fond strictement la même chose (ce qui est le cas de mon point de vue de non-joueur mais là aussi, c'est une autre histoire Wink.

Alors quelle solution puisque l'on ne peut pas demander aux constructeurs d'ouvrir leurs spécifications, ni perdre de l'argent à rédiger des pilotes pour des OS marginaux, ni les obliger à faire tous les mêmes produits ? Peut-être est-ce simplement la structure même des pilotes qu'il faudrait normaliser ? Cela permettrait aux constructeurs de ne faire qu'un pilote pour tous les OS et on arrêterait définitivement de se prendre la tête.

Bien évidement, cela ne peut fonctionner que par grandes classes de matériel car il est difficile d'imaginer une structure de pilote identique entre une carte vidéo et une carte réseau. Mais pourquoi les constructeurs, car ce serait à eux d'y penser, ne se réunissent pas en une sorte d'Open Driver Aliance pour pondre une série de spécifications strictes et rigides pour ces grandes classes de pilotes ? Ce n'est pas une utopie car au fond il existe déjà des choses dans ce domaine. Prenons le cas des cartes réseaux et l'interface NDIS (développé par 3Com et Microsoft). Il est depuis belle lurette possible d'utiliser ces pilotes à l'origine pour MS-Windows sur GNU/Linux. Pourquoi pas (et là je ne parle pas de licence, juste de la théorie Smiling un support natif ? Les constructeurs mettraient sur leur boite "compatible NDIS" et basta, l'affaire est réglée. Les devs du kernel perdraient du coup moins de temps à faire un épique reverse-engeneering pour se consacrer à la véritable valeur ajoutée de l'OS. Même principe pour une webcam, ou une carte son, que l'on sorte un peu de ce type d'enfer. Pour des choses aussi basiques, il doit tout de même être possible de faire une interface de pilote totalement universelle. Lorsque l'on sait par exemple que le pilote nVidia pour GNU/Linux est à 90% le même que celui de windows, cela semble dingue pour un gars du logiciel comme moi que tout ce monde ne se soit pas entendu sur une interface commune, pour imposer cela ensuite aux éditeurs d'OS.

Bref, j'ai bien conscience que je viens de me faire plaisir et que j'ai gentiment soufflé dans un violon, voir même, dit beaucoup de conneries. Mais cette histoire de pilote m'a toujours fait halluciner. Et pour conclure sur papier à l'origine du mien, la preuve que le hardware reste le gros problème sous GNU/Linux, et ce même pour quelqu'un qui fait hyper gaffe à ce qu'il achète (Jamais chez SuperU Smiling, une petite liste à la Prévert :

  • Une imprimante Epson qui imprime à la bonne résolution (et sans bouffer les marges Wink après 2 ans (elle en a 3 Wink, mais environ 10x moins vite que sous Windows.
  • Un portable sans wifi, sans entrée Micro et avec une webcam qui refuse de me prendre en photo autrement que la tête en bas...
  • Un autre portable avec un pilote Poulsbo merdique (pas de 3D, ceci dit, il semble que cela va changer), qui avait du wifi mais qui n'en a plus avec les dernières générations de kernel (y'a sûrement un howto en russe qui traîne dans un coin...).
  • Un casque bluetooth que j'ai finalement donné à un windowsien...
  • Deux cartes d'acquisition vidéo qui freeze GNU/Linux et une autre qui refuse de me donner le son.
  • Je ne compte plus les puces audio intégrées qui refusent le moindre enregistrement.
  • Une WebCam qui fonctionnent très bien, sauf lorsque je la connecte un à hub USB....
  • etc, etc, etc... J'en ai un carton plein...

Au final, le matos sous GNU/Linux, c'est comme le bon vin, il y a des millésimes et de manière général, il est bien meilleur lorsqu'on prend le temps de le laisser vieillir.

Retourner au sommaire
Gravatar de Artisan Numérique
Mise en oeuvre d'un serveur SubVersion 
  • 10 votes
    vote oui
Par Artisan Numérique, le 01/11/2009 à 23:08.

L'objectif est ici de mettre en place un serveur subversion comprenant la mise en place du dépôt, la configuration d'apache et le paramétrage des messages de notifications.

Subversion

Subversion est un projet libre initié par la société Tigris pour remplacer le vieillissant CVS. Par rapport au vénérable ancêtre, et d'un point de vue strictement architectural, subversion apporte avant tout les transactions atomiques, ainsi qu'une bien plus grande modularité dans le choix des protocoles de communication et des systèmes de stockages. Du point de vue fonctionnel il apporte bien plus encore, mais ce n'est pas notre sujet Smiling

Subversion exploite un système de greffons lui permettant la prise en charge de trois protocoles différents. Nous avons évidement, comme avec CVS, le pseudo-protocole" dit "local" qui permet d'attaquer le dépôt sans passer par le réseau. Toujours comme CVS, nous avons aussi un protocole spécialisé, ultra-rapide et binaire appelé SVN (une sorte d'équivalent à CVSSERV). Cependant ce protocole SVN utilisant le port 3690/TCP, il a le "défaut" de passer relativement mal par les infrastructures réseau rompues au HTTP. Il reste cependant une très bonne option qui a déjà le mérite de ré-apprendre leur métier à certains admins "pousses-boutons" pour qui OSI est une marque de crème contre l'eczéma, tout en arrêtant de parler de sécurité en faisant passer tout et n'importe quoi par le port 80... Mais je là digresse...

La prise en charge de ce protocole est assurée par l'outil svnserve. Comme vous le voyez, l'univers CVS reste malgré tout très présent

Pour l'instant nous somme en présence de choses très équivalentes à ce que CVS offrait. La vraie nouveauté de Subversion n'est effectivement pas là, mais dans l'exploitation du protocole WEBDAV. WebDAV étant une extension d'HTTP, ce protocole utilise exactement les mêmes canaux que le WEB classique, passe à travers les pare-feux et les proxies (avec un peu de paramétrage).

Le choix de WEBDAV n'est pas anodin. Ce protocole a en effet été conçu pour ajouter à HTTP une couche "système de fichier" en ajoutant un jeu d'instructions permettant d'ajouter, supprimer, détruire, déplacer et lister. Mais plus intéressant encore, WEBDAV dispose d'une extension appelée DELTAV qui prend en charge l'historisation et la transmission de deltas de fichier, ce qui le rend idéal pour l'usage que Subversion peut en faire.

Le protocole WEBDAV est pris en charge par le module apache mod_dav et les extensions nécessaires à Subversion par mod_dav_svn. L'ensemble est donc très facile à ajouter sur une installation Apache existante et bénéficie du coup des fonctionnalités du célèbre serveur HTTP (compression, https, traces, authentification, etc.).

L'autre point de souplesse offert par Subversion est la possibilité de choisir le greffons qui va se charger du stockage physique des fichiers et des changements. En standard il est donc possible d'utiliser la "base de donnée" Bercley DB ou simplement le système de fichier local (FSFS). Maintenant dans les faits, Bercley DB n'est pas utilisé et Subversion n'a réellement décollé (ex. Projet KDE) qu'à partir du moment où le greffon FSFS a été disponible. La raison est assez simple, Bercley DB est d'une fiabilité plus que discutable et provoquait de blocages tellement grave que les dépôts qu'ils pouvaient rendre inutilisable le dépôt (situation vécue personnellement...)

A noter pour finir que Subversion apporte quelque chose de fondamental par rapport à CVS, les transactions atomiques. En termes claires, si quelque chose se passe mal lors d'un transaction (connexion coupée par exemple), Subversion l'annule comme si elle n'avait jamais eu lieu.

Création du dépôt

Pour créer le dépôt, nous utilisons la commande svnadmin comme suit :

root#svnadmin create --fs-type fsfs /svnroot
root#ls /svnroot
conf/ dav/ db/ format hooks/ locks/ README.txt
root# 

Une fois la commande exécutée, le dépôt est préparé et n'attend plus que nos fichiers. Le paramètre --fs-type fsfs est indispensable si l'on ne veut pas se retrouver avec un dépôt utilisant le calamiteux BerkleyDB. Avec cette option, subversion va utiliser le système de fichier standard pour stocker ces données en toute sécurité.

Choix du mode d'accès

Il existe de nombreuses manières d'accéder à un dépôt subversion. Nous allons étudier trois de ces possibilités :

  • Accès directe au service svnserve,
  • Accès indirecte au service svnserve en passant par SSH,
  • Accès au dépôt par le protocole WebDAV, via Apache.

Mise en oeuvre d'un service svnserve autonome

Le protocole SVN, pris en charge par le serveur svnserve, ne manque pas d'atouts. Utilisateurs virtuels, au bas mot deux fois plus rapide que WEBDAV, peu gourmand en ressources, simple à mettre en oeuvre et utilisable avec tous les clients sans restrictions, c'est l'option de choix pour le développement intensif et le refactoring de code. Pour ce donner une idée, même ligne, même client, même serveur, la récupération d'un projet de 50mo de code prend en 54s en WEBDAV contre 23s en SVN...

Côté mise en oeuvre, tout passe par l'ami Xinetd. Vous devez pour cela disposer d'une configuration /etc/xinetd.d/svnserve qui ressemble à cela :

service svnserve {
    disable             = no
    port                = 3690
    socket_type         = stream
    protocol            = tcp
    wait                = no
    user                = svn
    server              = /usr/bin/svnserve
    server_args         = -i -r /svnroot
}
/etc/xinetd.d/svnserve

Une fois la configuration créée ou modifiée, il suffit de relancer xinetd pour que le port 3690 soit placé sous écoute.

Comme c'est l'utilisateur svn qui va effectivement accéder au dépôt, faisons une passe de droits pour éviter les problèmes :

root#chown svn:svn /svnroot -R
root# 

Il ne nous reste maintenant plus qu'à paramétrer svnserve et modifiant le fichier /svnroot/conf/svnserve.conf

[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = Mon dépôt
/svnroot/conf/svnserve.conf

Notez tout d'abord qu'il est impossible de mettre des espaces devant les directives sous peine d'erreur du serveur.

anon-access = none interdit les accès anonymes au serveur tandis que auth-access = write donne un accès en lecture et écriture aux utilisateurs authentifiés. A vous de choisir pour ces deux directives entre read, write et none.

password-db = passwd indique que les mots de passes et les utilisateurs associés sont dans le fichier passwd qui se trouve au même niveau que svnserve.conf. Ce fichier reprend la même structure que svnserve.conf :

[users]
gaston = mon_de_passe
robert = mot_de_passe
josette = mot_de_passe
/svnroot/conf/passwd

authz-db = authz indique quant à elle que les autorisations trouvent dans le fichier passwd qui lui aussi se trouve au même niveau que svnserve.conf.

[groups]
equipe=robert,josette

[/]
gaston = rw
* =

[/projet_gaston]
gaston = rw

[/projet_equipe]
@equipe = rw
/svnroot/conf/authz

Déjà seul gaston a le droit d'écrire à la racine et pas les autres (* =). Ensuite nous définissons un groupe equipe contenant Robert et Josette et qui a les droits en lecture-écriture sur projet_equipe. Enfin gaston peut lire et écrire sur /projet_gaston. Notez qu'il y a héritage des droits, il n'est donc pas nécessaire d'interdire à tous la lecture sur les projets, c'est déjà fait à la racine.

C'était le dernier fichier à paramétrer, nous pouvons maintenant tester :

gaston$svn mkdir svn://mon_site/projet_gaston/test
gaston$ 
test du protocole SVN

Utilisation du service svnserve via SSH

Dans le mode précédent, nous sommes obligé de créer une sorte de compte, et les accès qui vont avec, pour chaque utilisateur. Avec SSH, svnserve est lancé directement par l'utilisateur qui tente l'accès. Le service ainsi lancé dispose des droits de cet utilisateur, ne nécessitant du coup pas de création de compte. C'est pour moi un gros avantage, doublé de celui de ne pas avoir à ouvrir un port supplémentaire sur le monde extérieur. En effet, toutes les transactions passent par le tube chiffré de SSH. L'inconvénient est évidement que chaque utilisateur ayant à utiliser subversion doit avoir son compte sur la machine distante.

Pour ce qui est des autorisations d'accès à telle ou telle ressource, cela se passe exactement comme pour le mode précédent, en utilisant le fichier authz, mais en référençant cette fois des utilisateurs "réels" de la machine distante.

Pour utiliser ce mode, il n'y a rien à faire de bien particulier. Vous devez juste configurer svnserver.conf comme indiqué dans le mode précédent en prenant cependant soin de commenter la ligne password-db = passwd. Ensuite, vous devez créer un groupe commun à tous les utilisateurs et régler les droits sur le dépôt de sorte à ce que les fichiers de celui-ci conservent une autorisation en écriture pour le groupe (c'est expliqué ici). Enfin, comme le service svnserve est lancé par SSH, vous n'avez plus à configurer (ou même installer) xinetd.

Lorsque tout est en place, vous pouvez tester comme ceci :

gaston$svn mkdir svn+ssh://mon_site/svnroot/projet_gaston/test
gaston$ 
test du protocole SVN+SSH

Vous pouvez simplifier encore l'accès en ajoutant une clef publique au serveur distant, sinon la commande vous demandera votre mot de passe avant de vous connecter. Notez enfin la présence de /svnroot/ dans l'URL qui permet au service svnserve que vous allez lancer de savoir où se trouve votre dépôt.

Accès par le protocole WEBDAV

Dans la mesure où c'est Apache qui va devoir gérer ce dépôt, il est important de lui donner les droits sur le dossier /svnroot. Si vous désirez utilisez WEBDAV en plus de SVN, ajoutez plutôt apache au groupe svn.

root#chown apache:apache /svnroot -R
root# 

Dans ce qui suit Apache est considéré comme installé et opérationnel sur votre serveur. Mais pour permettre l'utilisation de Subversion, il nous faut quelques modules supplémentaires : apache-mod_dav et apache-mod_dav_svn. En effet, WebDav est le protocole utilisé par subversion pour communiquer à travers le WEB. Le premier module va donc ajouter le protocole webdav à Apache, et le second d'étendre se protocole pour gérer spécifiquement les dépôts subversion.

Ensuite, il nous faut modifier le fichier de configuration d'apache /etc/httpd/conf/httpd2.conf en ajoutant le bloc suivant:

<Location /subversion>
  DAV svn
  SVNPath /svnroot
  AuthzSVNAccessFile /svnroot/droits
</Location>
Mise en place de subversion dans la configuration d'Apache

Cela a pour résultat d'ajouter à Apache une URL http://mon_site/subversion permettant l'accès au dépôt situé en /svnroot. L'option AuthzSVNAccessFile indique quant à elle le chemin vers un fichier texte contenant les droits associés au dépôt.

[/]
* = r
robert  = rw

[/un_projet]
gaston = rw
ginette = r
exemple de fichier de droits subversion

Tels que nous avons défini les droits, Robert a un accès complet en lecture et écriture à tous les projets. Gaston a un accès en lecture/écriture au projet un_projet et Ginette (sexisme !!) n'a accès qu'en lecture à ce même projet.

Maintenant pour que cela fonctionne, il faudrait qu'Apache ait le login de l'utilisateur. Il est donc nécessaire d'ajouter un bloc d'authentification à notre section location. Dans ce domaine, c'est à chacun de choisir : fichier apache, shadow, etc. Jetez un œil ici pour avoir des idées sur quel système utiliser.

Une fois que tout est en place, il suffit de relancer apache et d'aller à l'URL http://mon_site/subversion. En effet, Subversion fonctionne aussi bien en WebDav qu'en HTTP. Dans le second cas il est possible, si l'on a les bon droits, d'explorer le dépôt en lecture seule.

Ensuite, nous pouvons tester en ligne de commande :

gaston$svn mkdir http://mon_site/subversion/un_projet
Utilisateur:gaston
Mot de passe:mon_secret
Révision 1 propagée.
gaston$
gaston$ 
Test du serveur

Rajouter des scripts de notification

Un aspect très sympathique de subversion est la facilité avec laquelle il est possible d'ajouter des actions sur les divers événements générés dans un dépôt.

svnadmin a normalement créé un dossier hooks dans votre dossier /svnroot. Ce dossier contient déjà les modèles des cinq événements qu'il est capable de prendre en charge. Par défaut ces fichiers ont l'extension .tmpl ce qui les rends inactifs. Il faut donc ôter cette extension sur chacun des fichiers que vous désirez utiliser :

  • post-commit, appelé après un commit.
  • post-lock, appelé après un lock.
  • pre-lock, appelé avant un lock.
  • pre-unlock, appelé avant un unlock.
  • post-revprop, appelé après un changement de révision.
  • pre-commit, appelé avant la fin du commit.
  • start-commit,appelé avant le commit.
  • pre-revprop-change, appelé avant un changement de révision.

Comme exemple, imaginons que nous voulons envoyer un courriel aux développeurs d'un projet à chaque commit dans le dépôt. Pour cela nous allons créer un fichier /svnroot/hooks/post-commit :

#! /bin/sh

REPOS="$1"
REV="$2"

/usr/bin/svnnotify -r $REV -C -d -H HTML::ColorDiff -p $REPOS -x gaston@mon_site.com=projet1 --from no-reply@mon_site.com --reply-to no-reply@mon_site.com

svnnotify fait partie du projet perl-svn-notify qu'il faut donc installer. Pas la peine d'aller le télécharger, il est sûrement inclus dans les dépôts de votre distribution.

Une fois installé, il faut changer les droits sur ce hook pour permettre à apache de l'exécuter. Le plus simple est de relancer la commande chmod que nous avions utilisé au début pour tout le dépôt :

chown apache:apache /svnroot -Rc

Maintenant à chaque commit, si ce dernier appartient au projet projet1, cela provoquera un envoi de courriel à gaston. On peut spécifier plusieurs arguments -x ainsi que plusieurs adresses séparées par des virgules. Par exemple -x toto@mondomaine,tutu@mondomain=mon_module.

Erreur \"502 Bad Gateway\"

Si vous avez droit un jour à un svn: COPY of package.sh: 502 Bad Gateway (https://mon_serveur/subversion), il est probable que vous ayez tenté une copie/déplacement à travers une connexion HTTPS et ça ne marchera pas.

Sinon, autre cas problématique, celui de l'utilisation de reverse proxy sur le serveur cible (la cible est une machine apache A qui est accédée via HTTPS et qui relaye les requêtes sur une machine apache B qui gère le dépôt).

Dernière possibilité, une mauvaise définition du nom de serveur au niveau de la cible (le servername du vhost est mal configuré).

Conclusion

Voilà, c'est tout. Votre dépôt subversion est maintenant pleinement opérationnel. Enfin j'espère Smiling .

Retourner au sommaire
Gravatar de Artisan Numérique
Dell Mini 10 - Essai de la Mandriva 2010.0 
  • 12 votes
    vote oui
Par Artisan Numérique, le 13/10/2009 à 00:16.

La première installation d'une mandriva 2009.1 sur le Dell Mini 10 s'était plutôt bien passée avec un bémol tout de même, un support assez médiocre du chipset poulsbo, et particulièrement de sa partie GPU. L'ensemble était lent, la 3D inexistante et le tout a nécessité pas mal de bidouilles. Voyons donc comment se comporte la Mandriva 2010.0 RC2 sur ce point.

Installation de la Mandriva 2010.0

Ou plutôt la mise à jour qui comme d'habitude s'est faite sans problème en virant les dépôts de la 2009.1, en ajoutant ceux de la cooker, et en lançant le classique urpmi --auto-update. Après une bonne demi-heure de téléchargement, la machine était prête à redémarrer.

Nouveau test de la vidéo

Avec la 2009.1, le problème de vidéo tenait au nouveau chipset Poulsbo et plus particulièrement sa partie vidéo. En effet, la particularité de cette puce est qu'elle n'est plus épaulée par un processeur graphique, mais l'intègre en son sein. De plus, ce processeur, appelé GMA 500, n'est pas d'origine Intel mais PowerVR. Du coup, l'architecture n'a plus rien à voir avec les précédents GMA 945 & co le pilote associé semble loin d'être au point. Le résultat en était des performances très médiocres (130s au test gtkperf !!), la non prise en charge du mode XV (dommage pour la vidéo) et la non prise en charge de la 3D (exit compiz). Pour compléter le tout, la console texte devenait inutilisable dés que le module était chargé en mémoire.

Avec la 2010.0, le chipset Poulsbo est intégré en standard (plus besoin donc de passer par les backport) et semble compter un firmware supplémentaire. Concrètement cela signifie que drakx11 sait maintenant reconnaître la puce et opère les réglages et installation de paquets adéquat automatiquement. Plus besoin donc de précharger le module, tout fonctionne sans rien toucher.

Amélioration des performances

L'autre nouveauté tient au performances... aussi mauvaises que la version précédente. Cependant, j'ai entre temps découvert une magouille qui permet de régler cela de manière définitive. Il suffit en effet d'empêcher le chargement du module DRI dans /etc/X11/xorg.conf (bug #54508):

# load "dri"
Accélération pour Poulsbo

Un coup de redémarrage de la session et voilà GtkPerf qui passe directement à 30s, soit tout de même plus de 4 fois plus rapide.

Test de la 3D et de la vidéo

Sinon, autre nouveauté, la 3D fonctionne. En revanche c'est très poussif avec Compiz. Peut-être ais-je loupé un réglage d'importance mais gtkperf retombe ici à 130s... Pas très exploitable en l'état (Bug #54509). Mais comme pendant tous les tests le CPU ne décolle pas des 10%, il semble bien que le soucis vienne bien de la 3D et pas d'un quelconque émulation.

Enfin, la seconde bonne nouvelle, c'est que le mode XV fonctionne avec la possibilité du coup de lire les vidéos en plein écran, ou presque (ça saccade un peu). Mais plus intéressant, comme la 3D fonctionnant, mplayer accepte le mode -vo gl2 qui lui permet de lire de manière ultra-fluide les vidéos en plein écran. Maintenant pourquoi la 3D version compiz rame et pas la version "mplayer", mystère.

Conclusion

Pour finir, tout n'est pas encore rose car la console texte, elle, est toujours morte de chez morte (Bug #54507)

C'est étonnant le nombre de problèmes que je peux avoir avec les pilotes Intel. Depuis que j'utilise Linux, 3/4 des anomalies que j'ai remonté porte sur pilote vidéo de cette marque. C'en est presque à regretter de na pas avoir attendu un peu pour prendre un portable compatible Ion.

Retourner au sommaire