Blog Haypo

Aller au contenu | Aller au menu | Aller à la recherche

lundi 5 décembre 2011

La FSF France met en ligne de code source d'EdenWall

L'association FSF France vient d'ouvrir le site ufwi.org qui contient le code source libre de mon ancien employeur (EdenWall, anciennement INL). C'est une excellente nouvelle pour les clients d'EdenWall (la société ayant été liquidée en août 2011), pour les anciens développeurs d'EdenWall (qui ont à nouveau accès au code qu'ils ont écrits et vont pouvoir le réutiliser) et pour toute personne proche des projets EdenWall (NuFW, NuFace, NuLog, etc.).

C'est également une excellente nouvelle pour la communauté du libre, c'est une belle démonstration que le logiciel libre survit à la liquidation de son éditeur. Les développeurs et sociétés intéressés au code vont pouvoir en reprendre le développement, et des sociétés de service vont pouvoir proposer du support pour les appliances EdenWall en tout sérénité.

Pour comprendre d'où vient le code source et dans quelle condition il été remis en ligne, voici un historique du code et de son éditeur, la société INL, devenue EdenWall entre temps.

Avant mon arrivée à INL (2003-2005), nufw.org

Logo et mascotte d'INL : nupik le porc-épic

Comme je l'ai écrit dans un article précédent, j'ai choisi de travailler dans la société INL parce qu'elle affichait son implication dans le libre, défendait les valeurs du libre et s'en servait pour vendre ses services. Les dépêches et journaux LinuxFR suivants, écrits par les deux cofondateurs Éric Leblond et Vincent Deffontaines, en témoignent :

Les principaux logiciels étaient le parefeu NuFW et l'éditeur de jeu règles de parefeu NuFace. À cette époque, NuFace était composé d'un backend en Python (nupyf) et un frontend web (PHP4, HTML, Javascript, CSS). Ces logiciels ont été écrits par Éric Leblond, Vincent Deffontaines et Jean Gillaux. Ils ont été indirectement financés par les offres de service Linux (administration système essentiellement).

Le code de NuFW était publié sur le site nufw.org (nom de domaine déposé en août 2003). Le code de NuFace était hébergé sur le site de l'entreprise, inl.fr (nom déposé en mars 2004).

INL 2006-2008, software.inl.fr

Appliance EdenWall 3

Logo de l'appliance EdenWall

J'ai rejoint la société INL en février 2006. L'époque INL (2006-2008) a été prolifique au niveau de la publication de logiciel libres.

Les développements de NuFW et NuFace se poursuivent pendant cette période. Le logiciel NuLog, qui existait déjà avant mais n'était pas mis en avant, a été réécrit et publié. La nouvelle version (NuLog 2) a été écrite par Romain Bignon. J'ai d'abord contribué à NuFW, puis j'ai beaucoup travaillé sur NuFace jusqu'à en écrire une nouvelle version majeure (NuFace 2).

NuFW, NuFace et NuLog ont été inclus de plus en plus régulièrement dans des parefeux conçus spécialement pour des clients. C'est aussi durant cette période que le produit EdenWall 3 est né : une Debian Stable avec les 3 logiciels cités, plus de nombreux outils d'administration (configuration système), de surveillance système (rrdtools) et une petite infrastructure de gestion de clés publiques (PKI, première version de nupki). Les logiciels EdenWall 3 étaient hétérogènes au niveau des langages de programmation (Python, PHP, Perl, bash, Javascript, ...), les logiciels communiquaient peu. L'ensemble fonctionnait bien et a été vendu à plusieurs clients (entre 5 et 10, je ne sais pas trop) sous forme d'une appliance (rackable, format "1U").

Site software.inl.fr

En dehors des logiciels "majeurs", de nombreux petits outils écrits par les différents développeurs étaient diffusés sur le site software.inl.fr. Ce site servait de vitrine technologique pour démontrer les compétences de l'équipe, les développeurs et la direction y trouvaient leur compte. Certains logiciels étaient écrits durant le temps libre des développeurs, mais les développeurs acceptaient d'associer INL à leur projet, parce que ça semblait naturel et que tout le monde y gagnait.

NuFW a 3 ans, joyeux anniversaire

Liste des logiciels libres hébergés sur software.inl.fr :

  • GvGen : bibliothèque de génération de graphiques (utilisant Graphviz)
  • HAL-GK : Fork du parefeu NSM, un "proxy multi protocoles"
  • IPy
  • lagfactory : Script simulant une lenteur réseau ou la perte de paquets vers une cible donnée
  • macfly : bibliothèque modifiant l'horloge d'un programme. Projet que j'ai développé pour le CNES et publié sous licence libre (avec l'accord du CNES).
  • nf3d : Outil de visualisation 3D des logs Netfilter, voir aussi la présentation au SSTIC 2008 (diaporama)
  • nflog-bindings : Binding haut niveau de la bibliothèque libnetfilter_log
  • nfqueue-bindings : Binding haut niveau de la bibliothèque libnetfilter_queue
  • NuCentral : Framework de gestion de modules
  • NuConntrack : Monitoring et manipulation du suivi de connexion (conntrack) Netfilter
  • NuFW : Le parefeu authentifiant, accompagné de modules SSO pour Apache et Squid (squid_nufw_helper, mod_auth_nufw) et d'un client graphique (NuApplet2)
  • NuFace : interface de gestion de jeux de règles du parefeu
  • NuLog : Analyse et reporting des logs réseaux
  • NuPHP : Bibliothèque PHP utilisée par NuFace et autres projets PHP
  • Ouadjet : Généateur de règles modsecurity pour un proxy web inverse
  • pynetfilter_conntrack : Binding Python de la bibliothèque libnetfilter_conntrack
  • spamstats : Analyse et graphiques de logs spamassassin
  • Valpyk : Parseur de logs Valgrind
  • Wolfotrack : Gestion du suivi de connexion Netfilter avec le jeu Wolfenstein 3D (voir la vidéo sur youtube). Les ennemis étant des connexions réseaux. Tuer un enemi tuait effectivement les connexions actives du parefeu. Cette modification a été écrite par Sébastien Tricaud et Laurent Defert dans leur temps libre, et publiée sur le site software.inl.fr.

Le site software.inl.fr ayant fermé, j'ai indiqué le nouvel hébergement de chaque projet, pour les projets qui ont eu la chance d'avoir un nouvel hébergement. Le code source des projets HAL-GK, Ouadjet, spamstats, Valpyk et Wolfotrack a été perdu lors de la fermeture de software.inl.fr. Les projets NuCentral, NuConntrack, NuFW, NuFace et NuLog sont maintenant hébergés sur ufwi.org (voir plus bas).

software.inl.fr contenait également un miroir public du dépôt Subversion d'INL. Certaines parties n'étaient pas publiées, mais pour les projets publics : le code était en ligne en moins de 24h. INL était donc très transparent et ouvert. Cette ouverture a été récompensée par plusieurs contributions externes, plus ou moins importantes, aux différents projets.

Communication LinuxFR

Logo du site LinuxFR

Le site d'information LinuxFR a été utilisé pour la communication d'INL avec la communauté du libre :

Contributions au libre et packaging

Logo de la distribution Debian

Une page listait également les contributions au libre réalisées par les employés d'INL, faites dans leur temps de travail ou dans leur temps libre. Logiciels ayant reçu des contributions sous forme de patch dans le désordre : noyau Linux, Netfilter, ulogd2, Prelude, Apache, SquidGuard, gcrypt, gnutls, Python, PHP, DIA, Layer7, Dia, glibc, centreon, afterglow.

Une autre forme de contribution était le packaging de logiciels et bibliothèques : Pierre Chifflier pour Debian, Jérôme Soyer et Michael Scherer pour Mandriva et Fedora. Bien sûr, ils ont packagé les logiciels INL, mais également un grand nombre d'autres projets. Là aussi, les contributions étaient à la fois faites dans leur temps libre et dans leur temps de travail.

Quelques exemples de paquets :

EdenWall 2009-2011, nufirewall.org

Nouvelle version de la mascotte Nupik à le mode EdenWall

Une levée de fonds et le changement de métier a entrainé le changement de nom de la société : INL devient EdenWall. La majorité des logiciels INL qui composent l'appliance EdenWall 3 vont être réécrits pour donner un nouveau produit : EdenWall 4. Le développement des nouvelles versions de logiciel est confidentiel.

Sur la période 2009-2011, il y aura deux annonces LinuxFR :

NuFirewall est la version libre du produit EdenWall. Le code est alors hébergé sur un nouveau site, nufirewall.org (nom de domaine déposé en décembre 2009).

N'ayant pas réussi à s'imposer dans le secteur concurrentiel des parefeux, la société EdenWall se voit forcée de déposer le bilan en août 2011.

FSF France et UFWI, ufwi.org

Logo du projet UFWI

Novembre 2011, la FSF France réagit à la fermeture des sites hébergeant le code libre (software.inl.fr, nufw.org et nufirewall.org) en lançant un appel pour récupérer le code dans l'objectif de le remettre en ligne.

Cet appel est couronné d'un succès : le code est remis en ligne sur un nouveau site, ufwi.org : Nouvel hébergement du projet NuFW sur ufwi.org.

Le site UFWI héberge 3 dépôts git contenant le code source libre d'EdenWall 4 : ew4-updates, edw-svn, nufw. Le dépôt edw-svn est le plus gros (4 Go contre 9 Mo pour nufw et 430 Mo pour ew4-updates).

edw-svn

Ce dépôt (au format git-svn) est une copie du dépôt Subversion contenant l'historique de juin 2008 à février 2011 (il manque donc le code de mars à août 2011).

Frontends et backends :

  • nuconf : Configuration système
  • nuconntrack : Suivi de connexion
  • nudpi : Analyse de paquet en profondeur (Deep Packet Inspection, DPI) utilisant la bibliothèque non libre Qosmos
  • nuface3 : Gestion de jeu de règles du parefeu
  • nugraph : graphiques RRD
  • nulog3: Analyseur de logs du parefeu
  • nupki : Interface simple de gestion d'infrastructures de clés publiques (PKIs)

Frontends :

  • edenwall-administration-suite : interface graphique intégrant nucentral-admin, nuface, nuconf, nulog, nudpi, nupki ainsi qu'une page d'accueil
  • edenwall-console-access : gestion des permissions d'accès utilisant le port série (modification du mot de passe)
  • nucentral-admin : gestion du serveur nucentral (utilisateurs, groupes, permissions)

Backends :

  • nnd : interrogation d'annuaires utilisateurs, supporte OpenLDAP, Active Directory, etc.
  • nucentral : serveur "nucentral", Object Request Broker (ORB) utilisant XML-RPC (avec HTTP/1.1 en mode connecté) et SSL/TLS
  • nucentral-edenwall : modules nucentral supplémentaires
  • nucentral-multisite : Gestion de plusieurs parefeux
  • nurestore : import-export de configuration

Autres :

  • edenwall-ezio : gestion du panneau frontal LCD pour afficher des informations et déclencher des actions comme rebooter
  • edenwall-portal : page d'accueil HTML du proxy web
  • edenwall-snmp : sondes SNMP pour nuauth
  • ew4-diag : Analyseur de logs nucentral
  • python-atlee-pam : packaging Debian de la bibliothèque Python PAM (atlee)
  • tools : divers outils pour travailler sur le projet edw-svn

NuFW

Composants :

  • nutcpc : client UNIX en ligne de commande
  • libnuclient : bibliothèque partagée par tous les programmes clients
  • nufw : démon du parefeu
  • nuauth : serveur d'authentification
  • nussl : bibliothèque SSL/TLS utilisant la bibliothèque GnuTLS ou OpenSSL
  • pam_nufw : script PAM lançant nutcpc en arrière plan

Modules du serveur d'authentification (nuauth) :

  • acls : ldap, plaintext
  • logs : MySQL, Prelude, PostgreSQL, script, syslog, ulogd2
  • authentication : ipauth_guest, MySQL, nnd, PAM, plaintext
  • mark : field, flag, group, uid
  • x509 : OCSP, standard (x509_std)
  • autres : multi_mode, script, postauth_localuser, session_authtype, session_expire, xml_defs (durées et périodes de temps)

ew4-updates

Ce dépôt est une copie du dépôt git contenant l'historique de décembre 2009 à mars 2011 (il manque donc le code d'avril à août 2011). Il contient les recettes pour générer les mises à jour de l'appliance parefeu et de l'appliance multisite (Multi-Firewall) :

  • Pare feu : 36 mises à jour (numéro 10 à 48), la mise à jour de développement n°666 (active SSH et le mode debug), 9 mises à jour spéciales (9000xxx) et un modèle de mise à jour
  • Multisite : 2 mises à jour (n°13 et n°14)

Prelude

En 2009, l'éditeur Prelude IDS est racheté par EdenWall et le développement se poursuit dans EdenWall. On peut trouver une version libre de 2010 dans Debian :

La version libre de Prelude était hébergée sur prelude-ids.org (nom de domaine déposé en octobre 2001), puis sur prelude-technologies.com (nom déposé en décembre 2009). Pour les archives, il existe aussi un projet Prelude sur Sourceforge, mais le projet n'a pas été touché depuis 9 ans.

Pour la suite

Je compte reprendre le développement des projets nucentral, nuface, nnd, voir aussi nulog, pour qu'ils soient faciles à installer. Peut-être que nufw nécessite également un peu de nettoyage.

Il ne restera ensuite plus qu'à lancer une grosse campagne de communication pour faire connaître ces logiciels, et peut-être aussi recruter des développeurs.

Bien sûr, si vous êtes intéressés, je vous invite dès à présent à rejoindre le projet !

Note : J'ai cité certains auteurs, mais il ne s'agit sûrement pas d'une liste exhaustive. Consultez le fichier AUTHORS de chaque projet pour une liste plus complète.

mercredi 21 septembre 2011

Nouvel ordinateur, KVM et le système de fichier btrfs

Je me suis acheté un nouvel ordinateur pour développer et pour lancer plusieurs machines virtuelles en même temps :

  • CPU : Intel i7-2600, 64 bits, 8 coeurs (4 coeurs avec hyper threading) à 3.4 GHz
  • RAM : Kingston 12 Go à 1066 MHz
  • Carte mère ASUS P8P67LE
  • 2 disques Western Digital, "Caviar blue", de 1 To en SATA
  • GPU : Radeon HD 5500
  • Boîtier Antec Sonata IV

J'ai tenté de configurer les deux disques en RAID 0 avec le RAID matériel, mais j'ai appris que le chipset Intel P67 ne fait que du RAID logiciel. Il y a un chipset SATA supplémentaire (Marvell), mais je n'ai pas essayé de m'en servir. L'installeur de Fedora 15 m'a permis simplement de créer un RAID 0 logiciel. Puisque j'aime vivre dangereusement, j'ai choisi de créer une seule partition de 2 To dans le système de fichier btrfs (encore qualifié d'expérimental). Au passage, /proc/mdstat permet de voir l'état actuel du RAID logiciel.

J'ai acheté cette machine pour lancer plusieurs machines virtuelles, et j'ai donc installé rapidement virt-manager pour gérer facilement plusieurs machines virtuelles KVM. Problème : les installeurs étaient vraiment très lents. J'ai installé Debian Testing, OpenBSD 4.9, OpenBSD 5.0, FreeBSD 8, OpenIndiana et Windows Vista. J'ai d'abord remarqué que c'était QEMU (émulation logicielle) et non pas KVM (émulation matérielle) qui était utilisé. La virtualisation matérielle était desactivée dans le BIOS, arf. J'ai du supprimer mes VMs pour les recréer, je n'ai pas trouver comment passer de qemu à kvm pour une VM existante, et de toute façon j'avais arrêté les installations en cours (c'était vraiment trop lent).

Mais ça n'a pas changé grand chose, l'installation était encore vraiment très lente. En fait, au début c'était très rapide, puis tout à coup, les performances s'effondraient : 1 Mo/sec, 700 Ko/sec, ... 3 Ko/sec ! J'ai mesuré les performances de mon système de fichier avec bonnie++ : les performances brutes étaient autour de 234 Mo/sec, très supérieur à ce qu'indiquait l'installeur FreeBSD.

J'ai contacté les développeurs KVM qui m'ont conseillé de voir du côté de btrfs. J'ai alors contacté les développeurs btrfs qui m'ont demandé des détails. Je leur ai indiqué que je ne constatais pas de problème de performance avec Virtualbox. Ils m'ont alors parlé de l'option de cache du disque KVM. Voici la vitesse indiquée au cours de l'installation de FreeBSD selon le mode de cache :

  • writethrough (par défaut) : 1 Ko/sec
  • none : 40 Ko/sec
  • writeback : 1 400 Ko/sec
  • unsafe : 1 500 Ko/sec

L'option unsafe n'est pas accessible depuis virt-manager. La différence entre ces modes est l'interaction avec le système de fichier de l'hôte (btrfs dans mon cas) :

  • writethrough est le mode le plus sûr mais le plus lent : il appelle fsync() après chaque écriture
  • none utilise O_DIRECT et n'appelle jamais fsync(), or btrfs ne supporte pas encore O_DIRECT
  • writeback appelle fsync() quand le système invité utilise une barrière (s'assure que les données sont écrites sur le disque)
  • unsafe n'utilise pas O_DIRECT et n'appelle jamais fsync()

VirtualBox utilise l'équivalent du mode writeback par défaut.

En résumé : si vous utilisez KVM et que le système de fichier qui stocke les images disques est btrfs, changez le mode de cache du disque dur KVM avant l'installation du fichier pour le mode writeback.

jeudi 25 mars 2010

Visualiser une image qui ne tient pas en mémoire vive : utilisez nip2 !

La majorité des applications se portent pâles quand il s'agit d'afficher de grandes images. Par grande, j'entend 5000x5000 pixels voir beaucoup plus. Le pire étant quand l'image décompressée est plus grande que la mémoire vive : l'application épuise petit à petit la mémoire, commence à utiliser le swap (utilise le disque dur, très lent), et finit par se faire tuer par OOM Killer. Sauf que l'application met du temps à se faire tuer, et l'ordinateur devient très rapidement totalement inutilisable (la charge de la machine monte à 5, 10, puis on n'arrive même plus à l'obtenir dans top).

La solution est le programme nip2 qui ne charge en mémoire que ce qui est affiché à l'écran, ce qui permet de d'afficher des images qui ne tiennent pas en mémoire. Il affiche une barre de progression lorsqu'il prépare l'image (il crée sûrement un index position en pixels => offset dans le fichier).

nip2 affichant une photo JPEG de 27.684 × 3.488 pixels

La bibliothèque GEGL permet également d'afficher de très grosses images, mais je ne connais pas d'outil facile à prendre en main qui l'utilise pleinement. Gimp a commencé à l'intégrer dans sa version 2.5, mais c'est encore expérimental et tout n'utilise pas GEGL. Il me semble que Gimp ne sait pas afficher d'image plus grande que la mémoire vive. En tout cas, je n'ai pas envie de tester !

En parlant de grosses images, j'en connais deux types : « grosses » photos (souvent un photomontage de plusieurs autres photos) et schémas (typiquement vectoriel) générés par un logiciel.

Il existe par exemple les photos panoramiques qu'on peut créer avec le logiciel Hugin. Wikipédia en contient un grand nombre : voir la catégorie Panoramics de Wikimedia Commons. Exemple au pif : Paysage - vue panoramique - rocher du pain de sucre - Guadeloupe - Les Saintes, photo JPEG de 27.684 × 3.488 pixels (17,9 Mo : énorme pour une image JPEG !).

Pour les schémas générés par ordinateurs : on trouve souvent des graphes représentant les relations entre différentes entités. En ce moment, c'est par exemple la mode des graphes montrant la relation entre des personnes (réseau social) ou projets informatiques. Exemple du jour : Github explorer, schémas présentant les relations entre les utilisateurs du site github (hébergeur de programmes libres). L'idéal est d'utiliser le schéma au format vectoriel, car un ordinateur sait très bien dessiner ça efficacement... Sauf que c'est rare que la version vectorielle soit disponible, ou alors dans un format bizzare (tout ce qui n'est pas SVG est bizzare pour moi :-)).

Mais les plus grosses photos que j'ai vu venaient de la NASA : une photo satellite de 100.000x100.000 pixels. Je ne me souviens plus où je les ai trouvées, mais OnEarth semble être une bonne piste. On dirait qu'ils offrent maintenant une interface web pour navigurer directement dans l'énorme image et donc télécharger petit bout par petit bout comme le font Google Maps & cie.

Enfin, il existe un logiciel (propriétaire et payant) qui permet de se balader dans de grandes images : Zoomify. La version Flash permet de l'utiliser très simplement dans un navigateur web. Je trouve le résultat plutôt réussi. La page d'accueil affiche une vue aérienne de Paris avec une excellente résolution, sûrement des photos prises par avion (comme sur mappy.com).

... Tout ce blabla uniquement pour me souvenir du nom « nip2 ». Pourtant c'est pas dur, il suffit de penser à des tétons !

jeudi 25 février 2010

Partager une imprimante avec CUPS

Je partage mon imprimante USB entre deux ou trois ordinateurs (selon mon humeur). Chaque fois que je dois (re)configurer le serveur qui la partage ou un poste client, je m'arrache les cheveux. Pourtant, c'est simple, mais j'oublie toujours une étape importante. Voici donc une petite liste récapitulative, sûrement incomplète et imprécise, pour partager une imprimante sous Linux.

Serveur

Installation l'imprimante

Pour l'installation, l'interface web de CUPS (http://localhost:631) est bien foutue et inclut même de la documentation ! Sinon il existe des assistants graphiques qui fonctionnent pas trop mal. Bref, rien de spécial à dire pour cette étape.

Partager l'imprimante

Il faut bien marquer l'imprimante comme étant partagée. Par exemple avec l'outil Ubuntu (ou Gnome ? system-config-printer.py), il faut faire un clic droit sur l'imprimante et s'assurer que « [x] Partagée » soit coché.

Partager le serveur d'impression

Il faut que le serveur CUPS soit accessible sur le réseau local. Pour cela, il faut « Publier les imprimantes partagées connectées à ce système ».

Après il se peut qu'il y ait des soucis de permissions. Mais alors là, bonne chance :-)

Poste client

cups-bsd

Sous Debian, s'assurer que c'est le paquet cups-bsd (et non lpr) qui est utilisé. lpr pose des problèmes, notamment avec Kpdf.

/etc/cups/client.conf

Il n'y a pas besoin de serveur CUPS (enfin, j'ai jamais trop su... mais je crois pas). Il suffit d'une seule ligne dans le fichier /etc/cups/client.conf :

ServerName lisa

où lisa est le nom du serveur.

Test en ligne de commande

Le programme lpq permet de voir la liste des tâches d'impression :

$ lpq
HP_LaserJet_P2015_Series est prêt
aucune entrée

Ça marche !

Configurer KDE

Avec KDE 3.x, assurez-vous d'utiliser le « pilote » CUPS et non pas LPD :

  • Allez dans le menu : K > Configuration > Périphériques > Imprimante
  • Système d'impression : choisissez CUPS

Utilisez du laser !

Mon imprimante est une HP LaserJet 2015 noir & blanc branchée sur USB. Elle m'a coûté cher (environ 300€ je crois), mais depuis que je l'ai (2 ans je crois ?) je n'ai jamais changé le toner. Elle est très rapide : la première page sort en 10 secondes maxi et les suivantes se suivent directement sans interruption. En plus, le papier est chaud et j'aime bien l'odeur. Par contre, parfois elle clignote quand elle est ronchon :-) Je lui tripote les boutons et ça la calme. Ah oui, elle s'installe sans aucun problème sous Linux.

Si comme moi vous n'imprimez que du texte sans schéma (article de recherche, facture, recette de cuisine, etc.) : je vous conseille d'investir dans du laser noir et blanc plutôt qu'une imprimante jet d'encre droguée qui réclame sans arrêt ses doses à 30€ (quand c'est pas 50€ ou plus !). Je pense que les constructeurs vendent à perte, mais se rattrapent très vite sur les consommables. Et si possible, ils mettent des verrous matériels ou logiciels pour empêcher que vous achetiez des cartouches concurrentes ou que vous rechargiez vos cartouches à la main (avec une seringue, opération rigolote).

mercredi 24 février 2010

Outils Xorg en ligne de commande

Xorg est fourni avec une large palette d'outils en ligne de commandes bien pratique pour dépanner un serveur Xorg malade. Voici une courte liste des commandes que j'ai déjà utilisées. Initialement, j'ai écrit ce billet juste pour me souvenir de xdpyinfo :-)

Clavier

Configuration la répétition du clavier :

 xset r rate 500 30

Changer la disposition du clavier. Passer en QWERTY :

setxkbmap us

Changer la disposition du clavier. Passer en AZERTY (français) avec la variante latin9 :

setxkbmap fr -variant latin9

Définir les touches Propriété Windows et Menu Windows droit comme touches de composition :

setxkbmap -option compose:menu,compose:rwin

Écran

Afficher les écrans connectés, les résolutions disponibles et la résolution courante :

xrandr

Utiliser l'écran externe ("VGA") plutôt que l'écran interne ("LVDS") d'un ordinateur portable :

xrandr --output VGA --auto --output LVDS --off

Lire la taille en millimètres et la résolution en points par pouce (PPP, ou DPI en anglais). Chercher « screen #0: » dans la sortie de la commande :

xdpyinfo

Exemple :

...
screen #0:
  dimensions:    1280x1024 pixels (294x235 millimeters)
  resolution:    111x111 dots per inch

Désactiver l'économiseur d'écran :

xset s off

Divers

Application affichant les événements claviers et soucis. Peut par exemple server à trouver le code d'une touche (keycode). Voir mon article sur la touche compose de mon article Touche compose) qui en parle.

xev

Générer un fichier de configuration Xorg dans le dossier courant (créer un fichier « xorg.conf.new ») :

Xorg -configure

Si Xorg est déjà en foncitonnement, utiliser le second display :

Xorg :1 -configure

Autoriser l'utilisateur toto à se connecter à votre serveur X :

xhost +toto

Puis xhost -toto pour retirer la permission. Désactiver les bips du buzzer :

xset -b

dimanche 27 décembre 2009

Cette grosse plaie de PulseAudio

PulseAudio est un serveur sonore visant à simplifier la lecture de son sur le bureau. Il remplace le vieux Esound (ESD). Il permet d'envoyer le son sur les hauts parleurs d'un autre ordinateur, d'utiliser plusieurs cartes son, prend en charge les oreilettes bluetooth, gère la consommation d'énergie, etc. Sur le papier, ça semble super : relire Why you should care about PulseAudio (and how to start doing it) pour s'en convaincre. Par contre, en pratique c'est une grosse plaie : PulseAudio rajoute une couche entre les applications et ALSA qui consomme du temps processeur, de la mémoire, et (dans mon cas) dégrade la qualité du son (rajoute des petits pics sonores).

Problèmes liés à PulseAudio sur un Eee PC (Fedora 11)

En particulier, sur mon Eee PC (1101 HA) équipé de Fedora 11 : mplayer est incapable de lire une vidéo (le film Sympathy for Lady Vengeance) bien que mon processeur graphique (la célèbre puce Poulsbo) accélère grandement le décodage de l'image. Dans les logs noyaux (/var/log/messages), j'ai pu voir que PulseAudio tente de rattraper la situation :

Nov 15 23:07:57 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 1,00 ms
Nov 15 23:16:27 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 2,00 ms
Nov 15 23:16:50 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 4,00 ms
Nov 15 23:20:43 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 8,00 ms
Nov 15 23:20:48 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 16,00 ms
Nov 15 23:21:19 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 26,00 ms
Nov 15 23:22:03 maggie pulseaudio[6894]: alsa-sink.c: Increasing wakeup watermark to 15,99 ms
Nov 15 23:37:22 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 36,00 ms
Nov 15 23:37:37 maggie pulseaudio[6894]: alsa-sink.c: Increasing wakeup watermark to 25,99 ms
Nov 15 23:43:03 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 46,00 ms

Toutes à 5 à 10 minutes, le son finit par sauter et mplayer se fige. J'ai trouvé un contournement : revenir un peu en arrière puis aller un peu en avant (touches gauche puis droite).

Solution : passer directement par ALSA

Après trois coupures dans mon film (c'est-à-dire après un quart d'heure), j'ai fini par me décider à le couper et à chercher à résoudre ce problème énervant. J'ai vu que Mplayer utilisait PulseAudio. J'ai alors essayé l'option « -ao alsa » (-ao : Audio Output), mais mplayer utilisait quand même PulseAudio. Bizarre.

En regardant la configuration ALSA, j'ai vu dans le fichier /etc/alsa/pulse-default.conf :

# Let's make it the default!
pcm.!default {
    type pulse
    ...
}

Donc PulseAudio est configuré pour être le pilote par défaut. J'ai supprimé ce fichier et j'ai redémarré la machine (vu que PulseAudio a trituré ALSA, j'ai préféré tout réinitialiser).

Après le redémarrage, j'ai relancé mon film et j'ai pu le voir jusqu'au bout sans la moindre coupure !

Utilisation du processeur

  • mplayer -ao pulse : le processus pulseaudio utilise 20% du CPU, et au total 20 à 25% du CPU est utilisé
  • mplayer -ao alsa : le processus pulseaudio n'est plus solicité (et n'est donc plus visible dans top), et au total 5 à 10% du CPU est utilisé

Réglage du volume

Avec PulseAudio, alsamixer (et autres mixeurs de sons) n'affiche qu'une seule sortie. Il faut utiliser « alsamixer -c 0 » pour que je puisse avoir accès à toutes les sorties. En particulier, ça me permet de régler le volume du casque, chose nécessaire car le volume est insuffisant.

Problèmes liés à PulseAudio qu'ont d'autres utilisateurs

Lors de la migration à PulseAudio, pas mal d'applications ne fonctionnaient plus (le son en tout cas). Flash et Skype supportent aujourd'hui PulseAudio (Flash 10+ et Skype 2.1+), par contre Audacity ne le supporte toujours pas. Les jeux utilisant la bibliothèque SDL (ex: l'excellent xmoto) ont également des problèmes. Correction : SDL 1.2.12 a un pilote natif pour PulseAudio.

Complaintes :

Le démon PulseAudio a besoin de tourner en priorité temps réel (SCHED_FIFO). Or il faut être root pour cela. Une faille de sécurité dans PulseAudio a déjà servi pour exploiter des failles du noyau Linux (2.6.30, 2.6.31, 2.6.32), notamment via la boîte à outils de Brad Spengler.

Conclusion

Sympathy for Lady Vengeance est un excellent film ! Il fait parti de trilogie sur la vengeance du sud-coréen Park Chan-wook. La fin est bien gore, j'adore :-)

Pour PulseAudio, c'est plutôt mauvais signe étant donné qu'il est activé par défaut sur Ubuntu, Fedora et Mandriva. Bien que j'ai du mal à voir l'intérêt de PulseAudio, il doit bien en avoir un pour que les distributions bureaux majeures l'activent par défaut. Par contre, il serait bon de donner le choix de désactiver complètement PulseAudio le temps que le code soit stabilisé.

jeudi 3 décembre 2009

Installer Fedora 11 et 12 depuis une clé USB

Ce bref article explique le minimum pour installer Fedora 12 sur un Eee PC blanc à partir d'une clé USB (vu qu'un Eee PC blanc ne dispose pas de lecteur de CD-Rom). Mais vu les galères que j'ai eu avec Fedora 12 et Poulsbo, j'ai fini par installer Fedora 11. Cet article explique donc aussi une procédure pour installer Fedora 11 à partir d'une clé USB. Les deux installations se basent sur la méthode « Netinstall » qui utilise un petit média pour le boot, puis télécharge les paquets depuis Internet.

Prérequis

  1. Un Eee PC blanc modèle 1101HA, chipset Poulsbo, sinon ça marche pas (mais non je déconne !)
  2. Une clé USB d'au moins 200 Mo que vous pouvez formatter (perdre toutes les données écrites sur la clé)
    • N'importe quel média de stockage USB devrait faire l'affaire. Évitez tout de même de formatter la partition FAT de votre appareil photo numérique : une clé USB 4 Go coûte 8€ en supermarché (voir moins) !
  3. Choisir un miroir Fedora près de chez vous
    • ATTENTION : si vous choisissez un miroir FTP, assurez-vous qu'il supporte le téléchargement partiel (commande FTP "REST") : Fedora 12 l'exige (j'ai ouvert un rapport de bug pour Fedora 12 Beta, mais il n'a pas pu être corrigé avant la version 12 finale)
  4. Une bonne heure devant vous

Création puis boot de la clé USB

  1. Télécharger Fedora-12-Beta-i386-netinst.iso depuis votre miroir ou depuis le site principal
  2. Taper la commande dd if=Fedora-12-Beta-i386-netinst.iso of=/dev/sdX où sdX est le périphérique de votre clé USB. Vérifiez trois fois que sdX est bien votre clé USB, avec fdisk ou cfdisk par exemple, sous peine de perdre tous les données de votre disque dur !
  3. Au démarrage de l'Eee PC blanc, taper la touche Echappe sans arrêt pour afficher le menu de sélection du média sur lequel booter (disque dur, clé USB, ...) : choisir USB:
  4. Le menu de boot Fedora s'affiche : choisir Install or upgrade

Installation Fedora

  1. Choix de la langue : French
  2. Choix du clavier : fr-latin9
  3. Choix du média d'installation : ne pas choisir /dev/sdXY, faire précédent (sûrement une blague des développeurs de Fedora pour empêcher les débutants d'installer Fedora), puis :
    1. Choisir la méthode "URL"
    2. Interface réseau : prendre eth0 (carte ethernet)
    3. [x] Activer le support IPv4 (*) Dynamic IP configuration (DHCP)
    4. Pour l'URL, chercher dans votre miroir Fedora le chemin vers le dossier "os" de l'architecture et de la version de votre choix : (...)/releases/test/12-Beta/Fedora/i386/os/. Exemple avec le miroir Free :
ftp://ftp.free.fr/mirrors/fedora.redhat.com/fedora/linux/releases/test/12-Beta/Fedora/i386/os/
  1. À partir de là, c'est l'installeur Fedora classique qui est bien foutu et explique bien ce qu'il y a à faire. Si vous êtes perdus, consultez la documentation Fedora (en anglais pour le moment)

Note : le miroir Free ne gère que FTP et ne supporte pas le téléchargement partiel. Il n'est donc pas utilisable pour installer Fedora !

Échecs successifs

Comme j'ai pas de bol, j'ai du m'y reprendre à dix fois (au moins) pour arriver à installer Fedora 12...

  • Je n'arrivais pas à booter sur la clé USB : j'ai mis du temps à deviner qu'il fallait utiliser la touche Echappe au boot. J'avais tenté de changer la configuration du BIOS : j'ai mis le média "Removable device" en premier, mais ça ne fonctionne pas pour l'USB !?
  • J'ai tenté de lire le contenu de l'image ISO, en extraire install.img, et écrire install.img sur la clé USB (dd if=install.img of=/dev/sdX)... Mais ça ne fonctionne pas, ce n'est pas la bonne méthode. Conseil : ne pas lire de vieux billets de blogs.
  • À l'installation, j'ai choisi le média /dev/sda1 comme source d'installion. Or pour une Netinstall, il faut faire précédent et choisir "URL"... La vieille feinte de l'ours !
  • J'ai pris le miroir Free, or le serveur FTP de Free ne supporte pas l'extension "téléchargement partiel" (commande FTP "REST"). Du coup, l'installeur graphique a échoué lors qu'il a téléchargé le 1er paquet RPM...

Créer une clé USB bootable pour installer Fedora 11

Créer une clé USB bootable pour Fedora 11 n'est pas possible depuis Debian (pas facilement). Il vaut mieux avoir une Fedora sous la main pour créer la clé USB.

  1. Télécharger Fedora-11-i386-netinst.iso
  2. Sous Fedora, installer les paquets livecd-tools et syslinux (sudo yum install livecd-tools syslinux)
  3. Créer une partition ext3 (/dev/sdXY) de 300 Mo sur la clé USB (ex: avec gparted)
  4. Marquer la partition /dev/sdXY bootable. Exemple avec parted :
$ sudo parted /dev/sdX
(parted) toggle Y boot
(parted) quit
  1. Enfin, taper la commande : sudo livecd-iso-to-disk Fedora-11-i386-netinst.iso /dev/sdXY

Note : Remplacez X et Y par le nom et le numéro de partition de votre choix.

--

Lire aussi Installer Ubuntu Ibex depuis un disque dur USB externe.

mercredi 2 septembre 2009

Réparer un dépôt git après l'échec de git svn dcommit

git-svn est bien pratique pour travailler en local (déconnecté) sur un dépôt Subversion. Le plus gros défaut de cet outil est que lorsque la commande "git svn dcommit" échoue, il laisse le dépôt dans un état assez chaotique. Heureusement l'outil git est conservateur : il est toujours possible de revenir en arrière, sauf que l'opération est très technique et délicate.

Récupérer le numéro de commit

La première étape est de retrouver le numéro du commit qui a échoué en ouvrant le fichier .git/logs/HEAD (j'ai mis des "..." pour votre santé mentale, les logs sont assez illisibles sinon) :

...
eb85fa... e72f83... Victor <haypo@bart> 1251220925 +0000 rebase: access: move calls to network/status from frontend to backend
e72f83... 5112b1... Victor <haypo@bart> 1251220965 +0000 refs/remotes/git-svn: updating HEAD
5112b1... 0f86ea... Victor <haypo@bart> 1251220979 +0000 refs/remotes/git-svn: updating HEAD

Le format du fichier est « uid avant | uid après | nom | timestamp | message ». Disons que c'est la dernière opération (la dernière ligne) qui a merdé. Il faut donc revenir à la version précédente (avant dernière ligne) :

e72f83... 5112b1... (...) 1251220965 (...): updating HEAD

Il faut l'ancien numéro de commit (première colonne donc) : e72f83....

Récupérer ses commits

La commande pour revenir à la version précédente (avant le chao laissé par git svn dcommit) est :

git reset --hard e72f83...

Tada ! Pour comprendre ce qui s'est passé, on peut jetter un oeil à .git/logs/HEAD :

...
eb85fa... e72f83... Victor <haypo@bart> 1251220925 +0000 rebase: access: move calls to network/status from frontend to backend
e72f83... 5112b1... Victor <haypo@bart> 1251220965 +0000 refs/remotes/git-svn: updating HEAD
5112b1... 0f86ea... Victor <haypo@bart> 1251220979 +0000 refs/remotes/git-svn: updating HEAD
0f86ea... e72f83... Victor <haypo@bart> 1251221469 +0200 e73f83...: updating HEAD

Articles similaires

Autres articles (en anglais) qui décrivent cette « astuce » :

apt-get install ...

Voici une liste mise à jour des paquets que j'installe sur une Debian vierge. Lire aussi ma liste de l'année dernière. Cette liste vise à obtenir une machine de développement sous KDE4 avant quelques outils réseaux et multimédias.

Administration du système

  • sudo : passer temporaire root pour exécuter une commande
  • screen : terminal qu'on peut détacher / rattacher pour pouvoir conserver des programmes quand on ferme le terminal (typiquement le client IRC irssi)

Environnement de bureau KDE

  • KDE minimal :
    • kde-minimal
    • kde-standard
    • kde-l10n-fr : Traduction française
  • Courrier et RSS :
    • kaddressbook : Carnet d'adresse
    • akregator : chouette client RSS
    • kmail : mon client mail favori
  • kdeplasma-addons : Plasmoïdes KDE4
  • Groupes d'applications KDE :
    • kdegraphics : Appliactions graphiques
    • kdegames : Jeux
    • kdemultimedia : Applications multimédia
    • kdetoys : Gadgets
    • kdenetwork : Outils réseaux
    • kdeutils : Utilitaires
    • kdeedu : Applications éducatives
    • kdeadmin : Outils d'administration
    • kdeartwork : thèmes et styles

Applications graphiques

  • iceweasel iceweasel-l10n-fr : Firefox et sa traduction française
  • flashplugin-nonfree : Plugin officiel Flash

Développement

  • Compilation :
    • gcc : Compilateur C
    • autoconf automake libtool : autotools
    • make
    • cmake
  • Édition de code :
    • exuberant-ctags : ctags, indexeur de code source permettant de retrouver un symbole (variable / fonction) dans un projet
    • manpages-dev manpages-fr : Pages de manuel
    • vim-gtk : Éditeur vim dans sa version Gtk
  • Gestionnaire de source :
    • git-core
    • git-svn
    • mercurial
    • subversion
  • Débogage :
    • gdb : Débogueur C / C++
    • strace : Tracer les appels systèmes
    • ltrace : Tracer les appels aux bibliothèques
    • lsof : Lister les fichiers ouverts
  • valgrind : Recherche les fuites mémoires et accès invalides à la mémoire
  • diffstat : Statistiques sur un patch (différences)
  • Analyseur statique/dynamique de code Python :
    • pychecker
    • pyflakes
    • pylint

Multimédia

  • gimp : Manipulation de photo
  • gqview : Affichage rapide de photos
  • mplayer : Lecteur audio/vidéo
  • vlc : Lecteur audio/vidéo

Réseau

  • nmap : Scanneur de ports
  • tcpdump : Sniffeur réseau (dumpe le trafic)
  • wireshark : Parseur de paquets et sniffeur réseau
  • netcat netcat6 : client et serveur TCP et UDP générique permettant de s'envoyer du texte ou des fichiers

SSH

  • openssh-server : Serveur SSH
  • sshfs : Monter un dossier distant via SSH (utilise FUSE)
  • keychain : Mémoriser la passphrase SSH (Gnome ne semble pas avoir besoin de keychain, il intègre son propre outil)
  • ssh-askpass : Saisie de la passphrase SSH

Compilation de paquets Debian

  • dpkg-dev : outils de base pour compiler un paquet
  • fakeroot : Permet de compiler un paquet sans être root

La commande "apt-get build-dep paquet" permet d'installer toutes les dépendences pour compiler le paquet spécifié.

mercredi 5 août 2009

Migration vers Bitbucket, fin de l'hébergement à la maison (ADSL)

Hébergement à la maison

Fier de ma connexion ADSL Free à Strasbourg (1 à 2 Mo/sec en download, 80 à 100 Ko/sec en upload), j'ai hébergé durant 3 ans mes projets personnels à la maison. L'administration du serveur qui héberge Subversion, Apache et Trac était un peu laborieuse (pour moi) et surtout chronophage. L'administration consiste à créer manuellement une nouvelle instance de Trac, un nouveau dépôt Subversion, et la configuration Apache qui va bien, pour chaque nouveau projet. Mais également à surveiller un peu les logs Apache pour détecter des problèmes et les tentatives de compromission. Il n'y en a eu aucune compromission du serveur bien que je n'ai mis aucune protection en place. Soit les bots automatiques sont idiots, soit les logiciels libres sont sûrs par défaut :-)

Migration sur mon nouveau serveur

J'ai mis 6 mois à me décider à migrer les services de l'ancien serveur au nouveau (pourtant très largement plus rapide) tant je savais que la migration allait être longue. Après la migration, j'ai eu des soucis avec les « VirtualHost » Apache. Virtual Host est la fonction qui permet d'héberger plusieurs sites Internet sous des noms de domaines différents mais sur la même adresse IPv4 (et IPv6). Quand on surfait sur un des sites fusil.hachoir.org, hachoir.org, python-ptrace.hachoir.org ou haypo.hachoir.org : on se retrouvait aléatoirement sur l'un ou l'autre des sites. Je ne sais pas si le problème venait de ma configuration Apache, de Python, de Trac ou encore de WSGI.

Migration du projet Hasard

J'ai d'abord migré mon projet Hasard sur le site Bitbucket. Je suis très content de leurs services (gratuit et sans pub, mais le dépôt Mercurial est limité à 150 Mo) :

  • Code source stocké dans un dépôt Mercurial. Comme Mercurial réalise les commits en local, je ne suis pas dépendant de ma connectivité à Internet pour faire des commits (ex: dans le train). Et les commits instantanés m'incitent à faire plus de petits commits, donc plus faciles à relire.
  • Wiki éditable en ligne et via Mercurial (dépôt Mercurial séparé)
  • Gestion des tickets similaire à Trac
  • Dépôts Mercurial accessibles en HTTP, HTTPS et SSH

Migration des tous mes projets

Finalement, j'ai profité de mon déménagement pour migrer tous mes projets personnels sur Bitbucket. Nouvelles adresses de mes projets :

Je suis plutôt content que la disponibilité de mes projets personnels ne dépendent plus de l'état de mon réseau électrique (de la météo) ou de l'état de ma connexion à Internet.

vendredi 13 février 2009

FOSDEM, Fusil, bières, python-ptrace et conférences

Triple Carmelite Le week-end dernier se tenait à Bruxelles l'édition 2009 de FOSDEM, LA rencontre européenne des développeurs de logiciel libre. J'y ai présenté Fusil le fuzzer qui a été inclus dans le Main track. La vidéo de la conférence devrait être bientôt disponible. En attendant, j'ai mis le diaporama en ligne : fosdem_2009.pdf (je me suis remis à Beamer !).

Pour l'occasion, j'ai publié Fusil 1.2 avant l'événement (suivi rapidement par Fusil 1.2.1), et python-ptrace 0.6 aujourd'hui. La nouvelle version de Fusil arrive avec une meilleure documentation, en particulier avec un guide d'utilisation et un index des documentations, de nombreuses corrections de bugs, des améliorations des agents réseaux, etc. Du côté de python-ptrace, strace.py peut maintenant afficher le pointeur d'instruction, Mark Seaborn a écrit une extension (itrace.py) à strace.py (pour déboguer la libc dans le bac à sable de Google Chrome), PtraceSignal donne des informations plus précises, etc..

À FOSDEM, j'ai essentiellement bu des bières et travaillé sur ma présentation (je déconne ! elle était prête depuis des semaines !). Je vous conseille d'ailleurs la Triple Carmélite (que m'a conseillée Jean) et la Rochefort niveau 8 (découverte par hasard, la 10 est trop forte).

Rochefort

Niveau conférences, j'ai retenu les présentations :

  • LLVM et Gallium3D par Stéphane Marchesin : utilisation du compilateur LLVM dans les pilotes 3D d'Xorg pour optimiser les shaders (micro-programmes utilisés dans les GPU de nos cartes graphiques)
  • Nemiver par Dodji Seketeli : jolie interface graphique à GDB en Gtk+ avec une vue du code orientée debug (ex: survoler une variable affiche sa valeur) qui semble très fonctionnelle
  • L'introduction à XMPP (Jabber) par Remko Tronçon et Peter Saint-Andre était jolie, fluide et bien préparée. Par contre, je n'ai pas appris grand chose. Ça confirme juste que Jabber est vraiment bien conçu (Peter est l'un des auteurs des spécifications XMPP) et très largement extensible.

Le « petit » monde du logiciel libre est de plus en plus actif. La fréquentation et la taille de FOSDEM ne cesse d'augmenter. D'ailleurs, Debian Lenny devrait sortir ce week-end, en même temps que Python 2.6.2 et 3.0.1.

lundi 19 janvier 2009

Installer Ubuntu Ibex depuis un disque dur USB externe

Remplacer Debian Sid par Ubuntu Ibex

Il y a 3 mois, j'installais Debian Sid sur mon PC portable à partir d'une clé USB. Je suis assez déçu de Debian Sid car les touches « multimédias » (monter/baisser le son) du clavier ne sont pas détectées, la sortie vidéo (écran externe ou vidéo projecteur) ne fonctionne plus, et KDE est moins joli. D'une manière générale : Debian exige beaucoup de temps pour être configuré. Il y a quelques années, ça m'amusait de bidouiller. Aujourd'hui, je veux juste un système d'exploitation « qui marche ».

Préparer une partition sur le disque externe

Mon lecteur de CD-Rom étant toujours hors-service, j'ai choisi mon disque dur USB externe (500 Go) comme support d'installation. J'ai crée une nouvelle partition (j'avais de l'espace libre non partitionné) ext3 et j'y ai placé les fichiers :

  • /boot/vmlinuz : noyau Ubuntu (téléchargé depuis archive.ubuntu.com/.../hd-media/ étant donné que la version dans l'ISO est destinée booter depuis un CD-Rom)
  • /boot/initrd.gz : configuration du noyau en mode « hd-media » et pilotes (également téléchargé depuis archive.ubuntu.com)
  • /boot/grub/(...) : copie du contenu de /boot/grub/* (Debian)
  • /ubuntu-8.10-alternate-i386.iso : ISO d'Ubuntu Ibex avec l'installeur en mode texte (alternate) pour processeur i386
  • /preseed/ubuntu.preseed : Sélection de paquets à installer (fichier extrait de l'ISO)

Je pense qu'on peut utiliser une partition ext3 existante (ou autre système de fichier reconnu par GRUB).

Configuration de Grub

J'ai choisi Grub pour booter le disque car il permet de modifier la configuration au chargement, et possède un terminal texte avec accès au disque dur. La configuration (boot/grub/menu.lst) minimale est :

title Install Ubuntu
root (hd0,7)
kernel /boot/vmlinuz file=/hd-media/preseed/ubuntu.seed
initrd /boot/initrd.gz

Sous Debian, mon disque externe est reconnu comme /dev/sdb8. Comme Grub compte à partir de zéro (hd0,0), il faut soustraire un au numéro de partition : (hd0,7). Je pensais que c'était (hd1,7), mais comme je boote depuis ce disque, Grub le reconnaît comme hd0 et non hd1, soit.

Pour installer Grub, j'ai lancé grub --config-file=/mnt/install/boot/grub/menu.lst et dans le terminal Grub j'ai tapé setup (hd1).

Lancement de l'installation

Je redémarre ma machine en demandant au BIOS de booter sur ce disque. Et hop, l'installeur se lance !

Quelques remarques :

  • Linux est incroyable, on peut vraiment l'installer de plein de manières différentes et ça marche !
  • Ubuntu ne met pas à jour ses ISO avec des mises à jour. Du coup, quand l'installation est terminée il faut installer 219 mises à jour (!), c'est dommage.
  • J'ai choisi Gnome plutôt que KDE pour changer. Comme ma seconde machine est sous Kubuntu, je vais pouvoir jongler entre Gnome et KDE ;-)

Pour en savoir plus

J'ai fait beaucoup de raccourcis dans cet article pour aller à l'essentiel. Pour les détails, lisez l'article How to install from CF media/USB drive using the grub bootloader sur le wiki d'aide officiel d'Ubuntu.

L'installation d'un nouveau système d'exploitation est dangereuse : vous risquez de perdre des données à la moindre fausse manipulation ! Ne le faites pas si vous ne comprenez pas ce que vous faites. Ou alors faites vous aider !

Un gros merci à phh sur IRC qui m'a bien aidé pour cette installation ;-)

samedi 11 octobre 2008

Retour aux sources : installation de Debian Sid

Après avoir pas mal utilisé Ubuntu pendant plusieurs années, j'ai décidé de réinstaller Debian Sid sur mon portable histoire de voir si je sais encore m'en servir.

Installer Debian par clé USB

Une fois que j'ai compris que le lecteur de CD était mort (j'ai cramé 3 CDR pour m'en rendre compte), je me suis essayé à l'installation par clé USB.

  • Il faut une clé USB d'au moins 100 Mo
  • Sauvegardez les données de votre clé USB car toutes les données seront détruites par cette procédure.
  • Télécharger un booteur ISOLINUX (hd-media/boot.img.gz, 16 Mo) et une image ISO d'un installeur Debian (netinst/mini.iso, 59 Mo) depuis la page netinst.
  • Installer le booteur sur la clé USB : « zcat boot.img.gz > /dev/sdb » où /dev/sdb est le périphérique de votre clé USB
  • Un système de fichier ext2 a été crée sur la clé USB. Montez le et copiez-y l'image ISO téléchargée.
  • Démonter la clé et rebooter.
  • Booter sur la clé USB, et voilà.

Installation de paquets

J'ai choisi de n'installer aucun paquet, c'est-à-dire avoir l'installation la plus minimaliste possible histoire de contrôler ce qui est installé sur ma machine. Les commandes qui suivent permettent d'installer certaines catégories de logiciels.

Fichier /etc/apt/sources.list

deb http://debian.revolsys.fr/debian/ sid main contrib non-free
deb http://www.debian-multimedia.org sid main
  • non-free est nécessaire pour Flash
  • debian-multimedia.org est nécessaire pour mplayer

Le minimum vital

apt-get install less vim

Serveur graphique (Xorg) et KDE

apt-get install kde kdm kde-i18n-fr kde-style-polyester yakuake
  • Je n'ai pas réussi à reproduire le joli thème KDE de Kubuntu, mais le style Polyester est déjà pas mal
  • yakuake est un terminal qui se déplie/se cache à la demande (comme la console Quake pour les connaisseurs)

Pour partager souris et clavier entre mes deux ordinateurs :

apt-get install synergy

Firefox (Iceweasel) et Flash

apt-get install mozilla-noscript iceweasel iceweasel-l10n-fr flashplugin-nonfree
  • Le greffon NoScript est un parefeu Javascript
  • Note : Thunderbird s'appelle Icedove

Son et vidéo

apt-get install alsa-utils mplayer

Certains préféreront vlc, xine ou encore totem.

Gestion des clés SSH

apt-get install ssh-askpass-fullscreen keychain

Diagnostic et bidouilles réseau

apt-get install nmap netcat

Compilation

apt-get install gcc make autoconf automake libtool fakeroot
  • fakeroot est utile pour recompiler un paquet Debian

Écriture de code source

apt-get install manpages-dev manpages-fr subversion exuberant-ctags meld
  • ctags est un indexeur de code source permettant d'aller à la définition d'un symbole (variable, fonction, classe) dans vim avec « CTRL + ] »
  • meld est un excellent outil pour comparer deux fichiers textes ou deux dossiers contenant des fichiers textes (et donc utilisable pour du code source)

Débogage

apt-get install gdb strace ltrace lsof
  • strace trace les appels systèmes
  • ltrace trace les appels de fonctions de bibliothèques externes
  • lsof liste les fichiers ouverts

Analyse de code Python

apt-get install pyflakes pylint pychecker

OpenOffice

apt-get install openoffice.org openoffice.org-l10n-fr ttf-mscorefonts-installer

Utilisez DicOOo pour installer des dictionnaires français plus complets

Wifi

apt-get install network-manager-kde
  • Il semble que je doive exécuter knetworkmanager en tant que root (problème de permission ?)

Firmware pour mon chipset Intel 3945 :

apt-get install firmware-iwlwifi

Cet article concis et fouilli me servira de notes au cas où je réinstalle la machine. J'espère que vous découvrerez de chouettes paquets parmis ceux que j'ai listé. C'est enfin le moment tant attendu pour placer cette URL : Debian Package of the Day.

jeudi 19 juin 2008

Améliorer la ligne de commande

En dehors des raccourcis claviers que j'avais déjà abordé, il existe énormément d'astuces pour améliorer la ligne de commande sous Linux. En voici quelques unes pour gagner encore plus de temps avec la ligne de commande.

Complétion avancée

La touche TAB sert à compléter automatiquement les commandes. C'est diablement efficace, mais bash peut faire mieux ! En chargeant /etc/bash_completion, la complétion dépendra du programme utilisé. « kpdf <tab><tab> » n'affichera que les fichiers PDF (et les répertoires). « apt-get install python-<tab><tab> » affiche les paquets Debian installables dont le nom débute par « python- ». Pour l'activer la complétion avancée, ajoutez dans votre ~/.bashrc :

source /etc/bash_completion

Le chargement de bash sera plus long, mais vous serez beaucoup efficace avec votre ligne de commande !

Ignorer les doublons dans l'historique

Par défaut, bash conserve toutes les commandes tapées. J'ai présenté dans mon billet précédent la variable d'environnement HISTIGNORE pour ignorer certains commandes. Pour ne pas sauver un commande saisie plusieurs fois, utilisez :

export HISTCONTROL=ignoredups

Rappel : CTRL+r permet de rechercher une commande déjà tapée en en saisissant quelques lettres.

Utiliser most plutôt que less pour lire du texte

Pour lire un fichier texte, il existe le programme more qui n'est pas très pratique. Le programme less est mieux : il permet de revenir en arrière, rechercher du texte, etc. Il existe encore mieux ! most utilise des couleurs (meilleur rendu des pages de manuel), permet de découper l'écran en plusieurs vues indépendentes, etc. Lisez l'aide intégrée pour les détails. Installez-le avec « apt-get install most » et choisissez-le par défaut en ajoutant dans votre fichier de configuration ~/.bashrc :

export PAGER=most

Activer les couleurs

Plusieurs programmes permettent d'afficher des couleurs mais ne le font pas par défaut pour des raisons de compatibilité avec les anciens terminaux. Activez les couleurs avec :

alias ls='ls --color=auto'
alias grep='grep --color'
alias egrep='egrep --color'

Tailles de fichier avec des unités humaines

L'option « -h » permet d'afficher les tailles avec des unités plus facilement compréhensibles par un humain (19 Ko, 367 Mo, 1 Go, ...) :

alias du='du -h'
alias df='df -h'

La commande ls supporte également l'option.

Passer en mode verbeux

Par défaut, les programmes sont silencieux : ils ne disent pas ce qu'ils font. Or c'est pratique pour vérifier qu'on a bien fait ce qu'on voulait. Aliases pour activer le mode verbeux :

alias ln='ln -v'
alias cp='cp -v'
alias mv='mv -v'
alias rm='rm -v'

Personnaliser l'invite

L'invite est le court texte invitant à saisir une commande, du style « haypo@marge:~$ ». C'est la variable d'environnement PS1 qui contient l'expression pour générer cette invite. « \u » est remplacé par le nom d'utilisateur, « \h » le nom de la machine, « \w » le répertoire de travail, etc.

Je n'aime pas du tout avoir une invite qui contient le répertoire de travail car l'invite prend rapidement toute la largeur de l'écran. J'utilise donc une invite qui ne contient que le nom de la machine :

export PS1='\h$ '

C'est rudimentaire mais efficace. La commande « pwd » me sert à me rappeler où je suis quand je me perd ;-)

Voilà, j'espère que je vous ai appris des trucs, n'hésitez pas à m'en apprendre d'autres en déposant un commentaire !

Éviter les opérations dangereuses en ligne de commande

L’erreur est humaine, mais pour provoquer une vraie catastrophe, il faut un ordinateur.

Quand on passe trop de temps dans la ligne de commande, on a tendance à oublier qu'on manipule des documents importants et qu'au détour d'une commande on peut les éradiquer à tout jamais ! Voici quelques astuces pour limiter la casse : lignes à ajouter dans votre configuration « ~/.bashrc ».

Option -i pour demander confirmation

Alias qui rajoutent l'option -i sur les opérations dangereuses :

alias ln="ln -i -v"
alias cp='cp -i -v'
alias mv='mv -i -v'
alias rm='rm -i'

Vous pouvez également utiliser l'option -k de tar pour éviter d'écraser les fichiers existant :

alias tar='tar -k'

Option -C de bash

Bash possède une option -C pour interdire les redirections vers un fichier existant :

set -C

Exemple au pif : ça arrive qu'on tape « echo "user:password:" >/etc/passwd » alors qu'on voulait écrire « >>/etc/passwd » :-)

Configurer l'historique

Bash permet de ne pas mettre une commande dans l'historique (touche haut ou CTRL + r) avec la variable HISTIGNORE :

# Ignore commands like:
#  >konsole&<
#  any command starting with a space (eg. " sudo touch /tmp/x")
#  >bg<
#  >fg<
#  >exit<
#  >svn revert*<
#  >hg revert*<
#  >*rm *<   (eg. "svn rm file", "rm -rf dir", ...)
#  >tee *<
export HISTIGNORE='*&: *:[bf]g:exit:*>|*:history*:svn revert*:hg revert*:*rm *:tee *'

Du coup, si vous tapez une commande que vous savez délicate, précédez la d'une espace pour éviter qu'elle soit sauvée (merci acatout pour l'astuce !).