Sometimes I write things, sometimes I don't.

To content | To menu | To search

Technologie

Entries feed - Comments feed

Friday 14 November 2014

Samsung 840 EVO Performance fix

Several weeks ago Samsung has released a fix for the 840 series of their SSDs that had performance issues on long time stored data. While the fix procedure is quite simple to apply on Windows, when you use your SSD on a GNU/Linux powered system it can be quite tricky. So to fix your SSD you will need a bootable USB key with the Samsung binaries. Moreover the Samsung documentation is not really well written and can lead to confusion. So here are the steps to fix dear GNU/Linux users' SSDs.

Some preps

Firstly, prepare a USB key (at least 512 MB, just to be sure) and download FreeDOS.

Creating the bootable USB key

Once FreeDOS is on your computer, plug the USB key in and find the device to interact with it. You can generally find the device using the dmesg command. This will output something like this:

[1017607.068095] usb 2-1: new high-speed USB device number 110 using ehci-pci
[1017607.278127] usb 2-1: New USB device found, idVendor=1b1c, idProduct=1ab1
[1017607.278135] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1017607.278140] usb 2-1: Product: Voyager
[1017607.278145] usb 2-1: Manufacturer: Corsair
[1017607.278150] usb 2-1: SerialNumber: AA00000000000634
[1017607.278936] usb-storage 2-1:1.0: USB Mass Storage device detected
[1017607.279084] scsi12 : usb-storage 2-1:1.0
[1017608.389828] scsi 12:0:0:0: Direct-Access Corsair Voyager 1100 PQ: 0 ANSI: 0 CCS
[1017608.390448] sd 12:0:0:0: Attached scsi generic sg2 type 0
[1017608.391272] sd 12:0:0:0: [sdb] 15663104 512-byte logical blocks: (8.01 GB/7.46 GiB)
[1017608.392259] sd 12:0:0:0: [sdb] Write Protect is off
[1017608.392266] sd 12:0:0:0: [sdb] Mode Sense: 43 00 00 00
[1017608.394784] sd 12:0:0:0: [sdb] No Caching mode page found
[1017608.394792] sd 12:0:0:0: [sdb] Assuming drive cache: write through
[1017608.402247]  sdb: sdb1
[1017608.405637] sd 12:0:0:0: [sdb] Attached SCSI removable disk

In this case you want to use the /dev/sdb dive as seen in the log.
Now you can just write the FreeDOS image on the USB disk. The image is compressed so you'll need to decompress it before.

$ bunzip2 FreeDOS-1.1-memstick-2-256M.img.bz2
$ dd if=FreeDOS-1.1-memstick-2-256MB.img of=/dev/sdb bs=512k

Copying the Samsung binaries

Download the Samsung binaries.

Mount the USB key and unzip those binaries at the USB key root. In this way you will be able to use them from FreeDOS later.

# mount /dev/sdb1 /mnt
# unzip Samsung_Performance_Restoration_USB_Bootable.zip
# mv 840Perf/* /mnt
# umount /mnt
# eject /dev/sdb

The fix

Plug the USB key in your machine and reboot the host. Do what is necessary to boot on the USB key. Choose the option 4 of FreeDOS "Load FreeDOS without driver".

Once FreeDOS is running just run the PERF.EXE file and the Samsung tool will start. Enter the index in front of the SSD you want to upgrade and fix. The utility will take care of everything (firmware upgrade and fix). Note that the pass to fix the SSD can take some time.

Once the tool has finished to fix your SSD just reboot the host by typing reboot in FreeDOS. Do not forget to unplug the USB key to avoid booting from it later.

Enjoy your brand new fixed SSD!

Saturday 25 June 2011

Apache 2 : mod_macro

internet.pngIl y a des logiciels, des outils, des modules ou on sait directement que l’on ne pourra plus s’en passer. Soit parce que c’est génial et révolutionnaire soit par ce que c’est très pratique et qu’il fallait y penser. C’est exactement ce que je me suis dis en découvrant le mod_macro pour Apache 2. Il y a quelques semaines je ne soupçonnais par l’existence d’un tel module. On m’en a parlé, j’ai laissé mariner et puis j’ai finalement mis la main à la pâte. Et là j’en ai eu la larme à l’œil. Combien de fois je me suis arraché les cheveux sur ma configuration de Apache, combien de copier/coller de virtual hosts j’ai fait… Avec mod_macro tout ça c’est terminé.

Pour résumer, ce module permet de factoriser sa configuration de Apache. On définit des macros puis on les appelle un peu comme les fonctions avec un langage de scripts. On peut faire des macros pour plus ou moins tout ainsi en organisant bien son système et en sachant factoriser sa configuration correctement on peut grandement se simplifier la vie.

Pour installer le mod_macro sur Debian et dérivées, rien de plus simple :
# aptitude install libapache2-mod-macro
# a2enmod macro


Ensuite, il s’agit de ne pas faire n’importe quoi. Afin de gérer mes macros, j’ai créé un fichier macro.conf dans le répertoire /etc/apache2/conf.d/ qui est chargé au démarrage de Apache. Comme je l’ai dit précédemment, on peut se servir des macros pour faire énormément de choses donc je n’aborderai pas tout ici.

Admettons que nous disposons des 2 hôtes virtuels suivants (exemple bidon mais c’est pour montrer le principe) :
<VirtualHost [ipv6]:80 ipv4:80>
  DocumentRoot /var/www/toto
  ServerName   toto.domaine.tld
  ServerAlias  toto.domaine.tld
  ServerAdmin  admin@toto.com

  ErrorLog     /var/log/apache2/toto_error.log
  TransferLog  /var/log/apache2/toto_access.log
</VirtualHost>


<VirtualHost [ipv6]:80 ipv4:80>
  DocumentRoot /var/www/titi
  ServerName   titi.domaine.tld
  ServerAlias  titi.domaine.tld
  ServerAdmin  admin@titi.com

  ErrorLog     /var/log/apache2/titi_error.log
  TransferLog  /var/log/apache2/titi_access.log
</VirtualHost>


Il y a quand même pas mal de points communs entre ces 2 hôtes virtuels. Imaginez s’il y en avait 20 comme ça, la configuration devient vite lourde à gérer. Avec une seule et unique macro on va bien se simplifier la vie. Dans le fichier /etc/apache2/conf.d/macro.conf on écrit donc la macro suivante :
<Macro Domain $sub $domain $root>
  DocumentRoot /var/www/$root
  ServerName   $sub.$domain
  ServerAlias  $sub.$domain
  ServerAdmin  admin@$domain

  ErrorLog     /var/log/apache2/$domain_error.log
  TransferLog  /var/log/apache2/$domain_access.log
</Macro>


Vous voyez le principe. On regroupe les éléments communs aux hôtes virtuels pour les mettre dans une macro qui s’appelle Domain et qui prend 3 paramètres sub, le sous-domaine à utiliser, domain, le domaine à utiliser, et root le répertoire où se trouve les fichiers à rendre disponible sur le web.
Le fichier contenant les virtual hosts peut alors se simplifier en :
<VirtualHost [ipv6]:80 ipv4:80>
  Use Domain toto domaine.tld rep_toto
</VirtualHost>

<VirtualHost [ipv6]:80 ipv4:80>
  Use Domain titi domaine.tld rep_titi
</VirtualHost>


L’utilisation de la macro se fait avec la syntaxe très script-like Use NomMacro [paramètres]. Il faut impérativement donner tous les paramètres à la macro sans quoi la vérification de la configuration échouera.

L’exemple d’utilisation donné ici est simple mais on peut faire des choses plus complexes en utilisant des macros dans d’autres macros, etc… Il faut juste trouver la configuration qui convient le mieux pour son serveur. En tout cas je ne me séparerai plus du mod_macro que je trouve vraiment intéressant pour gérer les hôtes virtuels (chose que je trouve très ennuyante).

Tuesday 12 April 2011

Apache 2 en mode multithreadé

internet.pngVous le savez (ou pas) les installations classiques d’Apache 2 (avec PHP et MySQL bien souvent) sur Ubuntu (et même Debian) se basent sur une version bien spécifique du serveur web : la version prefork. Son comportement est donc de créer des processus (lourds) pour traiter les différents clients qui veulent accéder aux pages web. L’inconvénient c’est que la multiplication des processus pour le système d’exploitation c’est … lourd. Pour le soulager un peu, on peut utiliser une version d’Apache pas forcément ultra connue s’appelant worker. Cela permet de traiter les clients avec des threads (processus légers) et c’est particulièrement intéressant pour les processeurs récents (ou même assez vieux en fait).

Pour installer la version worker d’Apache, rien de plus simple :
# aptitude install apache2-mpm-worker

Ah ouais, mais il veut me virer le mod PHP5 ? Ça y est le voici l’inconvénient, le mod PHP5 n’est pas thread safe. On ne peut donc pas l’utiliser avec la version multithread de Apache. Mais comme PHP est quand même ultra répandu sur le web et que l’on ne peut se passer de ce magnifique blog (j’entends quelqu’un qui me dit que je devrais mettre plus de contenu pour qu’il soit magnifique), il existe tout de même une solution pour faire l’interprétation des scripts PHP.

On va utiliser la technique FastCGI. À la base CGI était utilisé pour faire du contenu dynamique sur le web avec plein de langages de programmation (Perl, C, script shell, etc…). En fait, il n’y a pas vraiment de limite de langages. FastCGI peut donc parfaitement interpréter du PHP. Pour activer cela, on installe alors 2 petits paquets :
# aptitude install libapache2-mod-fcgid php5-cgi

Si mod_fcgid n’est pas automatiquement activé dans Apache 2, on fera aussi un petit :
# a2enmod fcgid

Dans le cas où on a besoin de faire des modifications dans la configuration de PHP, on ira plus voir /etc/php5/apache2/php.ini mais plutôt /etc/php5/cgi/php.ini.

L’inconvénient c’est que, contrairement à mod_php5 pour apache2-mpm-prefork, les pages PHP ne seront pas interprétées sans modifier les différents VirtualHost qui peuvent servir des scripts PHP. Il faudra donc ajouter dans chaque directive Directory contenant désignant des répertoires avec du PHP les directives suivantes :
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
Options ExecCGI


La ligne AddHandler permet de spécifier quelle extension de fichier est à exécuter via FastCGI. FCGIWrapper donne le programme à exécuter pour traiter l’extension donnée. Et il ne faut pas oublier l’option ExecCGI sans quoi le PHP ne sera pas interprété.

Au final, cela pourra donner un VirtualHost dans le genre de celui-ci :
<VirtualHost *:80>
  DocumentRoot /var/www/mon_site

  <Directory "/var/www/mon_site">
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
    Options ExecCGI Indexes FollowSymLinks MultiViews
  </Directory>
</VirtualHost>


Comme vous pouvez le voir, ça peut vite être lourd si on a beaucoup de VirtualHost à changer. C’est pour ça que je vous encourage donc d’utiliser le mod_macro (merci Romain pour l’astuce) pour vous simplifier votre future administration du serveur web. Une fois tous les VirtualHost modifiés, il faudra redémarrer le serveur Apache.
# /etc/init.d/apache2 restart

Et là, si votre Apache avait l’habitude d’être un gros consommateur de ressources, il devrait se calmer.

Tuesday 19 October 2010

My Book World, et que la lumière soit

bash.pngÇa commence à faire un moment que j’ai mon My Book World et je dois avouer que c’est terriblement pratique et efficace. Mais, depuis que je vis dans mon petit studio d’étudiant, la lumière blanche émise par les LED du disque externe est assez embêtante pour dormir.

Outre l’idée géniale du “tout est fichier”, GNU/Linux permet une personnalisation du système incroyable. Comme le My Book World utilise un système GNU/Linux léger autant en profiter non ? C’est ainsi que je me suis dit “hop un petit coup de echo dans les fichiers qui vont bien et je vais maîtriser les LED”. Grave erreur, enfin non, mais c’est un peu plus compliqué à cause justement du système minimal.

1. Activer SSH

Première chose, il faut activer le service SSH si ce n’est pas déjà fait. Pour cela, on se connecte sur l’interface web, on passe en Mode Avancé puis dans l’onglet Système on clique sur Avancés. Là, on coche la case Activer en face de Accès SSH.

ssh-mybookworld.png
On peut donc ensuite se logger avec… SSH. Le login est root et le mot de passe welc0me. Je vous invite bien évidemment à changer ce dernier à coup de passwd une fois connecté.
~$ ssh root@adresse_ip
~ # passwd

2. Vérification connexion Internet

Hé oui, au titre on le devine. On va avoir besoin d’une connexion Internet pour les quelques opérations à venir. Pour cela, il faut vérifier les paramètres réseaux. Dans l’interface d’administration, en mode avancé, cliquer sur l’onglet Réseau puis sur Réseau local. Si vous utilisez le client DHCP ça devrait être tout bon. En revanche, si comme moi vous utilisez le l’adressage en mode statique assurez-vous de bien avoir mis au moins un serveur DNS accessible (8.8.8.8 pour moi).

dns-mybookworld.png
Normalement, vous devriez pouvoir tester un ping sur une machine extérieure au réseau local depuis le SSH.
~ # ping respawner.fr
PING respawner.fr (88.191.119.214): 56 data bytes
84 bytes from 88.191.119.214: icmp_seq=0 ttl=56 time=30.9 ms

3. Installation de cron

Par défaut, il n’y a pas de cron sur le système du My Book World. Il est tout de même possible de l’ajouter car on va l’utiliser pour planifier l’extinction et l’allumage des LED. Il est existe un utilitaire nommé optware permettant d’installer des paquets IPK qui va nous faciliter la vie. On commence alors par installer optware. Toujours dans notre session SSH, on entre les commandes suivantes.
~ # wget http://mybookworld.wikidot.com/local--files/optware/setup-whitelight.sh
~ # sh setup-whitelight.sh


Maintenant, on met à jour (un peu à la façon APT) la liste des paquets avec :
~ # /opt/bin/ipkg update

Puis, on peut enfin installer cron :
~ # /opt/bin/ipkg install cron

4. Configuration

Comme on peut le voir, le binaire ipkg installe tous les paquets dans le dossier /opt/. C’est un bon moyen pour être certain de ne pas exploser le système. Le souci c’est que, du coup, cron ne se lancera pas au démarrage du disque dur externe. On va donc créer un lien du fichier /opt/etc/init.d/S10cron vers /etc/init.d/S10cron pour corriger le problème.
~ # ln -s /opt/etc/init.d/S10cron /etc/init.d/S10cron

Et puis, pour tester que notre cron fonctionne, on va mettre à jour l’heure via un serveur NTP. On édite (avec vi par exemple) alors le fichier /opt/etc/crontab pour y ajouter à la fin la ligne suivante :
* 4 * * * root ntpdate pool.ntp.org

Pour que l’ajout dans le fichier soit pris en compte, on redémarre le cron.
~ # /opt/etc/init.d/S10cron

5. Au tour des LED

On va enfin pouvoir nous occuper des LED. Comme je le disais plus haut, on peut contrôler les LED avec de simple echo de valeur dans les fichiers qui vont bien. Il suffira alors de mettre 192 pour éteindre ou 255 pour allumer les LED dans le fichier /sys/class/leds/oxnas-wd810-leds:sw/brightness. On peut tester rapidement les effets avec ces 2 commandes :
echo 192 > "/sys/class/leds/oxnas-wd810-leds:sw/brightness"
echo 255 > "/sys/class/leds/oxnas-wd810-leds:sw/brightness"


Mais bon, le but pour nous est de faire ça automatiquement. Par conséquent, ces 2 commandes prendront place dans le fichier /opt/etc/crontab. On ajoute donc à la fin de ce dernier les lignes suivantes :
30 23 * * * root echo 192 > "/sys/class/leds/oxnas-wd810-leds:sw/brightness"
30 9  * * * root echo 255 > "/sys/class/leds/oxnas-wd810-leds:sw/brightness"


On enregistre et on redémarre le cron. Et voilà, le tour est joué. Avec la configuration donnée ici, on constatera alors que les LED s’éteindront à 23h30 pour se rallumer à 9h30.

Monday 4 October 2010

Contrôler VLC avec son Android

astuce.pngDepuis que je suis rentré en Licence j’ai un nouvel appartement ("on s’en fiche" vous me direz, mais faut une introduction non ?) et j’ai surtout un nouveau canapé que j’apprécie beaucoup. Mon PC n’en est pas très loin, mais comme certains le savent j’aime en faire le moins possible. C’est donc suite à cette situation que j’ai rêvé d’une application pour contrôler VLC (et regarder des vidéos) à distance.

Étant l’heureux possesseur d’un HTC Hero depuis un peu plus d’un an, je me suis dit qu’il devait y avoir probablement quelques développeurs aussi fainéants que moi. Du coup, ils le sont un peu moins vue qu’ils ont pris le temps de coder leurs propres applications. Ainsi, je me suis lancé en quête d’une télécommande de VLC dans l’Android Market et j’ai découvert VLC Remote.

market-vlc-remote.png
Aussitôt, je l’ai installé. Cette application fonctionne grâce au serveur HTTP intégré dans VLC. Par défaut, il n’est pas actif mais on peut l’activer soit en quelques clics, soit en lançant la ligne de commande qui va bien.

vlc-httpd-graphique.png
Les deux clics ci-dessus sont plus ou moins l’équivalent de la ligne de commande suivante :
~$ vlc --extraintf=http --fullscreen --http-album-art --qt-start-minimized

Maintenant que le serveur HTTP de VLC est lancé, VLC Remote sera capable de le détecter. Il faut bien entendu que le mobile Android soit sur le même réseau que le PC contenant VLC. C’est possible entre autre par le Wi-Fi (qui est mis à disposition sur à peu près tous les smartphones et les boîtiers ADSL). Par exemple, avec ma Freebox, j’ai un réseau de classe C assez classique (faut que je songe à le changer peut-être) auquel mes 2 PCs ainsi que mon Hero sont connectés.

vlc-remote-settings.png
Sur la capture d’écran précédente, on constate donc que VLC est lancé sur le PC d’adresse IP 192.168.0.12 et que l’interface HTTP utilise le port 8080. On sélectionne donc cette machine dans l’interface pour contrôler VLC. On peut ensuite sélectionner un fichier à lire en utilisant le bouton en haut à droite. Une fois le fichier sélectionné, on peut mettre en pause, stopper, reprendre, avancer, reculer la lecture, gérer la playlist et gérer le mode plein écran.

vlc-remote-filechooser.png    vlc-remote-running.png

Voilà un outil bien pratique pour transformer son Android en télécommande pour VLC. Maintenant, vous pourrez rester sur votre fauteuil tout en regardant ce que vous voulez. Encore une technique pour bouger un peu moins.

Monday 30 November 2009

Essai de la coque Mizu Shell pour HTC Hero

Aujourd'hui est un jour de test. Les housses ou coques pour protéger le HTC Hero il n'y en a pas des tonnes (contrairement à l'iPhone). On peut l'expliquer en partie grâce au design du smartphone qui peu banal (mais tellement sympathique). Pourtant, on a grand besoin de protections pour mettre notre Hero à l'abri des chocs et d'autres choses. C'est dans ce but que Proporta propose son produit Mizu Shell.

Cette coque faite en silicone permet de protéger son HTC contre les chocs et les éraflures mais seulement sur les côtés et l'arrière de téléphone. En effet, l'avant reste libre afin que l'on puisse continuer à manier l'engin.

L'avantage de cette protection est d'épouser parfaitement la forme du Hero. Une fois celui-ci rangé dedans, il ne bouge plus et profite de son nid douillet. On peut observer un motif sur le dos de la coque qui me fait penser à celui que l'on peut trouver sur l'arrière du HTC Diamond (premier du nom).

   

On peut également remarquer que toutes les prises qui sont sur le HTC Hero sont libres. On peut donc, malgré le fait d'utiliser la coque, continuer à brancher le câble USB, ou encore ses écouteurs sur la prise jack et même prendre des photos.
   
   

La coque Mizu Shell n'étant tout de même pas très épaisse, il faut quand même continuer à manipuler le smartphone avec attention, un gros choc ne sera pas vraiment atténué. Petite chose qui me chagrine, je trouve (mais cela n'est que mon avis) que le design tant apprécié du Hero souffre un peu lorsque l'on utilise cette protection. J'aurais préféré quelque chose de plus esthétique.


La Mizu Shell reste quand même un bon produit qui ne manquera pas à son devoir, c'est-à-dire protéger le Hero des attaques extérieures. Chose qui peut être très pratique si on considère la fragilité de nos petites bêtes qui sont à la fois pratiques et coûteuses.

Friday 23 October 2009

Un Hero m'a sauvé

Je l'attendais avec impatience ces derniers jours et il est enfin arrivé. J'en avais marre de mon HTC Diamond, enfin... j'en avais surtout marre de Windows Mobile 6 et de sa lenteur. J'aurais pu me tourner vers Windows Mobile 6.5 mais non quitte à changer de téléphone pour son système d'exploitation autant un prendre un bon. C'est donc pour ça que j'ai choisi le HTC Hero.

Pourquoi j'ai choisi ce téléphone ? Cette question pourrait appeler beaucoup de réponses avec des tas d'arguments. Moi, je l'ai choisi parce qu'il me plait c'est tout. Son design, son système d'exploitation et son interface sont très réussis.


Il est très simple d'utilisation et offre beaucoup de fonctionnalités (GPS, appareil photo 5 mégapixels, lecteur de carte micro SD dont une de 2 Go accompagne le téléphone, 3G+, et j'en passe). Le HTC Hero est le premier téléphone (de chez HTC donc) à avoir proposé l'interface Sense. C'est une surcouche un peu comme le TouchFlo3D sur Windows Mobile mais en beaucoup plus personnalisable. Grâce au 6 extensions de l'écran d'accueil (oui un peu comme le changement de bureau virtuel sous Ubuntu), on peut placer tout un tas de widgets qui peuvent aussi bien afficher la météo, donner accès aux contacts favoris, que modifier des paramètres du téléphone.

Je ne suis pas encore un fan des autres Facebook, Twitter, etc, mais le HTC Hero possède les logiciels qui vont biens pour exploiter les réseaux sociaux les plus populaires. Étant un grand utilisateur du stylet, j'ai été, au début, assez déstabilisé par son absence sur le Hero mais finalement, l'écran tactile est beaucoup mieux gérer et surtout beaucoup plus précis que sur le Diamond. Les fautes de frappe sont rares malgré le "tout au doigt". La coque du téléphone permet de bien le tenir en main et l'empêche de glisser.

Bref, un bon téléphone qui ne manquera pas de m'être utile. La rapidité de Android comparé à celle de Windows Mobile me surprend déjà agréablement. Je pense donc que le meilleur reste à venir.

Monday 15 June 2009

GNU/Linux, Compiz et tactile

Si après ça on me dit que les distributions GNU/Linux ça s'utilise principalement via l'interface en ligne de commande...


Bon le monsieur utilise KDE toussa mais bon ça pourra faire pareil sous GNOME.  Tout ça ça fonctionne avec le kernel 2.6.30 et Compiz (avec communication d-bus) et ça permet d'avoir les possibilités offertes par Apple (sur leur iPhone) et Microsoft (via Surface). Et puis bon petite fierté patriote c'est développé par des français.

- page 1 of 3