Mot-clé - tutoriel

Fil des billets - Fil des commentaires

mercredi 20 septembre 2017

Déployer un nœud YaCy sur une adresse IPv6 et avec un accès https

Il est possible de mettre en place un nœud YaCy participant à la fédération globale, avec une connectivité IPv6 et HTTPS.

Qu’est-ce que YaCy ? Facile.

YaCy est un moteur de recherche que chacun peut installer pour indexer le web (pages publiques accessibles par internet), pour indexer un intranet ou pour parcourir d'autres données avec une fonction moteur de recherche. YaCy peut être utilisé de façon autonome, mais sa principale force est de pouvoir fonctionner en réseau peer-to-peer, ce qui fait que sa puissance s’accroît avec le nombre d'utilisateurs, qu'il est entièrement acentré (tous les "peers" sont égaux et il n'y a pas un organisme administratif central) et qu'il n'est pas censurable et ne stocke pas le comportement des utilisateurs.

La liberté de l'information ainsi obtenue par le biais des logiciels libres et d'un moteur de recherche distribué est également un des objectifs du projet.

Prérequis

  • avoir une connexion IPv6 opérationnelle avec une adresse publique (nous utilisons ici 2001:41d0:12a:4d00:dcdc::46)
  • disposer d’un nom de domaine (nous créerons ici le champ AAAA YaCy.Clauzel.eu)
  • utiliser Debian/stretch sans systemd
  • avoir apache2 en place (nous ajouterons 2 vhosts)
  • avoir un certbot récent, celui de Debian/stretch est trop ancien et ne gère pas les demandes pour un hôte uniquement en IPv6 :
apt-get install certbot apt-get install certbot
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

Mise en place du nom de domaine

  • Créer l’enregistrement DNS pour le nœud; ici YaCy.Clauzel.eu pointe sur 2001:41d0:12a:4d00:dcdc::46

Installer YaCy

Mise en place initiale :

  • Lire et appliquer la documentation de YaCy ; nous utilisons ici la version 1.92 pour linux. YaCy est installé pour l’utilisateur dédié yacy:yacy dans le répertoire /home/yacy
  • Dans l’interface web de YaCy Mode d'utilisation et compte>avec SSL, activer le HTTPS sur le port 8443
  • Dans l’interface web de YaCy Administration du système>Paramètres d'accès au serveur>staticIP, définissez l’adresse publique du nœud comme étant YaCy.Clauzel.eu

Indiquer à java que nous donnons la préférence à l’IPv6 :

service yacy stop

Dans /etc/init.d/yacy, modifier JAVA_ARGS="-server -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dsolr.directoryFactory=solr.MMapDirectoryFactory -Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Stack=true"

service yacy start

À ce moment, YaCy doit tourner en mode Senior et être publiquement joignable à l’adresse http://YaCy.Clauzel.eu:8090

Créer le certificat TLS

Un simple certificat TLS suffit, mais vous pouvez vous faire plaisir avec les options :

service apache2 stop
certbot-auto certonly --standalone -d YaCy.Clauzel.eu --renew-by-default --must-staple --staple-ocsp --agree-tos --uir --hsts
service apache2 start

Préparation du certificat pour java

Les applications java ont ceci de casse-pied particulier qu’elles n’utilisent pas les certificats TLS au format PEM : il nous faut convertir notre certificat.

openssl pkcs12 -export -in /etc/letsencrypt/live/yacy.clauzel.eu/fullchain.pem -inkey /etc/letsencrypt/live/yacy.clauzel.eu/privkey.pem -out /etc/letsencrypt/live/yacy.clauzel.eu/yacy.clauzel.eu.p12 -CAfile /etc/letsencrypt/live/yacy.clauzel.eu/chain.pem -caname root -password pass:JeSuisUnMotDePasse -name yacy.clauzel.eu
keytool -importkeystore -srcstorepass JeSuisUnMotDePasse -deststorepass JeSuisUnMotDePasse -destkeypass JeSuisUnMotDePasse -srckeystore /etc/letsencrypt/live/yacy.clauzel.eu/yacy.clauzel.eu.p12 -alias yacy.clauzel.eu -srcstoretype PKCS12 -destkeystore /etc/letsencrypt/live/yacy.clauzel.eu/yacy.clauzel.eu.key

Mettre en place le certificat

Nous pouvons alors placer notre joli certificat dans l’arborescence de l’application.

service yacy stop
 cp /etc/letsencrypt/live/yacy.clauzel.eu/yacy.clauzel.eu.key DATA/SETTINGS/
 chown yacy:yacy DATA/SETTINGS/yacy.clauzel.eu.key
 chmod 400 DATA/SETTINGS/yacy.clauzel.eu.key

Configurer l’utilisation du certificat

Il reste maintenant à informer l’application de l’existence de ce certificat. Il faut vérifier/définir dans le fichier DATA/SETTINGS/yacy.conf :

port.ssl=8443
keyStore=DATA/SETTINGS/yacy.clauzel.eu.key
keyStorePassword=JeSuisUnMotDePasse
server.https=true
staticIP=YaCy.Clauzel.eu

Puis démarrer YaCy :

service yacy start

À ce moment, YaCy doit être publiquement joignable à l’adresse https://YaCy.Clauzel.eu:8443

Définir des redirections dans apache

Nous ajoutons alors des redirections web, qui permettrons d’accéder directement au nœud sans devoir spécifier le port.

Créer la directive /etc/apache2/sites-available/00-YaCy.conf :

<VirtualHost *:80>
    Define INSTANCE yacy.clauzel.eu
    ServerName ${INSTANCE}
    RewriteEngine On
    RewriteRule ^(.*)$ https://${INSTANCE}:8443 [redirect=301]
</VirtualHost>

<VirtualHost *:443>
    Define INSTANCE yacy.clauzel.eu
    ServerName ${INSTANCE}
    RewriteEngine On
    RewriteRule ^(.*)$ https://${INSTANCE}:8443 [redirect=301]
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/${INSTANCE}/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/${INSTANCE}/privkey.pem
</VirtualHost>

Activons cette configuration :

a2ensite 00-YaCy.conf
service apache2 restart

YaCy est désormais accessible à l’adresse https://YaCy.Clauzel.eu, et http://YaCy.Clauzel.eu redirige le visiteur vers l’accès sécurisé

Bonne chance à tous, comme on dit « chez-moi ça marche ».

vendredi 13 septembre 2013

Travailler avec les volumes chiffrés de TrueCrypt sur Debian

TrueCrypt est un outil de chiffrement de volumes qui souffre de deux défauts majeurs : il n'a pas d'activité récente, et pour des raisons de licence n'est pas inclus dans Debian. Son alternative libre est tcplay, disponible dans les dépôts.

Package: tcplay

Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org>

Description-en: Free and simple TrueCrypt Implementation based on dm-crypt tcplay is a free (BSD-licensed), pretty much fully featured (including multiple keyfiles, cipher cascades, etc) and stable TrueCrypt implementation.

This implementation supports mapping (opening) both system and normal TrueCrypt volumes, as well as opening hidden volumes and opening an outer volume while protecting a hidden volume. There is also support to create volumes, including hidden volumes, etc.

Since tcplay uses dm-crypt it makes full use of any available hardware encryption/decryption support once the volume has been mapped.

Homepage: https://github.com/bwalex/tc-play

L'approche utilisée ici est d'utiliser un disque dur entier dédié au stockage sécurisé. Nous mettrons en place un volume normal qui contiendra des données de leurre, ainsi qu'un volume caché dédié au travail réel.

Notes techniques :

  • le disque dur utilisé dans cet exemple est accessible via /dev/disk/by-id/scsi-SATA_QUANTUM_FIREBAL692705570853[1]. Il contiendra uniquement un volume normal; pas même une table des partitions ;
  • les volumes sont successivement montés dans le répertoire courant ./tc ;
  • on utilise /dev/mapper/truecrypt pour le mappage des volumes  ;
  • on utilise des méthodes de chiffrement différentes pour le volume normal et le volume chiffré. Si une méthode est cassée, ça serait dommage que tous les volumes soient affectés.

Mise en place des volumes de leurre et caché

Opérations réalisées ici :

  1. créer les volumes ;
  2. remplir le volume de leurre, ainsi que le volume caché ;
  3. fermer les volumes et nettoyer le système.

Sur le disque entier, créer un volume normal avec un volume caché dedans

sudo tcplay --create --device /dev/disk/by-id/scsi-SATA_QUANTUM_FIREBAL692705570853 \
  --cipher TWOFISH-256-XTS,AES-256-XTS \
  --pbkdf-prf=whirlpoe-erase \
  --hidden --cipher-hidden AES-256-XTS,SERPENT-256-XTS \
  --pbkdf-prf-hidden RIPEMD160

Ouvrir le volume normal, en protégeant le volume caché. Le volume normal est mappé sur /dev/mapper/truecrypt

sudo tcplay --map=truecrypt \
  --device /dev/disk/by-id/scsi-SATA_QUANTUM_FIREBAL692705570853 \
  --protect-hidden

Formater le volume normal

sudo mkfs.xfs /dev/mapper/truecrypt

Monter le volume normal

sudo mount /dev/mapper/truecrypt ./tc/

Remplir le volume normal avec des données de leurre. Par exemple des clés privées ssh, des données bancaires, des reçus des impôts… Le but est de justifier l'usage d'un volume chiffré.

sudo cp ~/.ssh/id_ecdsa ./tc/

Démonter le volume normal

sudo umount ./tc

Supprimer le mappage du volume normal

sudo dmsetup remove /dev/mapper/truecrypt

Ouvrir le volume caché Le volume caché est lié à /dev/mapper/truecrypt

sudo tcplay --map=truecrypt --device /dev/disk/by-id/scsi-SATA_QUANTUM_FIREBAL692705570853

Formater le volume caché

sudo mkfs.xfs /dev/mapper/truecrypt

Monter le volume caché

sudo mount /dev/mapper/truecrypt ./tc/

Remplir le volume caché avec des données sensibles. Par exemple, des clés privées PGP, des photos personnelles, votre plan de conquête du monde, etc.

sudo cp ~/.gnupg/secring.gpg ./tc/

Démonter le volume caché

sudo umount ./tc

Supprimer le mappage du volume caché

sudo dmsetup remove /dev/mapper/truecrypt

Travailler dans les volumes de leurre et caché

Actualiser les données du volume normal :

  1. ouvrir le volume caché : sudo tcplay --map=truecrypt --device /dev/disk/by-id/scsi-SATA_QUANTUM_FIREBAL692705570853
  2. monter le volume caché : sudo mount /dev/mapper/truecrypt ./tc/
  3. travailler
  4. démonter le volume caché : sudo umount ./tc
  5. supprimer le mappage du volume caché : sudo dmsetup remove /dev/mapper/truecrypt

Actualiser les données du volume normal :

  1. ouvrir le volume normal, en protégeant le volume caché : sudo tcplay --map=truecrypt --device /dev/disk/by-id/scsi-SATA_QUANTUM_FIREBAL692705570853 --protect-hidden
  2. monter le volume normal : sudo mount /dev/mapper/truecrypt ./tc/
  3. actualiser les données de leurre
  4. démonter le volume normal : sudo umount ./tc
  5. supprimer le mappage du volume normal : sudo dmsetup remove /dev/mapper/truecrypt

Note

[1] Disque dur Quantum Fireball TM1280A provenant de mon vénérable PowerMac 4400 (processeur PPC 603ev, 96Mo de RAM) datant 1996. Ce disque de 1,2Go présente toujours zéro secteur défectueux et tourne comme un charme. Pas comme les saloperies de disques durs actuels qui meurent au bout de 3 ans, alors qu'ils bossent à peine

dimanche 17 janvier 2010

HOWTO : Que faire en cas d'opération frauduleuse sur son compte bancaire ?

Procédure générale à suivre

La procédure est connue de la police et des banques, il vous suffit de vous laisser guider. Elle se décompose en quatre étapes.

Préparation

Réaliser deux copies de votre relevé bancaire, et mettre en évidence l'opération contestée. Cela vous permettra de montrer rapidement les transactions posant problème.

Banque

Préparer :

  • votre carte d'identité
  • le numéro de compte concerné
  • votre carte bancaire associée au compte
  • une copie du relevé bancaire

Une fois les informations rassemblées, il faut prendre contact avec sa banque pour les informer de la situation et déclencher une procédure adaptée. Votre banque vous informe alors sur les démarches à effectuer de votre côté, et vous accompagne tout du long. Il est bien important de confirmer que vous êtes toujours en possession de votre carte bancaire car cela vous dégage de votre responsabilité pour vol ou perte, et la rendre à votre banque.

Au niveau de la banque, la démarche est de remplir un formulaire de contestation d'opération.

Récupérer :

  • le formulaire rempli de contestation d'opération

Police

Préparer :

  • votre carte d'identité
  • le numéro de compte concerné
  • une copie de relevé bancaire
  • le formulaire de contestation de la banque

Porter maintenant plainte auprès du commissariat de police. Lors de la déposition, s'en tenir uniquement aux faits. Vous n'êtes pas là pour « supposer que » ou » imaginer que », mais pour décrire ce que vous constatez : c'est à dire une opération sur votre relevé bancaire :

  • dont vous n'êtes pas à l'origine;
  • que vous ne comprenez pas;
  • que vous contestez.

Votre déposition, que vous signez, doit comprendre au minimum ces informations :

  • votre nom
  • le numéro de compte concerné
  • la date de l'opération contestée
  • le montant de l'opération contestée

Déclaration de main courante :
Déclaration de main courante

Récépissé de déclaration de main courante
Récépissé de déclaration de main courante

Récupérer :

  • la déclaration de plainte
  • le récépissé de dépôt de plainte

Banque

Préparer :

  • la déclaration de plainte

Transmettez à votre banque une copie du dépôt de plainte; cela permettra d'appuyer légalement votre démarche, et donc de récupérer votre argent.

Attendre :

  • votre nouvelle carte bancaire
  • la restitution de l'argent manquant sur le compte bancaire

Ce que dit la loi

Pour faire simple, si l'usager n'a pas commit de faute (non-déclaration de perte ou de vol de carte bancaire, de chéquier, par exemple, ou encore diffusion de ses informations confidentielles), alors la banque rembourse tout : argent, frais directs et indirects. Elle dispose pour cela d'un délais de maximum un mois.

lundi 28 septembre 2009

Étudiants en informatique, préparez votre entrée sur le marché du travail

Régulièrement, des étudiants me demandent comment va se passer pour eux l'insertion dans le monde professionnel, à la fin de leurs études. Ma réponse habituelle est « ça dépend », car de nombreux facteurs entrent en jeu : domaines de compétences, technologies actuelles, tendances stratégiques, secteurs ciblés, etc. Mais il est possible d'identifier des éléments universels.

Définir un positionnement

Je recommande vivement à mes élèves de disposer de deux axes forts avec quelques à-côtés. L'idée est de ne pas être un spécialiste poussé dans une seule technologie (qui sera obsolète en cinq ans), mais de se positionner comme un expert de son domaine, avec des compétences d'ouverture.

Le positionnement permet à un recruteur de cerner aisément le profil de l'informaticien, ce qui n'est pas rien quand il s'agit de décrypter des acronymes barbares. Ainsi, on peut songer aux domaines suivants :

  • développement : planification, cahier des charges, génie logiciel, programmation, déboguage
  • base de données : conception, utilisation, optimisation
  • modélisation : collecte d'informations, analyse, transfert vers l'applicatif, adaptation, validation
  • réseau & télécommunication : technologie, topologie, routage, conception, déploiement, liaison
  • humain & social : interaction homme-machine, ergonomie, enseignement, handicap
  • management : conception de projet, conduite de projet, comptabilité, gestion d'entreprise, veille

Maitriser la base

Quelque soit sa spécialité, un informaticien doit être capable de maitriser plusieurs fondamentaux qui sont requis partout :

  • un langage de programmation moderne : objective-c, java, ruby… Le but est d'être en mesure de développer du début à la fin une application graphique.
  • une technologie web actuelle : service web, AJAX, RIA. Le web est de nos jours une plate-forme incontournable.
  • administrer un système d'exploitation : et ce correctement ! Que ce soit un système UNIX ou Windows, vous devez être capable de gérer complètement votre machine principale.
  • connaitre les principaux algorithmes : tri, recherche, parcours, etc. Si ça fait parti de la grande littérature, vous devez avoir une idée de ce que c'est et de comment l'utiliser.

Être familier avec l'inévitable

Qu'on les apprécie ou non, certaines choses sont inévitables : les examens de fin d'année, la visite annuelle chez le dentiste, et :

  • la ligne de commande sur les systèmes UNIX : vous serez nécessairement amené un jour à travailler à distance sur un serveur. Que ce soit pour réparer un site web, déployer une application ou encore partager des fichiers, vous ne pouvez échapper à la ligne de commande des systèmes UNIX (MacOS, GNU/linux, *BSD, etc)
  • la conception de sites web simples, à la main et avec un framework (Drupal, SPIP, Dotclear, WordPress, etc) : mettre en place et maintenir un site web est une activité récurrente : informer ses clients, communiquer sur un évènement, ou encore soutenir un projet. Ne pas être capable de faire une page web, c'est comme ne pas savoir nager lors d'une sortie à la piscine : autant rester chez soi.
  • la recherche d'information : développez votre google-fu. Car ce qui compte n'est pas de disposer de l'information, mais de savoir se la procurer.

À faire absolument

  • créer son profile dans les réseaux sociaux du moment : LinkedIn, FaceBook, twitter
  • préparer, et maintenir à jour, plusieurs CV : orientés compétences, réalisations
  • déployer, et maintenir à jour, un site web personnel : le but est d'exister sur internet Informations standards, liens vers CV, publications, projets passés et actuels, profiles de plate-formes sociales…
  • participer à un projet de logiciel libre : permet de se faire de l'expérience, et démontre sa capacité à travailler en autonomie, en équipe et à distance

vendredi 15 mai 2009

Résoudre les problèmes de son sur Ubuntu, version Jaunty Jackalope

Très simplement, les mêmes causes produisant les mêmes effets, la version Jaunty Jackalope d'Ubuntu souffre de problèmes de son. Comme avec Intreprid Ibex, des logiciels tels que Flash ou Skype restent muets et sourd.

La solution est simple : il suffit d'appliquer la même méthode que pour Intrepid Ibex, à savoir supprimer PulseAudio.

vendredi 13 février 2009

Mise à jour de MacOS X Serveur en ligne de commande

Il est possible de mettre à jour MacOS par la ligne de commande, de façon à, par exemple, intervenir à distance sur une machine par SSH. On utilise pour cela la commande softwareupdate depuis un compte ayant les droits d'administration.

L'outil de mise à jour : softwareupdate

Si on les compare à d'autres outils comme apt de Debian, les possibilités de softwareupdate sont fortement limitées. Mais en compensation, il ne faut pas oublier qu'Apple prend en charge via des scripts les différents changements à apporter au système, donc le travail de l'administrateur système est simplifié.

D'ailleurs, softwareupdate ne permet de réaliser que des mises à jour du système, et rien d'autre : pas d'ajout ou de suppression de logiciels, de choix de version, etc. Pour ce genre de chose, on se tournera plutôt vers l'outil installer (man 8 installer)

La commande softwareupdate fonctionne de la façon suivante :

$ sudo softwareupdate --help
usage: softwareupdate <mode> [<args> ...]

        -l | --list             List all appropriate updates
        -d | --download         Download Only
        -i | --install          Install
                <label> ...     specific updates
                -a | --all              all appropriate updates
                -r | --recommended      only recommended updates

        Per-user preferences:
        --ignore <label> ...    Ignore specific updates
        --reset-ignored         Clear all ignored updates
        --schedule (on | off)   Set automatic checking

        -h | --help     Print this help

Le manuel (man 8 softwareupdate) contient également des précisions, avec des exemples simplifiés d'utilisation de la commande.

On constate donc que les possibilités se résument à lister les mises à jour disponibles, et à les installer individuellement ou collectivement. Simple, mais fonctionnel.

Exemple d'utilisation

Pour illustrer l'utilisation de softwareupdate, nous réaliserons la mise à jour de MacOS X Serveur, le vendredi 13 février 2009.

$ sudo softwareupdate -l
Software Update Tool
Copyright 2002-2007 Apple

Software Update found the following new or updated software:
   * JavaForMacOSX10.5Update3-1.0
        Java Update 3 pour Mac OS X 10.5 (1.0), 2959K [recommended]
   * SecUpdSrvr2009-001-1.0
        Security Update 2009-001 (1.0), 48400K [recommended] [restart]

Nous demandons l'installation (-i) de toutes les mises à jour disponibles (-a).

$ sudo softwareupdate -i -a
Software Update Tool
Copyright 2002-2007 Apple


Downloading Java Update 3 pour Mac OS X 10.5    0..20..40..60..80..100
Verifying Java Update 3 pour Mac OS X 10.5
waiting Java Update 3 pour Mac OS X 10.5
Downloading Security Update 2009-001    0.
Verifying Security Update 2009-001
Downloading Security Update 2009-001    0..20..40..60..80..100
Verifying Security Update 2009-001
waiting Security Update 2009-001
Installing Java Update 3 pour Mac OS X 10.5     0..20..40..60..80..100
Done Java Update 3 pour Mac OS X 10.5
Installing Security Update 2009-001     0..20..40..60..80..100
Done Security Update 2009-001
Done.

You have installed one or more updates that requires that you restart your
computer.  Please restart immediately.

il ne reste plus qu'à relancer les services utilisant les composants mis à jour (si on les connaît...), ou redémarrer le serveur (qui est souvent ennuyeux pour un serveur). Apple doit donc apporter des améliorations sur cet aspect.

vendredi 6 février 2009

Utiliser le thème GlassyBleu du portable HP Mini 1000 Mi Edition dans Ubuntu, version Intrepid Ibex

Le portable HP Mini 1000 Mi Edition est vendu avec Ubuntu. Le thème par défaut, noir, est splendide au point de vouloir l'utiliser sur son propre ordinateur.

Utiliser le thème GlassyBleu est très simple sur les systèmes à base de Debian qui ont GNOME comme interface. Le principe est de récupérer les paquets contenant les éléments du thème (fond d'écran, définition des éléments du thème, icones, etc), de les installer puis de les activer dans le compte courant. Cette opération peut être réalisée par un simple script.

#!/bin/bash

tmp=`mktemp -d` || exit 1
cd $tmp

# récupération des archives du thème
wget http://hpmini.archive.canonical.com/mie/dists/hardy-hpmini/universe/binary-lpia/glassy-bleu-browser-skin_0.5_all.deb
wget http://hpmini.archive.canonical.com/mie/dists/hardy-hpmini/universe/binary-lpia/glassy-bleu-theme_21_all.deb
wget http://hpmini.archive.canonical.com/mie/dists/hardy-hpmini/universe/binary-lpia/gnome-backgrounds-hp_0.4_all.deb
wget http://hpmini.archive.canonical.com/mie/dists/hardy-hpmini/restricted/binary-lpia/hp-tbird-theme_0.5_all.deb

# on s'assure que l'interface d'OpenOffice.org sera correcte
sudo apt-get install openoffice.org-style-*

# installation globale des paquets du thème
sudo dpkg -i ./*.deb

# suppression des altérations de thème GTK
gconftool --unset /desktop/gnome/interface/gtk_color_scheme

# définition du fond d'écran
gconftool --type string --set /desktop/gnome/background/picture_filename "/usr/share/pixmaps/backgrounds/gnome/hp/default_background_solid.png"
gconftool --type string --set /desktop/gnome/background/picture_options "stretched"

# définition du thème
gconftool --type string --set /desktop/gnome/interface/gtk_theme "GlassyBleu"

# définition du thème des icones
gconftool --type string --set /desktop/gnome/interface/icon_theme "GlassyBleu"

# définition du thème de metacity
gconftool --type string --set /apps/metacity/general/theme "GlassyBleu"

rm -Rf $tmp

Ce script va définir un style personnalisé dans le tableau de bord « Apparence » d'Ubuntu, et l'activer; également, un thème pour firefox et thunderbird sera disponible pour pousser l'intégration. Il est important de noter que le script n'a besoin d'être effectué qu'une seule fois, et que les paquets installés ne seront jamais mis à jour par la suite. Le thème ainsi défini peut donc être personnalisé à volonté.

jeudi 15 janvier 2009

Résoudre les problèmes de son sur Ubuntu, version Intrepid Ibex

Historiquement, la gestion du son avec GNU/linux a souvent été une bataille pour l'utilisateur. Même si Ubuntu prend soin d'éviter de retomber dans les guerres de tranchées historiques, il n'en reste pas moins que les problèmes continuent d'exister.

Ubuntu a fait le choix de s'appuyer sur PulseAudio pour présenter à l'utilisateur la gestion du son. Pour faire simple, même si PulseAudio peut travailler de façon autonome le plus souvent il se comporte comme une surcouche à ALSA et à OSS, avec quelques fonctionnalités spécifiques supplémentaires.

Pour l'utilisateur, la principale différence avec OSS et ALSA est l'intégration de PulseAudio dans l'environnement du bureau : applet de gestion, vuemètres des entrées-sorties, panneau de préférences accessibles, etc. Rien de bien indispensable, mais qui donne une vision simple et pratique du réglage et de l'utilisation du son sur l'ordinateur.

Mais le problème est que PulseAudio ne peut pas être utilisé directement par les logiciels audio, ils doivent être programmés en conséquence. Et c'est alors que se pose le problème du point de vue technique, car de nombreux outils et services, anciens et répandus, travaillent différemment sur les niveaux de la pile des services audio. Des passerelles existent pour faire cohabiter et communiquer les logiciels entre-eux, mais le résultat n'est pas satisfaisant pour l'utilisateur final qui doit jongler entre plusieurs technologies.

Quelles sont pour l'utilisateur grand public les conséquences de l'utilisation de PulseAudio ? Principalement, il n'est pas assuré de parvenir à faire fonctionner un logiciel. Ainsi, Skype est réputé pour ses problèmes d'utilisation dans Ubuntu à cause des mixeurs; FlashPlayer nécessite l'installation de bibliothèques particulières pour accéder à PulseAudio; et c'est sans parler des logiciels comme RecordMyDesktop qui réalisent des captures de session.

Une solution simple à ces problèmes est de supprimer PulseAudio du système, afin de basculer complètement sur ALSA. Cela implique de quitter les technologies préconisées par Ubuntu pour s'occuper nous-mêmes de la chaîne audio. Il s'agit naturellement d'une manipulation entièrement réversible.

La première étape consiste à supprimer les paquets de PulseAudio :

apt-get --purge remove pulseaudio* libpulse*

On constate que la dépendance sur le paquet ubuntu-desktop va intervenir et nous obliger à retirer ce paquet. Aucun souci ici, il suffira de le remettre en place avant la prochaine mise à jour du système vers Jaunty Jackalope. Ensuite, nous installons des outils pour gérer ALSA, qui vont nous amener également par le jeu des dépendances les bibliothèques nécessaires (qui sont normalement déjà présentes sur le système) :

apt-get install alsa-utils gstreamer0.10-alsa

Il ne reste qu'à redémarrer la machine pour nettoyer les services. Le résultat est que Skype, FlashPlayer et d'une façon générales toutes les applications utilisant l'audio fonctionnent correctement, sans réglage particulier. Mais on a perdu au passage les jolis vuemètres de PulseAudio.

On pourra affiner le réglage des entrées-sorties audio par les outils alsamixer et gnome-sound-properties.

lundi 22 décembre 2008

Utiliser un ordinateur portable comme eBook pour lire des documents

Idée générale

Actuellement, mes travaux me demandent de lire beaucoup de documents numériques, principalement sous forme de fichiers PDF et OpenDocument. Je me suis alors posé la question d'une méthode de travail pour éviter les problèmes habituels liés à cette activité : fatigue oculaire, mauvaise position du corps, etc. Je présente ici ma solution actuelle.

L'idée générale est de pouvoir travailler dans mon environnement informatique habituel, d'être capable de basculer très simplement dans une situation de lecture, pour revenir à la situation originale. L'accent a donc été mis sur la simplicité d'utilisation, dans le cadre des configurations existantes.

Cadre technique

Le cadre technique est le suivant :

  • ordinateur : portable Dell Latitude D830
  • système d'exploitation : Ubuntu, version stable actuelle (Intrepid Ibex)
  • lecteur de PDF : evince
  • lecteur d'ODF : OpenOffice.org

La rotation de l'écran est assurée par l'extension RandR de X.org. Le pilotage de la rotation se fait par la commande xrandr.

Mise en place

Au niveau de l'utilisateur, la mise en place de l'environnement de lecture se fait par l'utilisation de scripts ouvrant les documents avec des modalités adaptées. Ainsi, pour un PDF on peut envisager le script suivant qui fait pivoter l'écran, ouvre le document en plein écran, et à la fin remet l'écran en mode horizontal :

#!/bin/bash

xrandr -o left
evince --fullscreen "$1"
xrandr -o normal

Ou encore pour une série d'images dans le dossier courant :

#!/bin/bash

xrandr -o left
gqview --fullscreen "$1"
xrandr -o normal

La situation typique d'utilisation est celle-ci :

  1. je travaille dans l'environnement traditionnel, avec un affichage en mode horizontal
  2. dans un terminal, j'appelle le script de lecture sur le document désiré
  3. l'ordinateur bascule dans l'environnement de lecture, avec un affichage vertical plein écran
  4. je lis
  5. à la fin de la lecture, je ferme le document
  6. l'ordinateur rebascule automatiquement vers l'environnement traditionnel

On peut constater que si pour le système d'exploitation la rotation ne pose aucun problème, l'ouverture du document dans un mode de lecture adapté dépend uniquement du logiciel : plein écran, réglage de barre d'outil, etc. Ici, je m'appuie sur ma configuration habituelle d'evince et spécifie que je souhaite ouvrir le document en mode « plein écran ». La rotation étant déjà effectuée, l'affichage se fait en conséquence. À la fin de la lecture, je n'ai qu'à fermer le document, et donc quitter evince, pour que le script exécute la dernière instruction et rétablisse l'orientation normale.

Exemple de lecture

eBook - portable stableL'ordinateur portable se cale très bien en position assise, légèrement en arrière, en prenant appui sur les cuisses.


eBook - prise en main Prise en main de l'ordinateur. En raison du poids (1,5kg) et de la chaleur, il est préférable d'avoir une position stable.


eBook - contrôle au touchpad et au clavier Le contrôle de la lecture se fait soit par le touchpad, à hauteur médiane, soit par le pavé directionnel, en bas.


eBook - page plein écran Les pages sont affichées une par une, en plein écran. Tout en haut se trouve une barre d'outil indiquant le numéro de page et qui permet la navigation par section.


eBook - contraste élevé Même dans le noir ou en pleine lumière, l'eBook est lisible. Un écran de qualité avec un angle de vue large permet de ne pas être figé dans une position unique durant la lecture.

Améliorations envisagées

Réaliser l'inversion des axes du touchpad pour permettre une utilisation aisée du pointeur en position verticale. Cela permettra d'utiliser la navigation hypermédia dans les documents, et d'envisager la consultation du web.

Mettre en place différents jeux de configuration pour les applications. Ces jeux de configuration, spécifiques à chaque environnement de travail (eBook, 2e écran vertical, portable en déplacement, etc), permettrait de basculer complètement de façon dynamique d'un environnement, pour avoir des réglages adaptés au niveau des applications.

lundi 8 septembre 2008

Manipuler les images disques de MacOS en ligne de commande

Avant-propos

Pour les utilisateurs venant du monde UNIX, il est indispensable de savoir manipuler en ligne de commande les images disques d'Apple. Il en existe de deux sortes : les traditionnelles (avec leur variations : chiffrées, compressées, etc) et les grossissantes.

Les images disques grossissantes sont des images disques ayant une taille maximale définie à la création. Toutefois, uniquement l'espace utilisé est écrit sur le disque, ce qui permet de limiter l'espace occupé.

Concrètement, une telle image se présente sous la forme d'un répertoire IMAGE.sparsebundle contenant une collection de bandes, un index des données et un fichier de métadonnées sur l'image. Il va de soit qu'il est extrêmement déconseillé d'aller trifouiller au petit bonheur la chance à l'intérieur de ces fichiers.

Il est important de se pencher sur la façon dont les volumes et disques sont attachés sous MacOS. Sans entrer dans les détails, on admettra que les disques physiques sont directement (c'est à dire, sans tampon ou couche tierce) accessibles par les nœuds /dev/rdisk*; ils ont leur contrepartie logique sous la forme /dev/disk*.

Une image disque, étant un volume logique, sera attachée sous la forme /dev/diskXsY, comme si elle était un disque dur. X est alors un identifiant du disque, et chaque partition est associée à un identifiant Y. Chaque partition du disque logique peut alors être montée; le point de montage par défaut étant /Volumes/. Il est bien sur possible d'attacher une image disque sans la monter, afin d'utiliser par exemple des outils travaillant sur les blocs.

Également, MacOS associe à chaque image disque une somme de contrôle permettant de tester son intégrité. Par défaut, des tests (parfois longs) sont effectués. À vous de décider si vous voulez les valider ou bien les ignorer.

La syntaxe des exemples suivants est valable pour MacOS Léopard, et peut-être des versions ultérieures (Jaguar, Panthère et Tigre ont connu des évolutions dans la gestion des images disques; sans parler de Puma et Guépard).

Attacher une image disque

Attache le disque en un nœud /dev/disk* et monte le volume dans /Volumes/. Il est possible d'attacher une image disque sans monter son volume en utilisant l'option -nomount. D'autres options comme -nobrowse ou -private marqueront le volume comme n'étant pas utilisable par les applications (ainsi, le Finder ne l'affichera pas) ou ne notifieront pas le système de l'ajout du disque (pas d'indexation SpotLight).

hdiutil attach IMAGE

Démonter une image disque

Démonte un système de fichiers d'une image disque sans libérer ce dernier. Le nœud /dev/disk* est toujours présent mais le système de fichiers n'est plus monté.

hdiutil umount /Volumes/IMAGE

Démonter et détacher une image disque

Démonter le système de fichiers; le nœud du disque logique est supprimé de /dev/disk*,

hdiutil detach /Volumes/IMAGE

Créer une image disque grossissante

Créer une image disque de taille maximale 500 Go, avec un système de fichier en HFS+ journalisé et sensible à la casse :

  • -size 500G : taille maximale de l'image
  • -fs HFSX : système de fichiers HFS+ sensible à la casse
  • -J : utilisation d'un journal pour le système de fichiers
  • -type SPARSEBUNDLE : le type d'image disque
  • -volname "Sauvegardes" : le nom du volume de l'image disque; il sera utilisé comme nom de point de montage par défaut dans /Volumes/
hdiutil create -size 500G -fs HFSX -fsargs -J -type SPARSEBUNDLE -volname "Sauvegardes" Sauvegardes.sparsebundle

Optimiser la taille de l'image disque

Pour une image disque grossissante, il est possible de demander la récupération de l'espace non-utilisé dans les bandes, pour faire ramener sa taille à celle du volume des données qu'elle contient.

hdiutil compact IMAGE

Formater un volume en HFS

Il est tout à fait possible de formater un volume d'une image disque existante. Il suffit d'attacher l'image disque, et de travailler sur les partitions. On peut utiliser les options suivantes :

  • -J : utilisation d'un journal pour le système de fichiers
  • -s : le système de fichier sera sensible à la casse
  • -v Données" : le nom du volume
newfs_hfs -J -s -v "Données" /dev/diskXXXXX

Connaître les opérations possibles sur les images disques

La commande hdiutil ne se limite pas aux simples opérations de montage et démontage de volumes. Elle permet également de convertir, graver, segmenter et d'une façon générale d'effectuer toutes les opérations possibles sur les images disques. La commande en elle-même intègre une documentation extensive, et son manuel contient des exemples concrets.

hdiutil help et plus précisément hdiutil help COMMAND.

Références

- page 1 de 2