Une mise à jour ratée, drivers nvidia

Cela faisait longtemps que je n’avais pas eu de problème avec arch linux. Aujourd’hui, grosse mise à jour, à cause de java qui nécessitait une intervention manuelle. Par flemme d’aller voir sur leur site web, j’avais laissé trainé pendant deux semaines.

Je réalise donc la petite manipulation, et tout se met à jour comme prévu. Je redémarre le PC et là c’est le drame, mon PC reste en mode console, pas d’interface graphique. Première sensation à chaud, c’est juste la grosse déception que de nos jours on puisse en arriver là suite à une mise à jour, dans ma tête c’était un gros « Non, ce n’est pas possible, quel blagueur ce linux« . Dans le doute, je redémarre à nouveau, sait-on jamais. Pas de chance, même problème.

Cela a commencé à me faire chier, je voulais tout simplement utiliser mon PC pour faire un truc et me voilà bloqué sur un problème à la con car personne n’est capable d’assurer qu’une mise à jour ne cassera pas le système. Je me suis déjà imaginé à devoir tout réinstaller, d’ailleurs un petit backup du système sera fait bientôt.

Bref, d’expérience, c’est le paquet nvidia qui doit causer problème. Un petit coup d’oeil dans les logs:

[ 756.591] (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
[ 756.591] (EE) NVIDIA: system’s kernel log for additional error messages and
[ 756.591] (EE) NVIDIA: consult the NVIDIA README for details.
[ 756.591] (EE) No devices detected.
[ 756.591] (EE)
Fatal server error:
[ 756.591] (EE) no screens found(EE)
[ 756.591] (EE)

C’est là qu’on apprécie d’avoir pris le temps de bien configurer le mode console basique (le bon layout de clavier). Un petit downgrade de nvida avec un grand merci ma tablette pour l’aide du wiki sur comment downgrader, un petit reboot, et le problème… n’est pas résolu.

Là je me dis que c’est un peu la merde. J’ai pensé à la nouvelle version du noyau linux (3.17), mais la mise jour était mineure (3.16.3-1 -> 3.16.4-1). Au début je me suis qu’une mise à jour mineure ne peut pas virer des drivers, mais ne voyant pas d’autres solutions « faciles », ça ne coutait rien de downgrader le noyau.

Un petit reboot, et ça marche… gros WTF. Maintenant une mise à jour mineure peut faire péter un driver. J’ai envie d’accuser la distribution, mais elle utilise les paquets upstream, on peut facilement suivre ce qui a changé dans le paquet entre la 3.16.3 et la 3.16.4. Il n’y a pas grand chose à part l’URL de la nouvelle version upstream.

On pourrait presque en déduire que c’est donc l’upstream (les auteurs originaux) responsable de ce problème. Mais cela pourrait être aussi nvidia (nvidia 340.32-1 -> 340.32-2, nvidia-utils 340.32-1 -> 343.22-1, nvidia-libgl 340.32-1 -> 343.22-1).

Peu importe le coupable, c’est juste ridicule! C’est surement le revers de la médaille d’utiliser une distribution en rolling release, même si la distribution n’y est pour rien. Sur une autre distribution, le problème arrivera peut-être lors d’une mise à jour majeure quand le noyau changera. Du coup, fuck linux.

La solution temporaire est d’interdire la mise à jour des paquets linux et nvidia*… jusqu’au prochain épisode.

J’en profite pour ajouter les désagréments habituels. Pourquoi la mise à jour de bash m’a fait perdre tout mon historique ? Le fichier .bash_history de mon compte utilisateur (non root) est devenu vide… Mais celui d’autres utilisateurs n’a pas changé…

Pourquoi le fichier /usr/share/X11/xkb/symbols/fr écrase mes modifications au lieu de faire comme tous les autres fichiers en créant un fichier .pacnew.

Et aussi, putain, pourquoi formater une clé USB est si compliqué ? J’ai eu à le faire pour m’en servir pour une imprimante/scanner pour scanner un document (car hors de question de faire marcher le scanner avec linux, je n’avais pas envie de jouer à la chasse au trésor). Et merde, un clique droit dans Dolphin ne propose rien de cela. Quand on pense que Windows a ajouté enfin l’option triviale et énormément demandée de monter une image ISO en un click sans avoir à installer de logiciels tiers, et bien sur linux (KDE) il n’est même pas possible de formater facilement.

La poubelle

La poubelle, que c’est bien pratique, mais pas sur linux, Windows a le dessus (encore?). La poubelle correspond à un dossier, situé généralement dans ~/.local/share/Trash. On remarquera au passage la majuscule inhabituelle à Trash, ceci pour rester dans l’esprit brouillon de linux.

Il va de soit que chaque utilisateur du système possède sa corbeille, mais du coup, on arrive à une absurdité énorme dans un usage desktop de linux. On branche généralement des périphériques externes, ou bien on possède plusieurs disques dur dans la machine, où l’on apprécie alors majestueusement la notion de Corbeille de linux. En effet, à cause d’un lieu unique pour stocker les fichiers (du moins par défaut), la suppression d’un fichier sur une partion différente de celle où réside la corbeille, va impliquer le déplacement du fichier vers la corbeille sous forme de copie intégrale.

D’un certain coté, pourquoi pas. Sauf que quand de gros fichiers sont supprimés (exemple: suppression de films lors d’un trie), ils sont intégralement copiés vers la corbeille. Cela prend donc énormément de temps, alors qu’à coté, Windows, gére déjà cela très bien il y a déjà plus de 10 ans. Linux ? ahahah

Que fait Windows ? Sur chaque partition (lecteur du coup), un dossier nommé Recycler est présent et correspond à la corbeille de la partition. Ainsi sous Windows, quand on supprime un fichier, c’est instantané, c’est un déplacement sans copie (le déplacement est un simple renommage dans ce cas).

Ceci dit, linux a la problématique d’être multi utilisateurs (bon Windows aussi), et la gestion des droits ou de la sécurité empêcherait de créer une corbeille dans chaque partition. Bon en fait non, le fichier reste le propriétaire de l’utilisateur, et les droits devraient se limiter strictement à cet utilisateur une fois dans la corbeille. Hop, corbeille sécurisée. Mais linux a de grosses lacunes et traine un retard monstre, le temps que chaque distribution adopte le même système et que cela devient la norme…

En fait, voilà comment ça va se passer, ou plutôt comment ça s’est passé car forcément ce problème en a déjà fait chier plus d’un, et surement des développeurs, c’est exactement comme pour LibreOffice dans l’article précédent. Donc, le problème est négligeable car une solution existe: supprimer le fichier directement sans passer par la corbeille. Du coup, pas de solution à programmer et les développeurs peuvent faire autre chose de leur vie. Il y a même une solution alternative, déplacer soi-même les fichiers dans un dossier temporaire appelé par exemple « A supprimer », qui le moment venu, sera vidé manuellement. Hé, c’est linux, c’est le monde du bidouillage, en fait je crois que c’est fait exprès 🙂

Ahahah, les mecs qui prônent que linux est prêt pour le desktop me font de plus en plus de peine. Okay pour des vieux et encore, un vieux ça peut utiliser LibreOffice et vouloir supprimer un gros fichier d’une clé USB. C’est linux que les gens mettront à la poubelle. Pour du desktop il faut de la finition, et avec Windows c’est le bonheur.

Blague à part: Linux s’emballe à cause de la seconde intercalaire (source), beaucoup de serveurs ont été impacté. La solution ? elle existait déjà, mais elle n’a pas été mise en avant. Hehe, il faut bien justifier le salaire des IT, linux c’est du service après tout, il faut que ça plante de temps en temps !

Suite histoire d’ext4

Un beau jour ça a recommencé à nouveau… freeze, freeze, freeze à cause des accès disque. F.U.C.K linux. Je ne suis vraiment pas le seul à qui cela le fait (une recherche avec flush-8:16 ou flush-8:0 suffit). Actuellement, même KWrite freeze parfois quand je sauvegarde le fichier texte dans lequel je rédige les articles du blog… un ordinateur i7 4Go de ram inutilisable avec seulement deux applications de lancées: firefox avec un seul onglet sur une vidéo youtube, et KWrite (bon, seul firefox suffit en fait xD). Pitoyable.

Dans un autre genre, les toolkits graphiques étant différents, avec certaines applications, le CTRL+C et CTRL+V ne fonctionne pas: exemple, firefox sous kde. Il existe une solution mais elle me provoque le bug du double CTRL+C dans la console (voir article précédent). Pour d’autres applications, ce sont les nombres du clavier alphabétique qui ne marche pas (maj+numero) (exemple: truecrypt).

Dans un autre genre encore: l’écran de veille s’active après un délai très court d’inactivité (~1 minute, souvent un peu moins), malgrés une configuration à 30minutes… Le PC est devenu inutilisable, obligation de désactiver l’écran de veille.

Ou encore, au moment de se déconnecter, un écran noir avec une confirmation est censée s’afficher… sauf que le fond noir est raté, un bug fait en sorte qu’une bande de 2 cm n’est pas dessinée, du coup on voit le bureau. WTF.

Autre exemple, une application peut freezer tout le bureau, obliger d’aller dans un tty (ctrl+alt+f1 par exemple) pour tuer l’application concernée…

Ou la sauvegarde d’une image dans firefox, cela lag à cause de l’OS qui calcule à chaque fois la miniature de toutes les images du dossier dans la fenêtre de sauvegarde… La gestion du cache ? Windows le faisait déjà il y a 10 ans (Thumbs.db).

De mieux en mieux linux. C’est un produit pas fini, et finalement mal « packagé » pour ma distribution. Mais il ne faut pas se leurrer, l’herbe n’est pas plus verte ailleurs, avec une société derrière (Red hat ?) ou bien un millionnaire (Ubuntu), linux reste basé sur une multitude de logiciels open source non maitrîsés.

Ext4 ? Extra merdique v4 ?

Ext4 est l’évolution de Ext3, des articles ont fleuri pour vanter ce système, avec des benchmarks, des explications, et tout le bla bla bla pour dire que c’est génial, que c’est la nouvelle technologie « tip top caviar ».

Et c’était vrai à une époque. Récemment, mon linux (abréviation de GNU/Linux/Arch linux/KDE/etc) est devenu tellement lent que j’ai l’impression d’être sous une version de Windows bourrée de malwares. A vrai dire, quand j’ai booté sur Windows XP (en dual boot) pour tester la béta de Diablo 3 en avril, cela a été une très grande bouffée d’air frais, que c’était bon. A me demander « mais putain pourquoi je suis allé sur linux ?« , la réponse est qu’il faut essayer les alternatives pour savoir si elles sont meilleures… et aussi parce que la propagande linux cay tro bi1 cay prey pr l3 d3skt0p a fait son effet.

Bref, sous linux Firefox met 2h pour se lancer, il freeze quand je regarde des vidéos flash (chromium aussi), le disque dur ne cesse de gratter et semble être le goulot d’étranglement. Même une petite vidéo (en débit) sous VLC j’obtiens parfois des freezes de l’image, même si à ce niveau là cela correspond plus à de l’incompétence à mettre en cache suffisamment de données. Et tous ces problèmes, je ne les avais pas avant, je ne serai jamais resté sur linux aussi longtemps sinon.

La solution se traduit comme d’habitude sous linux par de la perte énorme de temps. De la recherche, des tests, des échanges avec la communauté avec les cons qui vont répondre à coté ou dire que chez eux ça marche. Bref, en fait j’ai sauté toutes ces étapes que je connais trop bien. J’ai direct appliqué les optimisations bourrines ext4 de la partition /home, car à vrai dire, je n’étais pas sûr à 100% que ça pouvait venir de là.

Résultat: alléluia, j’ai retrouvé un linux réactif et rapide. Presque dingue… Mais ces optimisations ne sont pas sans risque, elles entraînent un risque de corruption des données en cas d’arrêt brutal. Ce sont les options barrier=0, data=writeback, nobh et commit=60 (certaines décrites ici, d’autres ). Il va de soit que j’avais déjà la classique option noatime.

Le plus ironique est que cela concerne la partition /home, celle où les données sont les plus sensibles… Or, une vidéo flash n’est pas censée utiliser le disque dur, les fichiers sont sur tmpfs (RAM ou Swap, mais j’ai jamais été en swap). D’un autre coté, il est impossible d’écrire sur / car firefox/chromium n’est pas lancé en tant que root heureusement. C’est /home car tout simplement firefox (et chromium) s’en sert pour écrire ses données dont le cache, mais je ne vois pas spécialement pourquoi il se mettrait à faire ramer le disque pendant plusieurs dizaines de secondes quand une vidéo flash se lance. Par sécurité et par facilité, j’en suis réduit à me créer un espace sur / pour les données sensibles de /home.

Si je suis sur linux c’est pour ma curiosité (même si elle a des limites, comme pour le problème sous android), et suite à ce problème, je voulais savoir pourquoi et comment c’est arrivé. Je suis tombé sur cet article, sur phoronix (article sur plusieurs pages) et ce fut la révélation. D’une version à l’autre du kernel, les performances peuvent être divisée par deux, voire par 5 pour PostgreSQL.

Ceci dit, c’était à partir la version 2.6.31 du kernel qu’il y avait ces problèmes, c’est à dire septembre 2009. Cela me chagrine car j’ai eu ce problème que bien après, cela a commencé fin 2011. Je n’ai pas envie de passer plus de temps à chercher les origines. De plus il n’y a pas de filemon potable comme sous Windows (strace m’a profondément déçu). Bref, linux ? C’est de la merde.

Linux et android

J’ai un téléphone Android et je souhaite copier les photos/vidéos vers mon PC (sous linux). Cela avait toujours très bien marché, sauf ce jour là. J’effectue la copie en deux étapes: je crée un dossier de backup sur mon téléphone dans lequel je déplace les fichiers que je vais copier. Cela me permet de savoir ce que j’ai déjà transféré sur le PC tout en conservant les données sur le téléphone. La deuxième étape consiste à copier les données.

Rien de compliqué, ça a toujours marché. Je commence le déplacement, puis je copie. Soudainement, la copie s’arrête, comme si le cable avait été débranché, coté téléphone il indique que la liaison n’est plus active, et coté pc il n’y a plus rien sur le point de montage. Après tout, une coupure ça pourrait bien arriver. je reconnecte le tout… impossible à faire marcher. Je redémarre le téléphone et le PC, et ça remarche, je vais sur le téléphone dans le dossier des fichiers à copier, et TADA, tous les fichiers font 0 octet. Outch, pris de panique, je vais voir sur le téléphone pour m’assurer que ce n’est pas un bug lié à l’USB, et bien non, tous les fichiers étaient à 0 octet, tout était perdu.

Je me suis dit que c’était impossible, la copie, ça ne fait que copier, impossible que cela écrase des données. Puis j’ai pensé au déplacement de fichiers… ahahah. Merci linux, et spéciale dédicace à Windows grâce à qui j’ai pu restaurer les fichiers. Les outils sur linux ne marchant pas du tout, surement à cause d’un problème avec l’interface USB.

Ceci dit, impossible de reproduire le problème par la suite, jusqu’au jour où… la liaison USB se coupe à nouveau. Mais cette fois-ci j’ai pris mes précautions, je copie toujours avant de déplacer les fichiers (merci à la fiabilité de linux pour ces habitudes à la con). Cette fois-ci, j’ai le réflexe mount. Je vois gvfs, putain c’est quoi cette merde. GVFS is the virtual filesystem for the GNOME desktop, bla bla bla fuck, je suis sous KDE, elle vient faire quoi cette merde issue de GNOME codée avec les pieds. Avec ma super expérience de linux, j’ai tout de suite compris que ce truc de merde ne devait servir à rien, je l’ai désinstallé immédiatement. J’ai pu rebrancher mon téléphone sans problème, et depuis, je n’ai plus eu de problème. A voir sur le long terme.

C’est l’inconvénient des rollings releases, impossible de dire pourquoi cela ne marchait plus, ni depuis quand. Et un jour ce sera corrigé sans que j’en sois au courant.

Ne pas généraliser

L’article précédent est une exagération, le développeur (de update-mime-database) avait quand même prévu des cas d’erreurs bien sûr mais il avait oublié de vérifier les données en entrée. Cela n’entre pas dans la catégorie « bug normal » car les bugs ça arrivent à tout le monde, mais plutot dans « erreur » car la vérification de données en entrée est indispensable.

De plus, c’est normal que le logiciel soit fourni sans garantie. Le logiciel propriétaire ne fait pas mieux, il suffit de lire les EULA (End User License Agreement) de Windows par exemple:

L’obligation intégrale de Microsoft et de l’un ou l’autre de ses fournisseurs aux termes de toute disposition du présent EULA et votre recours exclusif à l’égard de tout ce qui précède (…) se limite au plus élevé entre les montants suivants: le montant que vous avez réellement payé pour le Logiciel ou 5,00 $US.

Donc si le pire se produit, au mieux vous êtes remboursé. Avec le logiciel open source et gratuit, il n’y a rien à remboursé puisque rien n’a été payé. Donc la réelle différence, ce sont les 5 dollars minimum. A vrai dire, j’ai lu l’EULA de Windows 7 disponible ici (du formulaire: home premium fr) et je ne retrouve pas la trace de ces 5 dollars, peut-être que ce n’est qu’au Canada en fait. Du coup du point de vu garantie, ce n’est pas mieux, c’est à égalité même. Dans le détail il y a une garantie limitée mais je ne vais pas entrer dans le détail, le PDF est clairement lisible, il n’est pas écrit entièrement en majuscule comme certains EULA, et il est facilement compréhensible. Le résumé est juste le suivant: pas de différence en pratique entre Windows et Linux.

Pour revenir à linux, si il ne faut pas généraliser, ce n’est pas pour autant un cas isolé. Le problème de linux (les logiciels) est avant tout qu’il est écrit par des débutants. C’est en étant étudiant que Linus Torvalds a commencé Linux, es-ce que tous les étudiants code n’importe comment ? ça dépend si ils ont de l’expérience ou non… donc en général oui. C’est une bonne et une mauvaise chose à la fois, car c’est essentiellement des étudiants qui consacrent beaucoup de temps à coder gratuitement. Ils apprennent de leurs erreurs heureusement, ils s’améliorent, puis deviennent professionnel après avoir obtenu leur diplôme et foutu la merde dans linux. Ok, c’est exagéré…

Heureusement que c’est moins grave que ce que l’on peut croire, linux comme on l’a vu est composé de différentes parties, dont le noyau, c’est le coeur du système, et n’importe qui ne peut pas mettre en production son code dedans sans une assurance qualité. Mais cela ne signifie pas qu’aucun étudiant n’a déjà fourré son nez dedans ou amélioré la chose.

Par contre, pour tous les autres logiciels, le contrôle qualité est au bon vouloir des personnes qui s’occupe du projet. Et cela y compris au niveau des environnements de bureau. A différent degrès quand même, mais par exemple, un logiciel hébergé sur les serveurs KDE, au même niveau des sources de KDE, peut être une vraie merde. Par contre j’espère que les composants critiques de KDE sont pris plus au sérieux, mais je ne saurai le dire.

Nous avons alors un noyau solide et des logiciels buggés autour. Moins il y a de logiciel autour, moins il y a de bugs, et c’est le cas des serveurs linux, sans environnement de bureau, on réduit considérablement les problèmes. Les serveurs linux sont très fiables pour cette raison: un noyau solide avec des applications serveurs qui ont fait leur preuve. Par contre mélanger la fiabilité des serveurs avec la fiabilité du desktop (l’environnement de bureau), c’est être aveuglé par l’idéologie du libre. Et un exemple sera donné bientôt.